{ =============================================================================== Copyright (©) 2007. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: Versión actual: 1.0.0 Fecha versión actual: =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit uPagosProveedorController; interface uses Classes, SysUtils, uDADataTable, uControllerBase, uIDataModuleRecibosProveedor, uBizPagosProveedor; type IPagosProveedorController = interface(ISujeto) ['{4F907D80-B184-4557-BAB7-9FDA23260E64}'] function Anadir(APagosProveedor: IBizPagosProveedor; Const Fecha: String = ''; Const IgnorarContabilidad: Integer = 0; Const IdSubCuenta: Integer = 0; Const SubCuenta: String = ''; Const AReferenciaRemesa: String = ''): Boolean; procedure Modificar(APagosProveedor: IBizPagosProveedor; Const Fecha: String; Const IgnorarContabilidad: Integer; Const IdSubCuenta: Integer; Const SubCuenta: String = ''; Const AReferenciaRemesa: String = ''); function Eliminar(APagoCliente : IBizPagosProveedor): Boolean; function EliminarTodo(APagossCliente : IBizPagosProveedor): Boolean; end; TPagosProveedorController = class(TSujeto, IPagosProveedorController) protected FDataModule : IDataModuleRecibosProveedor; procedure AsignarDataModule; public constructor Create; virtual; destructor Destroy; override; function Anadir(APagosProveedor: IBizPagosProveedor; Const Fecha: String = ''; Const IgnorarContabilidad: Integer = 0; Const IdSubCuenta: Integer = 0; Const SubCuenta: String = ''; Const AReferenciaRemesa: String = ''): Boolean; procedure Modificar(APagosProveedor: IBizPagosProveedor; Const Fecha: String; Const IgnorarContabilidad: Integer; Const IdSubCuenta: Integer; Const SubCuenta: String = ''; Const AReferenciaRemesa: String = ''); function Eliminar(APagoCliente : IBizPagosProveedor): Boolean; function EliminarTodo(APagosProveedor : IBizPagosProveedor): Boolean; end; implementation uses cxControls, Forms, DB, uEditorRegistryUtils,Dialogs, uFactuGES_App, uBizEjercicios, uDAInterfaces, uDataTableUtils, uDataModuleUsuarios, uDateUtils, uROTypes, DateUtils, Controls, Windows, Variants, schRecibosProveedorClient_Intf, uDataModuleRecibosProveedor; { TPagosProveedorController } function TPagosProveedorController.Anadir(APagosProveedor: IBizPagosProveedor; Const Fecha: String = ''; Const IgnorarContabilidad: Integer = 0; Const IdSubCuenta: Integer = 0; Const SubCuenta: String = ''; Const AReferenciaRemesa: String = ''): Boolean; { Si el pago introducido es un pago y no una devolución devolvemos true en caso de ser una devolución devolvemos false} begin APagosProveedor.Append; if Length(Fecha) = 0 then APagosProveedor.FECHA_PAGO := Date else APagosProveedor.FECHA_PAGO := StrToDate(Fecha); if Length(AReferenciaRemesa) <> 0 then APagosProveedor.TITULAR := AReferenciaRemesa; if (APagosProveedor.DataTable.RecordCount = 0) or ((APagosProveedor.DataTable.RecordCount mod 2) = 0) then APagosProveedor.TIPO := CTE_PAGO else APagosProveedor.TIPO := CTE_DEVOLUCION; APagosProveedor.IGNORAR_CONTABILIDAD := IgnorarContabilidad; APagosProveedor.CUENTA := IntToStr(IdSubCuenta); APagosProveedor.SUBCUENTA := SubCuenta; Result := (APagosProveedor.TIPO = CTE_PAGO); APagosProveedor.Post; end; procedure TPagosProveedorController.AsignarDataModule; begin FDataModule := TDataModuleRecibosProveedor.Create(Nil); end; constructor TPagosProveedorController.Create; begin AsignarDataModule; end; destructor TPagosProveedorController.Destroy; begin FDataModule := NIL; inherited; end; function TPagosProveedorController.Eliminar(APagoCliente: IBizPagosProveedor): Boolean; { En el caso de eliminar un pago del recibo devuelve true, mientras que si lo que se borra es una devolución devuelve false} begin Result := False; if not Assigned(APagoCliente) then raise Exception.Create ('IBizPagosProveedor no asignado'); ShowHourglassCursor; try if (APagoCliente.State in dsEditModes) then APagoCliente.Cancel; APagoCliente.Last; Result := (APagoCliente.TIPO = CTE_PAGO); if APagoCliente.ASIENTO_PUNTEADO > 0 then raise Exception.Create('El asiento asociado al pago esta punteado por lo que no puede ser borrado.'); if APagoCliente.ESTADO_EJERCICIO = CTE_CERRADO then raise Exception.Create('El asiento asociado al pago tiene el ejercicio cerrado por lo que no puede ser borrado.'); APagoCliente.Delete; //Todo lo haremos en memoria ya que los pagos no tienen entidad propia //APagosProveedor.DataTable.ApplyUpdates; finally HideHourglassCursor; end; end; function TPagosProveedorController.EliminarTodo(APagosProveedor: IBizPagosProveedor): Boolean; begin if Assigned(APagosProveedor) then begin if not APagosProveedor.DataTable.Active then APagosProveedor.DataTable.Active := True; APagosProveedor.DataTable.ClearRows; //Todo lo haremos en memoria ya que los pagos no tienen entidad propia //APagosProveedor.DataTable.ApplyUpdates; end; end; procedure TPagosProveedorController.Modificar(APagosProveedor: IBizPagosProveedor; const Fecha: String; Const IgnorarContabilidad: Integer; Const IdSubCuenta: Integer; Const SubCuenta: String = ''; Const AReferenciaRemesa: String = ''); begin APagosProveedor.DataTable.Edit; APagosProveedor.FECHA_PAGO := StrToDate(Fecha); if Length(AReferenciaRemesa) <> 0 then APagosProveedor.TITULAR := AReferenciaRemesa; APagosProveedor.IGNORAR_CONTABILIDAD := IgnorarContabilidad; APagosProveedor.CUENTA := IntToStr(IdSubCuenta); APagosProveedor.SUBCUENTA := SubCuenta; APagosProveedor.DataTable.Post; end; end.