This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
AlonsoYSal_FactuGES/Modulos/Pagos/Cliente/uDataModulePagos.pas

324 lines
8.6 KiB
ObjectPascal
Raw Normal View History

unit uDataModulePagos;
interface
uses {vcl:} SysUtils, Classes, DB, DBClient,
{RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter,
uROServiceComponent, uRORemoteService, uROClient, uROBinMessage,
uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable,
uBizPagos, uBizContacto;
type
TdmPagos = class(TDAClientDataModule)
DABINAdapter: TDABINAdapter;
RORemoteService: TRORemoteService;
tbl_Pagos: TDACDSDataTable;
ds_Pagos: TDADataSource;
tbl_ListaAnosPagos: TDACDSDataTable;
ds_ListaAnosPagos: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject);
private
function GetPagos(CodigoCategoria : Integer): IBizPagos;
public
function GetNextAutoinc : integer;
function GetItems: IBizPagos;
function GetPagosProveedor : IBizPagosProveedor;
function GetPagosCliente : IBizPagosCliente;
function GetPagoProveedor(Codigo: Integer) : IBizPagosProveedor;
function GetPagoCliente(Codigo: Integer) : IBizPagosCliente;
procedure Preview(Const Codigo: Integer);
procedure Print(Const Codigo: Integer);
function PuedoEliminarAlmacen(Codigo : Integer) : Boolean;
function AnadirPagoCliente(Cliente: IBizCliente; CodigoPresupuesto: Integer;
Descripcion: Variant; Importe: Currency; var FechaPago: TDateTime): Boolean;
function DarListaAnosPagos: TStringList;
procedure FiltrarAno(APagos: IBizPagos; AWhereDataTable: String; const Ano: String);
end;
var
dmPagos: TdmPagos;
implementation
{$R *.DFM}
uses
Controls, cxControls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf,
uDataTableUtils, uROTypes, uEditorPreview, Dialogs, uDataModuleBase,
schPagosClient_Intf, uDataModuleMontajes, uBizMontajes;
const
MAX_RECORDS = 100;
function TdmPagos.AnadirPagoCliente(Cliente: IBizCliente; CodigoPresupuesto: Integer;
Descripcion: Variant; Importe: Currency; var FechaPago: TDateTime): Boolean;
var
APagoCliente: IBizPagosCliente;
ReferenciaMontaje: String;
begin
Result := False;
APagoCliente := GetPagoCliente(-1);
APagoCliente.DataTable.Active := True;
APagoCliente.Insert;
APagoCliente.Contacto := Cliente;
APagoCliente.DESCRIPCION := 'Cobro albar<61>n ' + Descripcion;
APagoCliente.IMPORTE := Importe;
if (APagoCliente.Show = mrOk) then
begin
FechaPago := APagoCliente.FECHAPAGO;
ReferenciaMontaje := dmMontajes.CambiarSituacion(CodigoPresupuesto, sitPagado);
Showmessage('El montaje ' + ReferenciaMontaje + ', ha cambiado su estado a pagado y terminado');
Result := True;
end;
APagoCliente := Nil;
end;
procedure TdmPagos.DAClientDataModuleCreate(Sender: TObject);
begin
RORemoteService.Channel := dmBase.Channel;
RORemoteService.Message := dmBase.Message;
end;
function TdmPagos.DarListaAnosPagos: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosPagos do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
procedure TdmPagos.FiltrarAno(APagos: IBizPagos; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
APagos.DataTable.Where.Clear;
APagos.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar los presupuestos actuales por a<>os
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with APagos.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_PagosFECHAPAGO, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_PagosFECHAPAGO, cLessOrEqual, FechaFin);
end;
end;
end;
function TdmPagos.GetItems: IBizPagos;
var
dtPagos: TDACDSDataTable;
ACursor: TCursor;
begin
ACursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
try
dtPagos := TDACDSDataTable.Create(NIL);
CloneDataTable(tbl_Pagos, dtPagos);
dtPagos.BusinessRulesID := 'BizPagos';
Result := (dtPagos as IBizPagos);
finally
Screen.Cursor := ACursor;
end;
end;
function TdmPagos.GetNextAutoinc: integer;
begin
Result := (RORemoteService as IsrvPagos).GetNextAutoinc;
end;
function TdmPagos.GetPagoCliente(Codigo: Integer): IBizPagosCliente;
var
APagoCliente: IBizPagosCliente;
begin
APagoCliente := GetPagosCliente;
with APagoCliente.DataTable.Where do
begin
if not Empty then
AddOperator(opAND);
OpenBraket;
AddText('PAGOS.' + fld_PagosCODIGO + ' = ' + IntToStr(Codigo), False);
CloseBraket;
end;
Result := APagoCliente;
end;
function TdmPagos.GetPagoProveedor(Codigo: Integer): IBizPagosProveedor;
var
APagoProveedor: IBizPagosProveedor;
begin
APagoProveedor := GetPagosProveedor;
with APagoProveedor.DataTable.Where do
begin
if not Empty then
AddOperator(opAND);
OpenBraket;
AddText('PAGOS.' + fld_PagosCODIGO + ' = ' + IntToStr(Codigo), False);
CloseBraket;
end;
Result := APagoProveedor;
end;
function TdmPagos.GetPagos(CodigoCategoria: Integer): IBizPagos;
var
dtPagos: TDACDSDataTable;
ACursor: TCursor;
begin
ACursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
try
dtPagos := TDACDSDataTable.Create(NIL);
CloneDataTable(tbl_Pagos, dtPagos);
with dtPagos do
begin
case CodigoCategoria of
CLIENTE : BusinessRulesID := BIZ_PAGOSCLIENTE;
PROVEEDOR : BusinessRulesID := BIZ_PAGOSPROVEEDOR;
end;
Where.Clear;
Where.AddText('CC.' + fld_PagosCODIGOCATEGORIA + '=' + IntToStr(CODIGOCATEGORIA));
end;
Result := (dtPagos as IBizPagos);
finally
Screen.Cursor := ACursor;
end;
end;
function TdmPagos.GetPagosCliente: IBizPagosCliente;
var
APagosCliente: IBizPagosCliente;
begin
APagosCliente := (GetPagos(CLIENTE) as IBizPagosCliente);
Result := APagosCliente;
end;
function TdmPagos.GetPagosProveedor: IBizPagosProveedor;
var
APagosProveedor: IBizPagosProveedor;
begin
APagosProveedor := (GetPagos(PROVEEDOR) as IBizPagosProveedor);
Result := APagosProveedor;
end;
procedure TdmPagos.Preview(Const Codigo: Integer);
var
AStream: TMemoryStream;
AEditorPreview : TfEditorPreview;
begin
AStream := Binary.Create;
AEditorPreview := TfEditorPreview.Create(Application);
try
AStream := (RemoteService as ISrvPagos).GenerateReport(Codigo);
AEditorPreview.Report.PreviewPages.LoadFromStream(AStream);
AEditorPreview.ShowModal;
finally
AEditorPreview.Release;
AStream.Free;
end;
end;
{function TdmAlmacenes.GetCliente(Codigo: Integer): IBizCliente;
var
// dtContactos: TDACDSDataTable;
// dtCategorias: TDACDSDataTable;
// ACursor: TCursor;
begin
{ ACursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
try
dtContactos := TDACDSDataTable.Create(NIL);
CloneDataTable(tbl_Contactos, dtContactos);
dtContactos.BusinessRulesID := 'BizCliente';
dtCategorias := TDACDSDataTable.Create(NIL);
CloneDataTable(tbl_CategoriasContacto, dtCategorias);
dtCategorias.BusinessRulesID := 'BizCategoria';
(dtContactos as IBizContacto).Categorias := (dtCategorias as IBizCategoriasContacto);
Result := (dtContactos as IBizCliente);
GetCliente(Result, Codigo);
finally
Screen.Cursor := ACursor;
end;
end;
}
{function TdmPagos.GetItem(Codigo: Integer): IBizAlmacen;
var
AAlmacen: IBizAlmacen;
begin
AAlmacen := GetItems;
with AAlmacen.DataTable do
begin
if Active then Active := False;
Where.Clear;
Where.AddCondition(fld_ALMACENESCODIGO, cEqual, Codigo);
Active := True;
end;
Result := AAlmacen;
end;
}
procedure TdmPagos.Print(Const Codigo: Integer);
var
AStream: TMemoryStream;
AEditorPreview : TfEditorPreview;
begin
AStream := Binary.Create;
AEditorPreview := TfEditorPreview.Create(Application);
try
AStream := (RemoteService as ISrvPagos).GenerateReport(Codigo);
AEditorPreview.Report.PreviewPages.LoadFromStream(AStream);
AEditorPreview.Print;
finally
AEditorPreview.Release;
AStream.Free;
end;
end;
function TdmPagos.PuedoEliminarAlmacen(Codigo: Integer): Boolean;
begin
// Result := (RORemoteService as IsrvAlmacenes).PuedoEliminarAlmacen(Codigo);
end;
initialization
dmPagos := TdmPagos.Create(nil);
finalization
FreeAndNil(dmPagos);
end.