unit uGenerarAlbaranesCliFacCliUtils; interface uses Windows, SysUtils, Classes, uBizFacturasCliente, pngimage, JSDialog; type TdmGenerarAlbaranesCli = class(TDataModule) end; function GenerarAlbaranCli(AFactura : IBizFacturaCliente) : Boolean; overload; implementation {$R *.dfm} uses uDialogUtils, uDataTableUtils, uBizAlbaranesCliente, uAlbaranesClienteController, uFacturasClienteController; var dmGenerarAlbaranesCli: TdmGenerarAlbaranesCli; AFacturasClienteController : IFacturasClienteController; AAlbaranesClienteController : IAlbaranesClienteController; procedure Inicializar; begin dmGenerarAlbaranesCli := TdmGenerarAlbaranesCli.Create(nil); AFacturasClienteController := TFacturasClienteController.Create; AAlbaranesClienteController := TAlbaranesClienteController.Create; end; procedure Finalizar; begin FreeAndNIL(dmGenerarAlbaranesCli); AFacturasClienteController := nil; AAlbaranesClienteController := nil; end; function GenerarAlbaranCli(AFactura : IBizFacturaCliente) : Boolean; overload; var AAlbaranNuevo : IBizAlbaranCliente; begin Result := False; if not Assigned(AAlbaranesClienteController) then Inicializar; if not Assigned(AFactura) then raise Exception.Create('Factura de cliente no asignada (GenerarAlbaranCli)'); if not AFactura.DataTable.Active then AFactura.DataTable.Active := True; try AAlbaranNuevo := AAlbaranesClienteController.Nuevo; with AAlbaranNuevo do begin TIPO := CTE_TIPO_ALBARAN_DEV; ID_CLIENTE := AFactura.ID_CLIENTE; CALLE := AFactura.CALLE; CODIGO_POSTAL := AFactura.CODIGO_POSTAL; POBLACION := AFactura.POBLACION; PROVINCIA := AFactura.PROVINCIA; // AAlbaran.PERSONA_CONTACTO := AFactura.PERSONA_CONTACTO; // AAlbaran.TELEFONO := AFactura.TELEFONO; IMPORTE_NETO := AFactura.IMPORTE_NETO; IMPORTE_PORTE := AFactura.IMPORTE_PORTE; DESCUENTO := AFactura.DESCUENTO; IMPORTE_DESCUENTO := AFactura.IMPORTE_DESCUENTO; BASE_IMPONIBLE := AFactura.BASE_IMPONIBLE; IVA := AFactura.IVA; IMPORTE_IVA := AFactura.IMPORTE_IVA; IMPORTE_TOTAL := AFactura.IMPORTE_TOTAL; // AAlbaran.DataTable.FieldByName(fld_AlbaranesProveedorOBSERVACIONES).AsVariant := AFactura.DataTable.FieldByName(fld_PedidosProveedorOBSERVACIONES).AsVariant; ID_FORMA_PAGO := AFactura.ID_FORMA_PAGO; ID_FACTURA := AFactura.ID; end; DuplicarRegistros(AFactura.Detalles.DataTable, AAlbaranNuevo.Detalles.DataTable, mdrTodos); //Sustituir por if de guardar if AAlbaranesClienteController.Guardar(AAlbaranNuevo) then ShowInfoMessage('La orden de devolución se ha dado de alta con el código ' + AAlbaranNuevo.REFERENCIA); finally AAlbaranNuevo := Nil; end; end; end.