unit uGenerarAlbaranesProvFacProvUtils; interface uses Windows, SysUtils, Classes, uBizFacturasProveedor, pngimage, JSDialog; type TdmGenerarAlbaranesProv = class(TDataModule) end; function GenerarAlbaranProv(AFactura : IBizFacturaProveedor) : Boolean; overload; implementation {$R *.dfm} uses uDialogUtils, uDataTableUtils, uBizAlbaranesProveedor, uFacturasProveedorController, uAlbaranesProveedorController; var dmGenerarAlbaranesProv: TdmGenerarAlbaranesProv; AAlbaranesProveedorController : IAlbaranesProveedorController; AFacturasProveedorController : IFacturasProveedorController; procedure Inicializar; begin dmGenerarAlbaranesProv := TdmGenerarAlbaranesProv.Create(nil); AAlbaranesProveedorController := TAlbaranesProveedorController.Create; AFacturasProveedorController := TFacturasProveedorController.Create; end; procedure Finalizar; begin FreeAndNIL(dmGenerarAlbaranesProv); AAlbaranesProveedorController := nil; AFacturasProveedorController := nil; end; function GenerarAlbaranProv(AFactura : IBizFacturaProveedor) : Boolean; overload; var AAlbaranNuevo : IBizAlbaranProveedor; begin Result := False; if not Assigned(AAlbaranesProveedorController) then Inicializar; if not Assigned(AFactura) then raise Exception.Create('Factura de proveedor no asignada (GenerarAlbaranProv)'); if not AFactura.DataTable.Active then AFactura.DataTable.Active := True; try AAlbaranNuevo := AAlbaranesProveedorController.Nuevo; with AAlbaranNuevo do begin TIPO := CTE_TIPO_ALBARAN_DEV; ID_PROVEEDOR := AFactura.ID_PROVEEDOR; 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 AAlbaranesProveedorController.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.