{ =============================================================================== 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 uBizRecibosProveedor; interface uses uDAInterfaces, uDADataTable, uDBSelectionListUtils, schRecibosProveedorClient_Intf, uBizPagosProveedor, uBizRecibosProvCompensados, uBizContactos; const BIZ_CLIENT_IBIZRECIBOSPROVEEDOR = 'Client.IBizRecibosProveedor'; CTE_PENDIENTE = 'PENDIENTE'; CTE_PAGADO = 'PAGADO'; CTE_DEVUELTO = 'DEVUELTO'; type IBizRecibosProveedor = interface(IRecibosProveedor) ['{FEE753DF-0471-4754-A86C-58BF615929CF}'] function EsNuevo : Boolean; function SinFactura : Boolean; // En Acana se puede cambiar el cliente por que un recibo puede corresponder o no a una factura procedure SetProveedor(AValue : IBizProveedor); function GetProveedor : IBizProveedor; property Proveedor : IBizProveedor read GetProveedor write SetProveedor; // Esta propidad es para que el controlador pueda acceder directamente // a la propiedad Proveedor procedure _SetProveedor(AValue : IBizProveedor); function _GetProveedor : IBizProveedor; property _Proveedor : IBizProveedor read _GetProveedor write _SetProveedor; procedure SetPagos(AValue : IBizPagosProveedor); function GetPagos : IBizPagosProveedor; property Pagos : IBizPagosProveedor read GetPagos write SetPagos; function GetRecibosCompensados: IBizRecibosCompensadosProv; procedure SetRecibosCompensados(const Value: IBizRecibosCompensadosProv); property RecibosCompensados: IBizRecibosCompensadosProv read GetRecibosCompensados write SetRecibosCompensados; end; TBizRecibosProveedor = class(TRecibosProveedorDataTableRules, IBizRecibosProveedor, ISeleccionable) protected FPagos : IBizPagosProveedor; FPagosLink : TDADataSource; FRecibosCompensados: IBizRecibosCompensadosProv; FRecibosCompensadosLink : TDADataSource; FProveedor : IBizProveedor; FSeleccionableInterface : ISeleccionable; // En Acana se puede cambiar el cliente por que un recibo puede corresponder o no a una factura procedure SetProveedor(AValue : IBizProveedor); function GetProveedor : IBizProveedor; // Esta propidad es para que el controlador pueda acceder directamente // a la propiedad Proveedor procedure _SetProveedor(AValue : IBizProveedor); function _GetProveedor : IBizProveedor; procedure SetPagos(AValue : IBizPagosProveedor); function GetPagos : IBizPagosProveedor; procedure OnNewRecord(Sender: TDADataTable); override; function GetRecibosCompensados: IBizRecibosCompensadosProv; procedure SetRecibosCompensados(const Value: IBizRecibosCompensadosProv); function GetSITUACIONValue: String; override; procedure SetID_REMESAValue(const aValue: Integer); override; public property Proveedor : IBizProveedor read GetProveedor write SetProveedor; property _Proveedor : IBizProveedor read _GetProveedor write _SetProveedor; property RecibosCompensados: IBizRecibosCompensadosProv read GetRecibosCompensados write SetRecibosCompensados; property Pagos : IBizPagosProveedor read GetPagos write SetPagos; property SeleccionableInterface : ISeleccionable read FSeleccionableInterface write FSeleccionableInterface implements ISeleccionable; procedure IniciarValoresIBizRecibosProveedorNuevo; function EsNuevo : Boolean; function SinFactura : Boolean; constructor Create(aDataTable: TDADataTable); override; destructor Destroy; override; end; implementation { TBizRecibosProveedor } uses SysUtils, DB, uDataTableUtils, schContactosClient_Intf, uFactuGES_App, uBizEmpresasTiendas; function TBizRecibosProveedor.GetProveedor: IBizProveedor; begin Result := FProveedor; end; function TBizRecibosProveedor.GetRecibosCompensados: IBizRecibosCompensadosProv; begin Result := FRecibosCompensados; end; function TBizRecibosProveedor.GetSITUACIONValue: String; begin result := Trim(DataTable.Fields[idx_RecibosProveedorSITUACION].AsString); end; function TBizRecibosProveedor.GetPagos: IBizPagosProveedor; begin Result := FPagos; end; procedure TBizRecibosProveedor.SetID_REMESAValue(const aValue: Integer); begin if (aValue = 0) then SetFieldNull(DataTable, fld_RecibosProveedorID_REMESA) else inherited; end; procedure TBizRecibosProveedor.SetPagos(AValue: IBizPagosProveedor); begin FPagos := AValue; EnlazarMaestroDetalle(FPagosLink, FPagos); end; procedure TBizRecibosProveedor.SetProveedor(AValue: IBizProveedor); var bEnEdicion : Boolean; begin FProveedor := AValue; bEnEdicion := (DataTable.State in dsEditModes); if not bEnEdicion then Edit; if Assigned(FProveedor) then begin if not FProveedor.DataTable.Active then FProveedor.DataTable.Active := True; ID_PROVEEDOR := FProveedor.ID; //El proveedor puede tener un nombre por el ce se le conoce y luego un nombre_comercial //caso de elegir la dirección principal del proveedor para el recibo, se cogerá el nombre_comercial para los datos fiscales NOMBRE := FProveedor.NOMBRE_COMERCIAL; NIF_CIF := FProveedor.NIF_CIF; CALLE := FProveedor.CALLE; CODIGO_POSTAL := FProveedor.CODIGO_POSTAL; PROVINCIA := FProveedor.PROVINCIA; POBLACION := FProveedor.POBLACION; Post; if bEnEdicion then Edit; end end; procedure TBizRecibosProveedor.SetRecibosCompensados(const Value: IBizRecibosCompensadosProv); begin FRecibosCompensados := Value; EnlazarMaestroDetalle(FRecibosCompensadosLink, FRecibosCompensados); end; function TBizRecibosProveedor.SinFactura: Boolean; begin Result := ID_FACTURAIsNull; end; function TBizRecibosProveedor._GetProveedor: IBizProveedor; begin Result := FProveedor; end; procedure TBizRecibosProveedor._SetProveedor(AValue: IBizProveedor); begin FProveedor := AValue; end; constructor TBizRecibosProveedor.Create(aDataTable: TDADataTable); begin inherited; FProveedor := Nil; FPagos := Nil; FRecibosCompensados := Nil; FPagosLink := TDADataSource.Create(NIL); FPagosLink.DataTable := aDataTable; FRecibosCompensadosLink := TDADataSource.Create(NIL); FRecibosCompensadosLink.DataTable := aDataTable; FSeleccionableInterface := TSeleccionable.Create(aDataTable); end; destructor TBizRecibosProveedor.Destroy; begin FPagos := NIL; FRecibosCompensados := Nil; FreeAndNIL(FPagosLink); // FreeAndNIL(FRecibosCompensadosLink); FSeleccionableInterface := NIL; inherited; end; function TBizRecibosProveedor.EsNuevo: Boolean; begin Result := (ID < 0); end; procedure TBizRecibosProveedor.IniciarValoresIBizRecibosProveedorNuevo; begin FECHA_EMISION := Date; IMPORTE := 0; OTROS_GASTOS := 0; ID_EMPRESA := AppFactuGES.EmpresaActiva.ID; USUARIO := AppFactuGES.UsuarioActivo.UserName; ID_TIENDA := AppFactuGES.TiendaActiva.ID; TIENDA := AppFactuGES.TiendaActiva.NOMBRE; end; procedure TBizRecibosProveedor.OnNewRecord(Sender: TDADataTable); begin inherited; IniciarValoresIBizRecibosProveedorNuevo; end; initialization RegisterDataTableRules(BIZ_CLIENT_IBIZRECIBOSPROVEEDOR, TBizRecibosProveedor); finalization end.