{ =============================================================================== 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 = ''): Boolean; procedure Modificar(APagosProveedor: IBizPagosProveedor; Const Fecha: String); function Eliminar(APagoCliente : IBizPagosProveedor): Boolean; function EliminarTodo(APagossCliente : IBizPagosProveedor): Boolean; end; TPagosProveedorController = class(TSujeto, IPagosProveedorController) protected FDataModule : IDataModuleRecibosProveedor; procedure AsignarDataModule; public constructor Create; override; destructor Destroy; override; function Anadir(APagosProveedor: IBizPagosProveedor; Const Fecha: String = ''): Boolean; procedure Modificar(APagosProveedor: IBizPagosProveedor; Const Fecha: String); function Eliminar(APagoCliente : IBizPagosProveedor): Boolean; function EliminarTodo(APagosProveedor : IBizPagosProveedor): Boolean; end; implementation uses cxControls, DB, uEditorRegistryUtils,Dialogs, uDAInterfaces, uDataTableUtils, uDataModuleUsuarios, uDateUtils, uROTypes, DateUtils, Controls, Windows, Variants, schRecibosProveedorClient_Intf, uDataModuleRecibosProveedor; { TPagosProveedorController } function TPagosProveedorController.Anadir(APagosProveedor: IBizPagosProveedor; Const Fecha: 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 (APagosProveedor.DataTable.RecordCount = 0) or ((APagosProveedor.DataTable.RecordCount mod 2) = 0) then APagosProveedor.TIPO := CTE_PAGO else APagosProveedor.TIPO := CTE_DEVOLUCION; 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 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); 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 Result := False; 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); begin APagosProveedor.DataTable.Edit; APagosProveedor.FECHA_PAGO := StrToDate(Fecha); APagosProveedor.DataTable.Post; end; end.