diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql index a08ee20..c64b7ac 100644 --- a/Database/scripts/factuges.sql +++ b/Database/scripts/factuges.sql @@ -608,7 +608,8 @@ CREATE TABLE CONTACTOS ( PERSONA_CONTACTO VARCHAR(255), AGENTE VARCHAR(255) COLLATE ES_ES, PAIS VARCHAR(255) COLLATE ES_ES, - IDIOMA_ISO VARCHAR(2) COLLATE ES_ES + IDIOMA_ISO VARCHAR(2) COLLATE ES_ES, + ELIMINADO TIPO_BOOLEANO DEFAULT 0 NOT NULL ); @@ -5700,6 +5701,32 @@ BEGIN SUSPEND; END^ + +CREATE PROCEDURE PRO_ETIQUETAS_ALBARAN ( + aid integer) +returns ( + id integer, + id_albaran integer, + referencia_albaran varchar(255), + fecha_prevista_envio date, + referencia_cliente varchar(255), + cliente varchar(255), + idioma_iso varchar(2), + posicion integer, + tipo_detalle varchar(25), + referencia varchar(255), + concepto varchar(2000), + cantidad numeric(11,2), + importe_unidad numeric(11,2), + descuento float, + importe_total numeric(11,2), + referencia_proveedor varchar(255)) +as +begin + SUSPEND; +END^ + + /******************************************************************************/ /**** Stored Procedures ****/ /******************************************************************************/ @@ -6142,4 +6169,61 @@ begin suspend; end^ -SET TERM ; ^ \ No newline at end of file +SET TERM ; ^ + + +ALTER PROCEDURE PRO_ETIQUETAS_ALBARAN ( + aid integer) +returns ( + id integer, + id_albaran integer, + referencia_albaran varchar(255), + fecha_prevista_envio date, + referencia_cliente varchar(255), + cliente varchar(255), + idioma_iso varchar(2), + posicion integer, + tipo_detalle varchar(25), + referencia varchar(255), + concepto varchar(2000), + cantidad numeric(11,2), + importe_unidad numeric(11,2), + descuento float, + importe_total numeric(11,2), + referencia_proveedor varchar(255)) +as +begin +for SELECT DET.ID, DET.CANTIDAD + FROM ALBARANES_CLIENTE_DETALLES DET + WHERE (DET.CANTIDAD IS NOT NULL) + AND DET.ID_ALBARAN = :AID + ORDER BY DET.ID_ALBARAN, DET.POSICION + into :ID, :CANTIDAD +do + while (CANTIDAD > 0) + do begin + + SELECT DET.ID, DET.ID_ALBARAN, ALBARANES_CLIENTE.REFERENCIA, ALBARANES_CLIENTE.FECHA_PREVISTA_ENVIO, + ALBARANES_CLIENTE.REFERENCIA_CLIENTE, CON.NOMBRE, CON.IDIOMA_ISO, + DET.POSICION, DET.TIPO_DETALLE, + ARTICULOS.REFERENCIA, F_RTFTOTEXT(DET.CONCEPTO) as CONCEPTO, + DET.IMPORTE_UNIDAD, + DET.DESCUENTO, + DET.IMPORTE_TOTAL, + ARTICULOS.REFERENCIA_PROV as REFERENCIA_PROVEEDOR + FROM ALBARANES_CLIENTE_DETALLES DET + LEFT OUTER JOIN ALBARANES_CLIENTE ON (DET.ID_ALBARAN = ALBARANES_CLIENTE.ID) + LEFT OUTER JOIN CONTACTOS CON ON (ALBARANES_CLIENTE.ID_CLIENTE = CON.ID) + LEFT OUTER JOIN ARTICULOS ON (DET.ID_ARTICULO = ARTICULOS.ID) + WHERE (DET.CANTIDAD IS NOT NULL) + AND DET.ID = :ID + ORDER BY DET.ID_ALBARAN, DET.POSICION + into :ID, :ID_ALBARAN, :REFERENCIA_ALBARAN, :FECHA_PREVISTA_ENVIO, :REFERENCIA_CLIENTE, + :CLIENTE, :IDIOMA_ISO, :POSICION, :TIPO_DETALLE, :REFERENCIA, :CONCEPTO, :IMPORTE_UNIDAD, :DESCUENTO, + :IMPORTE_TOTAL, REFERENCIA_PROVEEDOR; + suspend; + CANTIDAD = CANTIDAD - 1; + end +end^ + +SET TERM ; ^ diff --git a/Resources/logotipo-etiquetas-1.jpg b/Resources/logotipo-etiquetas-1.jpg new file mode 100644 index 0000000..450f7bf Binary files /dev/null and b/Resources/logotipo-etiquetas-1.jpg differ diff --git a/Resources/logotipo-etiquetas-2.jpg b/Resources/logotipo-etiquetas-2.jpg new file mode 100644 index 0000000..b8f2128 Binary files /dev/null and b/Resources/logotipo-etiquetas-2.jpg differ diff --git a/Source/Informes/InfEtiquetasAlbaranCliente.fr3 b/Source/Informes/InfEtiquetasAlbaranCliente.fr3 index 02a4ba7..6b046c9 100644 --- a/Source/Informes/InfEtiquetasAlbaranCliente.fr3 +++ b/Source/Informes/InfEtiquetasAlbaranCliente.fr3 @@ -1,9 +1,23 @@ - + - - - + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.dfm b/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.dfm index 1d29369..1af4f6b 100644 --- a/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.dfm +++ b/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.dfm @@ -2512,12 +2512,16 @@ object RptAlbaranesCliente: TRptAlbaranesCliente end> end item - Params = <> + Params = < + item + Name = 'ID_ALBARAN' + Value = '' + end> Statements = < item Connection = 'IBX' - TargetTable = 'V_ETIQUETAS_ART_ALB' - StatementType = stAutoSQL + SQL = 'select *'#10'from PRO_ETIQUETAS_ALBARAN(:ID_ALBARAN)'#10 + StatementType = stSQL ColumnMappings = < item DatasetField = 'ID' @@ -2574,6 +2578,14 @@ object RptAlbaranesCliente: TRptAlbaranesCliente item DatasetField = 'REFERENCIA_PROVEEDOR' TableField = 'REFERENCIA_PROVEEDOR' + end + item + DatasetField = 'CLIENTE' + TableField = 'CLIENTE' + end + item + DatasetField = 'IDIOMA_ISO' + TableField = 'IDIOMA_ISO' end> end> Name = 'Informe_Etiquetas_Articulos_Albaranes' @@ -2600,6 +2612,16 @@ object RptAlbaranesCliente: TRptAlbaranesCliente DataType = datString Size = 255 end + item + Name = 'CLIENTE' + DataType = datString + Size = 255 + end + item + Name = 'IDIOMA_ISO' + DataType = datString + Size = 2 + end item Name = 'POSICION' DataType = datInteger @@ -2617,7 +2639,7 @@ object RptAlbaranesCliente: TRptAlbaranesCliente item Name = 'CONCEPTO' DataType = datString - Size = 32765 + Size = 2000 end item Name = 'CANTIDAD' @@ -2653,29 +2675,61 @@ object RptAlbaranesCliente: TRptAlbaranesCliente object frxReport: TfrxReport Version = '4.7.71' DotMatrixReport = False - EngineOptions.DoublePass = True IniFile = '\Software\Fast Reports' PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator, pbExportQuick] PreviewOptions.Zoom = 1.000000000000000000 PrintOptions.Printer = 'Por defecto' PrintOptions.PrintOnSheet = 0 - ReportOptions.CreateDate = 37800.807714351900000000 - ReportOptions.LastChange = 42284.683293877320000000 + ReportOptions.CreateDate = 38330.712904247700000000 + ReportOptions.LastChange = 42355.744001898150000000 ScriptLanguage = 'PascalScript' ScriptText.Strings = ( - 'procedure mContinuaOnBeforePrint(Sender: TfrxComponent);' + 'procedure Memo2OnBeforePrint(Sender: TfrxComponent);' + 'var' + ' Cadena: String;' 'begin' - ' if Engine.FinalPass then' - ' begin' - ' if ( = ) then' - ' begin ' - ' mContinua.Visible := False;' - ' end ' - ' else' - ' begin ' - ' mContinua.Visible := True;' - ' end ' - ' end; ' + '{ Memo2.Lines.Clear;' + '' + ' Cadena :='#39'N'#186' albar'#225'n: '#39'; ' + ' Cadena := Cadena + ;' + ' Memo2.Lines.Add(Cadena);' + ' ' + ' if ( <> '#39#39') then' + ' begin ' + ' Cadena := '#39'Ref. cliente: '#39';' + ' Cadena := Cadena + ;' + ' Memo2.Lines.Add(Cadena); ' + ' end; ' + '' + ' if ( <> '#39#39') then' + ' begin ' + ' Cadena := '#39'Ref. art'#237'culo: '#39';' + ' Cadena := Cadena + ;' + ' Memo2.Lines.Add(Cadena); ' + ' end;' + '' + ' if ( <> '#39#39') then' + ' begin ' + ' Cadena := '#39'Art'#237'culo: '#39';' + ' Cadena := Cadena + UPPERCASE();' + ' Memo2.Lines.Add(Cadena); ' + ' end;' + '} ' + 'end;' + '' + 'procedure Memo9OnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' if ( <> 0) then' + ' begin ' + ' memo3.visible := True; ' + ' memo9.visible := True; ' + ' end' + ' else ' + ' begin ' + ' memo3.visible := False; ' + ' memo9.visible := False; ' + ' end; ' + ' ' 'end;' '' 'begin' @@ -2684,7 +2738,6 @@ object RptAlbaranesCliente: TRptAlbaranesCliente ShowProgress = False StoreInDFM = False OnGetValue = frxReportGetValue - OnStartReport = 'frxReportOnStartReport' Left = 145 Top = 16 end @@ -4207,6 +4260,16 @@ object RptAlbaranesCliente: TRptAlbaranesCliente DataType = datString Size = 255 end + item + Name = 'CLIENTE' + DataType = datString + Size = 255 + end + item + Name = 'IDIOMA_ISO' + DataType = datString + Size = 2 + end item Name = 'POSICION' DataType = datInteger @@ -4224,7 +4287,7 @@ object RptAlbaranesCliente: TRptAlbaranesCliente item Name = 'CONCEPTO' DataType = datString - Size = 32765 + Size = 2000 end item Name = 'CANTIDAD' @@ -4247,7 +4310,11 @@ object RptAlbaranesCliente: TRptAlbaranesCliente DataType = datString Size = 255 end> - Params = <> + Params = < + item + Name = 'ID_ALBARAN' + Value = '' + end> MasterParamsMappings.Strings = ( 'ID_ALBARAN=ID') LogChanges = False diff --git a/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas b/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas index 507839b..e5938a4 100644 --- a/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas +++ b/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas @@ -106,6 +106,8 @@ type //Genera cada uno de los albaranes a imprimir procedure _GenerarAlbaran(const AID: Integer); + //Genera las etiquetas de cada uno de los albaranes a imprimir + procedure _GenerarEtiquetasAlbaran(const AID: Integer); procedure PrepararTablaInformeGrafComp(ATabla: TDAMemDataTable); procedure PrepararTablaResumenInformeGrafComp(ATabla: IDADataset); @@ -258,48 +260,39 @@ begin end; end; +procedure TRptAlbaranesCliente._GenerarEtiquetasAlbaran(const AID: Integer); +var + AInforme: Variant; + +begin + FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" + try + tbl_Etiquetas.Active := False; + tbl_Etiquetas.ParamByName('ID_ALBARAN').AsInteger := AID; + tbl_Etiquetas.Active := True; + + AInforme := DarRutaFichero(DarRutaInformes, rptInfEtiquetas, tbl_Cabecera.FieldByName('ID_EMPRESA').AsString, tbl_Cabecera.FieldByName('IDIOMA_ISO').AsString); + if VarIsNull(AInforme) then + raise Exception.Create (('Error Servidor: _GenerarEtiquetasAlbaran, no encuentra informe ' + rptInfEtiquetas)); + + frxReport.LoadFromFile(AInforme, True); + frxReport.PrepareReport(False); + finally + FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" + end; +end; + function TRptAlbaranesCliente.GenerarEtiquetas(const ListaID: TIntegerArray): Binary; var i: Integer; - AInforme: Variant; - Condicion: TDAWhereExpression; - AArray : Array of TDAWhereExpression; - begin Result := Binary.Create; - - FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" try - - with tbl_Etiquetas.DynamicWhere do - begin - //Vamos generando todos y cada uno de los albaranes recibidos - SetLength(AArray, ListaID.Count); for i := 0 to ListaID.Count - 1 do - AArray[i] := NewConstant(ListaID.Items[i], datInteger); - - // (ID_ALBARANES IN ...) - Condicion := NewBinaryExpression(NewField('', fld_AlbaranesCliente_DetallesID_ALBARAN), NewList(AArray), dboIn); - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; - - tbl_Etiquetas.Active := False; - tbl_Etiquetas.Active := True; - - AInforme := DarRutaFichero(DarRutaInformes, rptInfEtiquetas); - if VarIsNull(AInforme) then - raise Exception.Create (('Error Servidor: GenerarEtiquetas, no encuentra informe ' + rptInforme)); - - frxReport.LoadFromFile(AInforme, True); - - frxReport.PrepareReport(False); + _GenerarEtiquetasAlbaran(ListaID.Items[i]); frxReport.PreviewPages.SaveToStream(Result); finally - FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" end; end;