unit uGenerarFacturasProvUtils; interface uses Windows, SysUtils, Classes, uBizAlbaranesProveedor, pngimage, JSDialog; type TdmGenerarFacturasProv = class(TDataModule) JsListaFacturasGeneradas: TJSDialog; end; function GenerarFacturaProv(const IDAlbaran : Integer) : Boolean; overload; function GenerarFacturaProv(AAlbaranes : IBizAlbaranProveedor) : Boolean; overload; function GenerarFacturaProv : Boolean; overload; implementation {$R *.dfm} uses uDialogUtils, uBizDetallesAlbaranProveedor, uAlbaranesProveedorController, uDetallesAlbaranProveedorController, uFacturasProveedorController, uBizFacturasProveedor, uBizDetallesFacturaProveedor; // , // , uProveedoresController, // , uControllerDetallesBase, // , uBizContactos, schPedidosClienteClient_Intf, // schAlbaranesProveedorClient_Intf; var dmGenerarFacturasProv: TdmGenerarFacturasProv; AAlbaranesProveedorController : IAlbaranesProveedorController; ADetallesAlbaranesProveedorController : IDetallesAlbaranProveedorController; AFacturasProveedorController : IFacturasProveedorController; // AProveedoresController : IProveedoresController; { Métodos auxiliares } procedure Inicializar; begin dmGenerarFacturasProv := TdmGenerarFacturasProv.Create(nil); AAlbaranesProveedorController := TAlbaranesProveedorController.Create; ADetallesAlbaranesProveedorController := TDetallesAlbaranProveedorController.Create; AFacturasProveedorController := TFacturasProveedorController.Create; // AProveedoresController := TProveedoresController.Create; end; procedure Finalizar; begin FreeAndNIL(dmGenerarFacturasProv); AAlbaranesProveedorController := nil; ADetallesAlbaranesProveedorController := nil; AFacturasProveedorController := nil; // AProveedoresController := nil; end; function GenerarFacturaProv(const IDAlbaran : Integer) : Boolean; overload; var AAlbaran : IBizAlbaranProveedor; begin Result := False; if not Assigned(AAlbaranesProveedorController) then Inicializar; AAlbaran := AAlbaranesProveedorController.Buscar(IDAlbaran); Result := GenerarFacturaProv(AAlbaran); if Assigned(AAlbaranesProveedorController) then Finalizar; end; function GenerarFacturaProv(AAlbaranes : IBizAlbaranProveedor) : Boolean; overload; var ARespuesta : Integer; AFacturasNuevas : IBizFacturaProveedor; // AArticulos: IBizPedidoClienteArticulosPend; i: Integer; begin { Result := False; if not Assigned(AAlbaranesProveedorController) then Inicializar; if not Assigned(AAlbaranes) then raise Exception.Create('Albarán de proveedor no asignado (GenerarFacturaProv)'); if not AAlbaranes.DataTable.Active then AAlbaranes.DataTable.Active := True; try AFacturasNuevas := AFacturasProveedorController.Nuevo(False); if AFacturasProveedorController.Anadir(AFacturasNuevas, AAlbaranes) then begin if AFacturasNuevas.DataTable.RecordCount = 1 then AFacturasProveedorController.Ver(AFacturasNuevas) else begin with dmGenerarFacturasProv.JsListaFacturasGeneradas.Content do begin Clear; AFacturasNuevas.DataTable.Last; for i := 0 to AFacturasNuevas.DataTable.RecordCount - 1 do begin if Length(AFacturasNuevas.REFERENCIA) > 0 then Add(AFacturasNuevas.REFERENCIA + ': ' + AFacturasNuevas.NOMBRE); AFacturasNuevas.DataTable.Prior; end; end; dmGenerarFacturasProv.JsListaFacturasGeneradas.Execute; end; // actRefrescar.Execute; end; finally AFacturasNuevas := NIL; end; } end; function GenerarFacturaProv : Boolean; overload; var AAlbaranes : IBizAlbaranProveedor; begin Result := False; if not Assigned(AAlbaranesProveedorController) then Inicializar; AAlbaranes := AAlbaranesProveedorController.ElegirAlbaranes(AAlbaranesProveedorController.BuscarSinFacturar, 'Elija el albarán o albaranes de proveedor que desea utilizar para dar de alta la factura.' + #10#13 + 'Si elige albaranes de proveedores diferentes se dará de alta una factura por cada uno de ellos.' , True); Result := GenerarFacturaProv(AAlbaranes); if Assigned(AAlbaranesProveedorController) then Finalizar; end; end.