This repository has been archived on 2024-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
Tecsitel_FactuGES/BaseDatos/TablaAlbaranesProveedor.pas

610 lines
20 KiB
ObjectPascal
Raw Normal View History

{
===============================================================================
Copyright (<EFBFBD>) 2001. Rodax Software.
===============================================================================
Los contenidos de este fichero son propiedad de Rodax Software titular del
copyright. Este fichero s<EFBFBD>lo podr<EFBFBD> ser copiado, distribuido y utilizado,
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
acuerdo con los t<EFBFBD>rminos y condiciones establecidas en el acuerdo/contrato
bajo el que se suministra.
-----------------------------------------------------------------------------
Web: www.rodax-software.com
===============================================================================
Fecha primera versi<EFBFBD>n: 04-10-2004
Versi<EFBFBD>n actual: 1.0.0
Fecha versi<EFBFBD>n actual: 04-10-2004
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit TablaAlbaranesProveedor;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
BaseDatos, Ibdatabase, dxDBGrid, Contadores;
type
TDatosAlbaranProveedor = class(TPersistent)
public
CodigoEmpresa : integer;
Codigo : string;
FechaAlta : string;
Usuario : string;
CodigoProveedor : string;
NIFCIF : string;
Nombre : string;
Calle : string;
Numero : string;
Piso : string;
CodigoPostal : string;
Poblacion : string;
Provincia : string;
PersonaContacto : string;
Telefono : string;
Fax : string;
BaseImponible : string;
Descuento : string;
IVA : string;
ImporteTotal : string;
Descripcion : string;
end;
TdmTablaAlbaranesProveedor = class(TDataModule)
private
procedure IniciarSQLAlbaran;
procedure IniciarSQLDetalles;
procedure IniciarSQLGrids;
public
sqlInsertarAlbaran : TStrings;
sqlModificarAlbaran : TStrings;
sqlConsultarAlbaran : TStrings;
sqlEliminarAlbaran : TStrings;
sqlConsultarGridAlbaranes : TStrings;
sqlConsultarGridAlbaranesPro : TStrings;
sqlInsertarDetalles : TStrings;
sqlModificarDetalles : TStrings;
sqlConsultarDetalles : TStrings;
sqlEliminarDetalles : TStrings;
sqlConsultarGridDetalles : TStrings;
//Metodos que llamaran a contador
function DarNuevoCodigo : String;
function IncrementarCodigo: boolean;
function InsertarContador: boolean;
function ValidarCodigo(Codigo : String) : Boolean;
function FormatearCodigo(Codigo : String) : String;
function DarDatosAlbaran(Albaran : TDatosAlbaranProveedor): Boolean;
function ExisteCodigo(CodigoEmpresa: Integer; Codigo : String) : Boolean;
procedure InicializarGridDetalles(var Grid: TdxDBGrid);
procedure InicializarGridAlbaranes(var Grid: TdxDBGrid);
procedure InicializarTablaAlbaranes(Tabla: TPTabla);
procedure InicializarTablaDetalles(Tabla: TPTabla);
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
function DarListaAnos(CodigoEmpresa: Integer): TStringList;
end;
var
dmTablaAlbaranesProveedor: TdmTablaAlbaranesProveedor;
implementation
{$R *.DFM}
uses
IBSQL, Mensajes, StrFunc, IB, DB, Excepciones,
TablaUnidadesMedida, dxDBCtrl, dxDBTLCL, IBCustomDataSet, dxTL, Constantes,
Literales, RdxGestorContadores;
{ TdmTablaAlbaranesCliente }
constructor TdmTablaAlbaranesProveedor.Create(AOwner: TComponent);
begin
inherited;
{ Cabecera }
sqlInsertarAlbaran := TStringList.Create;
sqlModificarAlbaran := TStringList.Create;
sqlConsultarAlbaran := TStringList.Create;
sqlEliminarAlbaran := TStringList.Create;
{ Detalles }
sqlInsertarDetalles := TStringList.Create;
sqlModificarDetalles := TStringList.Create;
sqlConsultarDetalles := TStringList.Create;
sqlEliminarDetalles := TStringList.Create;
sqlConsultarGridDetalles := TStringList.Create;
{ Grids }
sqlConsultarGridAlbaranes := TStringList.Create;
sqlConsultarGridAlbaranesPro := TStringList.Create;
IniciarSQLAlbaran;
IniciarSQLDetalles;
IniciarSQLGrids;
end;
destructor TdmTablaAlbaranesProveedor.Destroy;
begin
{ Cabecera }
sqlInsertarAlbaran.Free;
sqlModificarAlbaran.Free;
sqlConsultarAlbaran.Free;
sqlEliminarAlbaran.Free;
{ Detalles }
sqlInsertarDetalles.Free;
sqlModificarDetalles.Free;
sqlConsultarDetalles.Free;
sqlEliminarDetalles.Free;
sqlConsultarGridDetalles.Free;
{ Grids }
sqlConsultarGridAlbaranes.Free;
sqlConsultarGridAlbaranesPro.Free;
inherited;
end;
function TdmTablaAlbaranesProveedor.DarDatosAlbaran(
Albaran: TDatosAlbaranProveedor): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
if EsCadenaVacia(Albaran.Codigo) then
Exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select * from ALBARANESPROVEEDOR ');
SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
ParamByName('CODIGOEMPRESA').AsInteger := Albaran.CodigoEmpresa;
ParamByName('CODIGO').AsString := Albaran.Codigo;
try
Prepare;
ExecQuery;
//Compruebo que el codigo de albar<61>n existe. Si no existe, devuelvo false
if (RecordCount > 0) then
begin
with Albaran do
begin
FechaAlta := FieldByName('FECHAALTA').AsString;
Usuario:= FieldByName('USUARIO').AsString;
CodigoProveedor := FieldByName('CODIGOPROVEEDOR').AsString;
NifCif := FieldByName('NIFCIF').AsString;
Nombre := FieldByName('NOMBRE').AsString;
Calle := FieldByName('CALLE').AsString;
Numero := FieldByName('NUMERO').AsString;
Piso := FieldByName('PISO').AsString;
CodigoPostal := FieldByName('CODIGOPOSTAL').AsString;
Poblacion := FieldByName('POBLACION').AsString;
Provincia := FieldByName('PROVINCIA').AsString;
PersonaContacto := FieldByName('PERSONACONTACTO').AsString;
Telefono := FieldByName('TELEFONO').AsString;
Fax := FieldByName('FAX').AsString;
BaseImponible := FieldByName('BASEIMPONIBLE').AsString;
Descuento := FieldByName('DESCUENTO').AsString;
IVA := FieldByName('IVA').AsString;
ImporteTotal := FieldByName('IMPORTETOTAL').AsString;
Descripcion := FieldByName('DESCRIPCION').AsString;
Result := True;
end;
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaAlbaranesProveedor.DarNuevoCodigo: String;
begin
Result := GestorContadores.DarNuevoCodigo(contAlbaranesProveedor);
end;
function TdmTablaAlbaranesProveedor.ExisteCodigo(CodigoEmpresa: Integer; Codigo: String): Boolean;
var
oSQL : TIBSQL;
Contador : String;
begin
Result := False;
oSQL := TIBSQL.Create(Self);
oSQL.Database := dmBaseDatos.BD;
oSQL.Transaction := dmBaseDatos.Transaccion;
oSQL.SQL.Add('select CODIGO ');
oSQL.SQL.Add('from ALBARANESPROVEEDOR ');
oSQL.SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
try
with oSQL do
begin
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
ParamByName('CODIGO').AsString := Codigo;
Prepare;
ExecQuery;
Contador := Fields[0].AsString;
Result := (Codigo = Contador);
end;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
oSQL.Close;
oSQL.Transaction := NIL;
oSQL.Free;
end;
function TdmTablaAlbaranesProveedor.FormatearCodigo(Codigo: String): String;
begin
Result := GestorContadores.FormatearCodigo(contAlbaranesProveedor, Codigo);
end;
function TdmTablaAlbaranesProveedor.IncrementarCodigo: boolean;
begin
Result := GestorContadores.IncrementarValor(contAlbaranesProveedor);
end;
procedure TdmTablaAlbaranesProveedor.InicializarGridAlbaranes(var Grid: TdxDBGrid);
var
Columna : TdxDBTreeListColumn;
begin
with Grid do begin
DestroyColumns;
ShowSummaryFooter := True;
{Columna CODIGO}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'CODIGO';
Columna.Caption := 'C<>digo';
Columna.Width := tamColCodigo;
Columna.Sorted := csDown;
Columna.SummaryFooterType := cstCount;
Columna.SummaryFooterFormat := 'Total: 0 albaranes';
{Columna ANO}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'ANO';
Columna.Caption := 'A<>o';
Columna.Width := tamColFecha;
Columna.Visible := False;
{Columna FECHAALTA}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'FECHAALTA';
Columna.Caption := 'Fecha alta';
Columna.Width := tamColFecha;
{Columna CODIGOPROVEEDOR}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'CODIGOPROVEEDOR';
Columna.Caption := 'C<>d. proveedor';
Columna.Width := tamColCodigo;
{Columna NIFCIF}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'NIFCIF';
Columna.Caption := 'NIF/CIF';
Columna.Width := tamColNIFCIF;
{Columna NOMBRE}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'NOMBRE';
Columna.Caption := 'Nombre';
Columna.Width := tamColNombre;
{Columna IMPORTETOTAL}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'IMPORTETOTAL';
Columna.Caption := 'Importe total';
Columna.Width := tamColPrecio;
end;
end;
procedure TdmTablaAlbaranesProveedor.InicializarGridDetalles(var Grid: TdxDBGrid);
var
Columna : TdxDBTreeListColumn;
begin
with Grid do begin
DestroyColumns;
{Columna CODIGOALBARAN}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.Visible := False;
Columna.FieldName := 'CODIGOALBARAN';
{Columna NUMCONCEPTO}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.Visible := False;
Columna.FieldName := 'NUMCONCEPTO';
{Columna CODIGOARTICULO}
Columna := CreateColumn(TdxDBTreeListButtonColumn);
Columna.FieldName := 'CODIGOARTICULO';
Columna.Caption := 'C<>d. material';
Columna.Width := tamColCodigo;
{Columna DESCRIPCION}
Columna := CreateColumn(TdxDBTreeListButtonColumn);
Columna.FieldName := 'DESCRIPCION';
Columna.Caption := 'Descripci<63>n';
Columna.Width := tamColDescripcion;
{Columna CANTIDAD}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'CANTIDAD';
Columna.Caption := 'Cantidad';
Columna.Width := tamColCantidad;
{Columna UNIDADESMEDIDA}
Columna := CreateColumn(TdxDBTreeListPickColumn);
Columna.FieldName := 'UNIDADESMEDIDA';
Columna.Caption := 'Unid. medida';
(Columna as TdxDBTreeListPickColumn).Items := dmTablaUnidadesMedida.DarUnidadesMedida;
Columna.Width := tamColUnidadesMedida;
{Columna PRECIOUNIDAD}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'PRECIOUNIDAD';
Columna.Caption := 'Precio unidad';
Columna.Width := tamColPrecio;
{Columna TOTAL}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'TOTAL';
Columna.ReadOnly := True;
Columna.Caption := 'Precio total';
Columna.Width := tamColPrecio;
end;
end;
procedure TdmTablaAlbaranesProveedor.InicializarTablaAlbaranes(
Tabla: TPTabla);
begin
with Tabla^.Fields do
begin
if FindField('FECHAALTA') <> NIL then
with (FieldByName('FECHAALTA') as TDateField) do begin
EditMask := MASK_FECHA;
end;
if FindField('BASEIMPONIBLE') <> NIL then
//with (FieldByName('BASEIMPONIBLE') as TFloatField) do begin
with (FieldByName('BASEIMPONIBLE') as TIBBCDField) do begin
DisplayFormat := DISPLAY_EUROS2;
EditFormat := EDIT_EUROS2;
end;
if FindField('DESCUENTO') <> NIL then
with (FieldByName('DESCUENTO') as TFloatField) do begin
DisplayFormat := DISPLAY_DTO;
EditFormat := EDIT_DTO;
end;
if FindField('IMPORTEDESCUENTO') <> NIL then
//with (FieldByName('IMPORTEDESCUENTO') as TFloatField) do begin
with (FieldByName('IMPORTEDESCUENTO') as TIBBCDField) do begin
DisplayFormat := DISPLAY_EUROS2;
EditFormat := EDIT_EUROS2;
end;
if FindField('IVA') <> NIL then
with (FieldByName('IVA') as TFloatField) do begin
DisplayFormat := DISPLAY_DTO;
EditFormat := EDIT_DTO;
end;
if FindField('IMPORTEIVA') <> NIL then
//with (FieldByName('IMPORTEIVA') as TFloatField) do begin
with (FieldByName('IMPORTEIVA') as TIBBCDField) do begin
DisplayFormat := DISPLAY_EUROS2;
EditFormat := EDIT_EUROS2;
end;
if FindField('IMPORTETOTAL') <> NIL then
//with (FieldByName('IMPORTETOTAL') as TFloatField) do begin
with (FieldByName('IMPORTETOTAL') as TIBBCDField) do begin
DisplayFormat := DISPLAY_EUROS2;
EditFormat := EDIT_EUROS2;
end;
end;
end;
procedure TdmTablaAlbaranesProveedor.InicializarTablaDetalles(
Tabla: TPTabla);
begin
with Tabla^.Fields do
begin
with (FieldByName('PRECIOUNIDAD') as TFloatField) do begin
DisplayFormat := DISPLAY_EUROS2;
EditFormat := EDIT_EUROS2;
end;
with (FieldByName('TOTAL') as TFloatField) do begin
DisplayFormat := DISPLAY_EUROS2;
EditFormat := EDIT_EUROS2;
end;
end;
end;
procedure TdmTablaAlbaranesProveedor.IniciarSQLAlbaran;
begin
with sqlInsertarAlbaran do
begin
Add('insert into ALBARANESPROVEEDOR ');
Add('(CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, DESCRIPCION, ');
Add('CODIGOPROVEEDOR, NIFCIF, NOMBRE, CALLE, NUMERO, PISO, CODIGOPOSTAL, ');
Add('POBLACION, PROVINCIA, PERSONACONTACTO, TELEFONO, FAX, ');
Add('BASEIMPONIBLE, DESCUENTO, IVA, IMPORTETOTAL, IMPORTEDESCUENTO, ');
Add('IMPORTEIVA)' );
Add('values (:CODIGOEMPRESA, :CODIGO, :FECHAALTA, :USUARIO, ');
Add(':DESCRIPCION, :CODIGOPROVEEDOR, :NIFCIF, :NOMBRE, :CALLE, :NUMERO, ');
Add(':PISO, :CODIGOPOSTAL, :POBLACION, :PROVINCIA, ');
Add(':PERSONACONTACTO, :TELEFONO, :FAX, :BASEIMPONIBLE, ');
Add(':DESCUENTO, :IVA, :IMPORTETOTAL, :IMPORTEDESCUENTO, :IMPORTEIVA)');
end;
with sqlModificarAlbaran do
begin
Add('update ALBARANESPROVEEDOR set ');
Add('FECHAALTA = :FECHAALTA, ');
Add('USUARIO = :USUARIO, ');
Add('DESCRIPCION = :DESCRIPCION, ');
Add('CODIGOPROVEEDOR = :CODIGOPROVEEDOR, ');
Add('NIFCIF = :NIFCIF, ');
Add('NOMBRE = :NOMBRE, ');
Add('CALLE = :CALLE, ');
Add('NUMERO = :NUMERO, ');
Add('PISO = :PISO, ');
Add('CODIGOPOSTAL = :CODIGOPOSTAL, ');
Add('POBLACION = :POBLACION, ');
Add('PROVINCIA = :PROVINCIA, ');
Add('PERSONACONTACTO = :PERSONACONTACTO, ');
Add('TELEFONO = :TELEFONO, ');
Add('FAX = :FAX, ');
Add('BASEIMPONIBLE = :BASEIMPONIBLE, ');
Add('DESCUENTO = :DESCUENTO, ');
Add('IMPORTEDESCUENTO = :IMPORTEDESCUENTO, ');
Add('IVA = :IVA, ');
Add('IMPORTEIVA = :IMPORTEIVA, ');
Add('IMPORTETOTAL = :IMPORTETOTAL ');
Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
end;
with sqlEliminarAlbaran do
begin
Add('delete from ALBARANESPROVEEDOR ');
Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
end;
with sqlConsultarAlbaran do
begin
Add('select * from ALBARANESPROVEEDOR ');
Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
end;
end;
procedure TdmTablaAlbaranesProveedor.IniciarSQLDetalles;
begin
with sqlInsertarDetalles do
begin
Add('insert into DETALLESALBARANESPROVEEDOR ');
Add('(CODIGOEMPRESA, CODIGOALBARAN, NUMCONCEPTO, CODIGOARTICULO, DESCRIPCION, ');
Add('CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, TOTAL) ');
Add('values (:CODIGOEMPRESA, :CODIGOALBARAN, :NUMCONCEPTO, :CODIGOARTICULO, ');
Add(':DESCRIPCION, :CANTIDAD, :UNIDADESMEDIDA, :PRECIOUNIDAD, :TOTAL)');
end;
with sqlModificarDetalles do
begin
Add('update DETALLESALBARANESPROVEEDOR set ');
Add('NUMCONCEPTO = :NUMCONCEPTO, ');
Add('CODIGOARTICULO = :CODIGOARTICULO, ');
Add('DESCRIPCION = :DESCRIPCION, ');
Add('CANTIDAD = :CANTIDAD, ');
Add('UNIDADESMEDIDA = :UNIDADESMEDIDA, ');
Add('PRECIOUNIDAD = :PRECIOUNIDAD, ');
Add('TOTAL = :TOTAL ');
Add('where (CODIGOALBARAN = :CODIGOALBARAN) ');
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
Add('and (NUMCONCEPTO = :NUMCONCEPTO)');
end;
with sqlEliminarDetalles do
begin
Add('delete from DETALLESALBARANESPROVEEDOR ');
Add('where (CODIGOALBARAN = :CODIGOALBARAN) ');
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
Add('and (NUMCONCEPTO = :NUMCONCEPTO)');
end;
with sqlConsultarDetalles do
begin
Add('select CODIGOALBARAN, NUMCONCEPTO, CODIGOARTICULO, ');
Add('DESCRIPCION, CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, TOTAL ');
Add('from DETALLESALBARANESPROVEEDOR ');
Add('where (CODIGOALBARAN = :CODIGOALBARAN) ');
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
Add('and (NUMCONCEPTO = :NUMCONCEPTO)');
end;
end;
procedure TdmTablaAlbaranesProveedor.IniciarSQLGrids;
begin
with sqlConsultarGridAlbaranes do
begin
Add('select CODIGO, FECHAALTA, CODIGOPROVEEDOR, NIFCIF, ');
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
Add('NOMBRE, IMPORTETOTAL');
Add('from ALBARANESPROVEEDOR ');
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) ');
Add('order by CODIGO');
end;
with sqlConsultarGridAlbaranesPro do
begin
Add('select CODIGO, FECHAALTA, CODIGOPROVEEDOR, NIFCIF, ');
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
Add('NOMBRE, IMPORTETOTAL');
Add('from ALBARANESPROVEEDOR ');
Add('where (CODIGOPROVEEDOR = :CODIGOPROVEEDOR) ');
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
Add('order by CODIGO');
end;
with sqlConsultarGridDetalles do
begin
Add('select CODIGOEMPRESA, CODIGOALBARAN, NUMCONCEPTO, ');
Add('CODIGOARTICULO, DESCRIPCION, ');
Add('CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, TOTAL ');
Add('from DETALLESALBARANESPROVEEDOR ');
Add('where (CODIGOALBARAN = :CODIGOALBARAN) ');
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
Add('order by NUMCONCEPTO');
end;
end;
function TdmTablaAlbaranesProveedor.InsertarContador: boolean;
begin
Result := GestorContadores.InsertarContador(contAlbaranesProveedor);
end;
function TdmTablaAlbaranesProveedor.ValidarCodigo(Codigo: String): Boolean;
begin
Result := GestorContadores.ValidarCodigo(contAlbaranesProveedor, Codigo);
end;
function TdmTablaAlbaranesProveedor.DarListaAnos(CodigoEmpresa: Integer): TStringList;
var
oSQL : TIBSQL;
Lista : TStringList;
begin
Lista := TStringList.Create;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select distinct (EXTRACT (YEAR FROM FECHAALTA)) ANO ');
SQL.Add('from ALBARANESPROVEEDOR ');
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) ');
SQL.Add('order by FECHAALTA desc');
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
try
Prepare;
ExecQuery;
Lista.Add(CTE_TODOS);
while not EOF do begin
Lista.Add(Fields[0].AsString);
Next;
end;
result := Lista;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
end.