git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES/trunk@12 9a1d36f3-7752-2d40-8ccb-50eb49674c68
324 lines
8.6 KiB
ObjectPascal
324 lines
8.6 KiB
ObjectPascal
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.
|
||
|