From 26314b07a2a698ff9ab9eb7d9852b88f4f12a41a Mon Sep 17 00:00:00 2001 From: roberto Date: Mon, 8 Feb 2010 17:38:24 +0000 Subject: [PATCH] Tarea #372 (se adapta la unidad uGridClipBoardUtils para que tire de las funciones de controllerdetallesbase y no se produzca duplicidad de funciones. Tarea #293 Tarea #366 git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@988 0c75b7a4-871f-7646-8a2f-f78d34cc349f --- .../Controladores/uControllerDetallesBase.pas | 45 +-- Source/Base/Utiles/uGridClipboardUtils.pas | 268 ++++-------------- Source/GUIBase/uEditorDBItem.dfm | 4 + Source/GUIBase/uViewDetallesBase.pas | 2 +- Source/Informes/1/AlbaranCliente.rdx | Bin 72192 -> 67072 bytes Source/Informes/1/AlbaranProveedor.rdx | Bin 71680 -> 72192 bytes Source/Informes/1/InfAlbaranCliente.fr3 | 4 +- Source/Informes/1/InfAlbaranProveedor.fr3 | 6 +- Source/Informes/1/InfPedidoProveedor.fr3 | 8 +- Source/Informes/1/PedidoProveedor.rdx | Bin 76800 -> 70144 bytes Source/Informes/2/InfAlbaranCliente.fr3 | 14 +- Source/Informes/2/InfAlbaranProveedor.fr3 | 16 +- Source/Informes/2/InfPedidoProveedor.fr3 | 20 +- .../Views/PedidosProveedor_view.dpk | 36 ++- .../Views/PedidosProveedor_view.dproj | 32 +++ .../Views/PedidosProveedor_view.res | Bin 384 -> 4748 bytes .../Views/uViewObraReserva.dfm | 93 ++++-- .../Views/uViewObraReserva.pas | 16 ++ .../Views/uViewPedidoProveedor.dfm | 44 ++- .../PresupuestosCliente_controller.dpk | Bin 1611 -> 1605 bytes .../PresupuestosCliente_controller.dproj | 2 +- .../PresupuestosCliente_controller.res | Bin 384 -> 4748 bytes .../View/uIEditorAsignarDescuento.pas | 18 -- .../Controller/View/uIEditorVariarPrecios.pas | 20 ++ .../uDetallesPresupuestoClienteController.pas | 89 ++++-- .../Views/PresupuestosCliente_view.dpk | 2 +- .../Views/PresupuestosCliente_view.dproj | 54 ++-- .../Views/PresupuestosCliente_view.res | Bin 384 -> 4748 bytes .../Views/uEditorAsignarDescuento.dfm | 87 ------ .../Views/uEditorAsignarDescuento.pas | 47 --- .../Views/uEditorVariarPrecios.dfm | 130 +++++++++ .../Views/uEditorVariarPrecios.pas | 92 ++++++ .../uPresupuestosClienteViewRegister.pas | 6 +- .../Views/uViewDetallesPresupuestoCliente.dfm | 101 ++----- .../Views/uViewDetallesPresupuestoCliente.pas | 50 ++-- 35 files changed, 696 insertions(+), 610 deletions(-) delete mode 100644 Source/Modulos/Presupuestos de cliente/Controller/View/uIEditorAsignarDescuento.pas create mode 100644 Source/Modulos/Presupuestos de cliente/Controller/View/uIEditorVariarPrecios.pas delete mode 100644 Source/Modulos/Presupuestos de cliente/Views/uEditorAsignarDescuento.dfm delete mode 100644 Source/Modulos/Presupuestos de cliente/Views/uEditorAsignarDescuento.pas create mode 100644 Source/Modulos/Presupuestos de cliente/Views/uEditorVariarPrecios.dfm create mode 100644 Source/Modulos/Presupuestos de cliente/Views/uEditorVariarPrecios.pas diff --git a/Source/Base/Controladores/uControllerDetallesBase.pas b/Source/Base/Controladores/uControllerDetallesBase.pas index f1d62201..dbda2ed5 100644 --- a/Source/Base/Controladores/uControllerDetallesBase.pas +++ b/Source/Base/Controladores/uControllerDetallesBase.pas @@ -144,33 +144,36 @@ var AsignarDtoPosicion: Integer; begin - AsignarDtoPosicion := 0; - AField := ADataTable.DataTable.FindField(CAMPO_POSICION); - if not Assigned(AField) then - raise Exception.Create('Campo ' + CAMPO_POSICION + ' no encontrado (AsignarDescuento)'); + if ADescuento >= 0 then + begin + AsignarDtoPosicion := 0; + AField := ADataTable.DataTable.FindField(CAMPO_POSICION); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_POSICION + ' no encontrado (AsignarDescuento)'); - BeginUpdate(ADataTable); - try - with ADataTable do - begin - for i := 0 to High(POSICION) do + BeginUpdate(ADataTable); + try + with ADataTable do begin - DataTable.First; - AsignarDtoPosicion := POSICION[i]; - if DataTable.Locate(CAMPO_POSICION, AsignarDtoPosicion, []) then + for i := 0 to High(POSICION) do begin - if (DataTable.FieldByName(CAMPO_TIPO).AsString = TIPO_DETALLE_CONCEPTO) then - begin - DataTable.Edit; - DataTable.FieldByName(CAMPO_DESCUENTO).AsVariant := ADescuento; - DataTable.Post; - end; + DataTable.First; + AsignarDtoPosicion := POSICION[i]; + if DataTable.Locate(CAMPO_POSICION, AsignarDtoPosicion, []) then + begin + if (DataTable.FieldByName(CAMPO_TIPO).AsString = TIPO_DETALLE_CONCEPTO) then + begin + DataTable.Edit; + DataTable.FieldByName(CAMPO_DESCUENTO).AsVariant := ADescuento; + DataTable.Post; + end; + end; end; + Renumerar(DataTable, AsignarDtoPosicion); end; - Renumerar(DataTable, AsignarDtoPosicion); + finally + EndUpdate(ADataTable); end; - finally - EndUpdate(ADataTable); end; end; diff --git a/Source/Base/Utiles/uGridClipboardUtils.pas b/Source/Base/Utiles/uGridClipboardUtils.pas index a9bb2aa0..7a19b826 100644 --- a/Source/Base/Utiles/uGridClipboardUtils.pas +++ b/Source/Base/Utiles/uGridClipboardUtils.pas @@ -27,14 +27,8 @@ uses cxVariants, CtlToRTF, Clipbrd, DB, cxExport, cxGridExportLink, cxCustomData, uSistemaFunc, ClipboardUtils, cxDBData, cxGridLevel, uStringsUtils, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, - cxGridTableView, cxGridDBTableView, cxGridDBDataDefinitions, uGridStatusUtils; - -const - TIPO_DETALLE_CONCEPTO = 'Concepto'; - CAMPO_ID = 'ID'; - CAMPO_POSICION = 'POSICION'; - CAMPO_TIPO = 'TIPO_DETALLE'; - CAMPO_CONCEPTO = 'CONCEPTO'; + cxGridTableView, cxGridDBTableView, cxGridDBDataDefinitions, uGridStatusUtils, + uDADataTable, uCalculosUtils, uControllerDetallesBase; type TTipoAnadir = (taAnadir, taInsertar); @@ -55,165 +49,6 @@ begin end; - -function _DesplazarNPosiciones(ADataSet: TDataSet; NumOrdenIni: Variant; NPosiciones: Variant): Integer; -{ -Funcin que desplaza NPosiciones el numero de orden a partir del elemento con el -nmero de orden dado. Devuelve el numero de orden del primer elemento del hueco -generado -} -var - AuxNumOrden: Integer; - AuxNumPos: Integer; - AField: TField; -begin - - AField := ADataSet.FindField(CAMPO_POSICION); - if not Assigned(AField) then - raise Exception.Create('Campo ' + CAMPO_POSICION + ' no encontrado (DesplazarNPosiciones)'); - - if VarIsNull(NPosiciones) then - AuxNumPos := 1 - else - AuxNumPos := NPosiciones; - - if VarIsNull(NumOrdenIni) then - AuxNumOrden := 0 - else - AuxNumOrden := NumOrdenIni + 1; //Aadimos por abajo siempre - - Result := AuxNumOrden; - - with ADataSet do - begin - First; - while not EOF do - begin - if (FieldByName(CAMPO_POSICION).AsInteger >= AuxNumOrden) then - begin - if not (State in dsEditModes) then - Edit; - FieldByName(CAMPO_POSICION).AsInteger := FieldByName(CAMPO_POSICION).AsInteger + AuxNumPos; - Post; - end; - Next; - end; - end; -end; - - -procedure _NuevaTupla(ADataSet: TDataSet; ATipoAnadir: TTipoAnadir = taInsertar); -var - AuxNumOrden : Integer; -begin - ADataSet.DisableControls; - try - with ADataSet do - begin - AuxNumOrden := _DesplazarNPosiciones(ADataSet, FieldByName(CAMPO_POSICION).AsVariant, 1); - - case ATipoAnadir of - taAnadir: Append; - taInsertar: Insert; - end; - - FieldByName(CAMPO_POSICION).AsInteger := AuxNumOrden; - FieldByName(CAMPO_TIPO).AsVariant := TIPO_DETALLE_CONCEPTO; - end; - finally - ADataSet.EnableControls; - end; -end; - - -procedure _Renumerar(ADataSet: TDataSet); -{ -procedimiento que renumera todos los conceptos de la tabla dada por parametro -} -var - i, j : Integer; - AField: TField; -begin - AField := ADataSet.FindField(CAMPO_POSICION); - - if not Assigned(AField) then - raise Exception.Create('Campo ' + CAMPO_POSICION + ' no encontrado (renumerar)'); - - with ADataSet do - begin - for i:=0 to RecordCount-1 do - begin - First; - if not Locate(CAMPO_POSICION, i, []) then - begin - j := i; - First; - while not Locate(CAMPO_POSICION, j, []) do - begin - Inc(j); - First; - end; - - if not (State in dsEditModes) then - Edit; - - FieldByName(CAMPO_POSICION).AsInteger := i; - Post; - end; - end; - end; -end; - - - -{procedure RenumerarCampoPosicion(ADataSet : TDataSet); -var - i, j : Integer; - AField : TField; - AList : TStringList; -begin - AList := TStringList.Create; - try - ADataSet.First; - for i:=0 to ADataSet.RecordCount-1 do - begin - AList.Add(ADataSet.FieldByName('POSICION').AsString); - ADataSet.Next; - end; - ShowMessage(AList.Text); - finally - FreeANDNIL(AList); - end; - - - - AField := ADataSet.FindField('POSICION'); - if Assigned(AField) and not (ADataSet.IsEmpty) then - begin - with ADataSet do - begin - for i:=0 to RecordCount-1 do - begin - First; - if not Locate('POSICION', i, []) then - begin - j := i; - First; - while not Locate('POSICION', j, []) do - begin - Inc(j); - First; - end; - end; - Edit; - FieldByName('POSICION').AsInteger := i; - Post; - end; - end; - end; -end;} - - function _BuscarColumna (AView: TcxGridDBTableView; const AName, ATypeValue : String; var AIndex : Integer) : Boolean; var @@ -246,7 +81,6 @@ procedure LoadGridRowsFromStream(AView : TcxGridDBTableView; AStream: TStream; var AValueNameList: TStringList; AValueTypeList: TStringList; - ADataSet : TDataSet; ARecordID : Integer; ARecordIndex : Integer; bEstabaVacia : Boolean; @@ -259,6 +93,10 @@ var AValue : Variant; AIndex : integer; + //Se adapta para que se utilicen las mismas funciones que en el controllerbase + AControllerDetallesBase: IControllerDetallesBase; + ADataTable: IDAStronglyTypedDataTable; + begin if not Assigned(AView) then raise Exception.Create('Vista no asignada (SaveGridViewToStream)'); @@ -266,12 +104,15 @@ begin if not Assigned(AStream) then raise Exception.Create('Stream no asignado (SaveGridViewToStream)'); - ADataSet := AView.DataController.DataSource.DataSet; + if not Supports((AView.DataController.DataSource as TDADataSource).DataTable, IDAStronglyTypedDataTable, ADataTable) then + raise Exception.Create('DataTable asignado no soporta IDAStronglyTypedDataTable)'); + AReader := TcxReader.Create(AStream); AValueNameList := TStringList.Create; AValueTypeList := TStringList.Create; try + AControllerDetallesBase:= TControllerDetallesBase.Create; AIndex := -1; ACaption := AReader.ReadAnsiString; NumCols := AReader.ReadInteger; // n de columnas @@ -285,7 +126,7 @@ begin end; NumFilas := AReader.ReadInteger; - bEstabaVacia := ADataSet.IsEmpty; + bEstabaVacia := ADataTable.IsEmpty; AView.DataController.BeginUpdate; try @@ -297,7 +138,7 @@ begin if ARecordIndex >= 0 then begin ARecordID := AView.DataController.GetRecordId(ARecordIndex); - ADataSet.Locate(AView.DataController.KeyFieldNames, ARecordID, []); + ADataTable.Locate(AView.DataController.KeyFieldNames, ARecordID, []); end; end; @@ -305,16 +146,16 @@ begin begin // Insertar una tupla de la forma adecuada if bEstabaVacia then - _NuevaTupla(ADataSet, taAnadir) + begin + AControllerDetallesBase.Add(ADataTable,TIPO_DETALLE_CONCEPTO); + ADataTable.Edit; + end else begin if iContador = 0 then - ADataSet.Edit + ADataTable.Edit else begin - ADataSet.Next; - if ADataSet.EOF then - _NuevaTupla(ADataSet, taAnadir) - else - _NuevaTupla(ADataSet, taInsertar) + AControllerDetallesBase.Add(ADataTable,TIPO_DETALLE_CONCEPTO); + ADataTable.Edit; end; end; @@ -324,23 +165,18 @@ begin AValue := AReader.ReadVariant; if (Pos(AValueNameList[iCols], AView.DataController.KeyFieldNames) = 0) then begin - if (AValueNameList[iCols] = 'POSICION') then - ADataSet.FieldByName('POSICION').Value := ADataSet.RecNo - else - if _BuscarColumna(AView, AValueNameList[iCols], AValueTypeList[iCols], AIndex) then - begin - if AIndex <> -1 then - ADataSet.FieldByName(AView.DataController.GetItemField(AIndex).FieldName).Value := AValue; - end; + if (AValueNameList[iCols] <> CAMPO_POSICION) then + if _BuscarColumna(AView, AValueNameList[iCols], AValueTypeList[iCols], AIndex) then + begin + if AIndex <> -1 then + ADataTable.DataTable.FieldByName(AView.DataController.GetItemField(AIndex).FieldName).Value := AValue; + end; end; end; finally - ADataSet.Post; + ADataTable.Post; end; end; - - _Renumerar(ADataSet); - finally AView.DataController.EndUpdate; end; @@ -348,6 +184,7 @@ begin FreeANDNIL(AReader); FreeANDNIL(AValueNameList); FreeANDNIL(AValueTypeList); + AControllerDetallesBase := Nil; end; end; {$ENDREGION} @@ -629,13 +466,23 @@ end; procedure CortarSeleccionGridAlPortapapeles (AGrid : TcxGrid); +var + //Se adapta para que se utilicen las mismas funciones que en el controllerbase + AControllerDetallesBase: IControllerDetallesBase; + ADataTable : TDADataTable; + begin + if Assigned(AGrid) then + ADataTable := ((AGrid.ActiveView as TcxGridDBTableView).DataController.DataSource as TDADataSource).DataTable; + ShowHourglassCursor; try + AControllerDetallesBase := TControllerDetallesBase.Create; CopiarSeleccionGridAlPortapapeles(AGrid); AGrid.ActiveView.DataController.DeleteSelection; - _Renumerar(TcxGridDBTableView(AGrid.ActiveView).DataController.DataSet); + AControllerDetallesBase.Renumerar(ADataTable, ADataTable.FieldByName(CAMPO_POSICION).AsInteger); finally + AControllerDetallesBase := Nil; HideHourglassCursor; end; end; @@ -678,18 +525,25 @@ var AGridStatus : TcxGridStatus; ATextList : TStringList; - ADataSet : TDataSet; - ARecordID : Integer; ARecordIndex : Integer; bEstabaVacia : Boolean; AView : TcxGridDBTableView; iContador : Integer; + + //Se adapta para que se utilicen las mismas funciones que en el controllerbase + AControllerDetallesBase: IControllerDetallesBase; + ADataTable: IDAStronglyTypedDataTable; + begin + if not Assigned(AGrid) then raise Exception.Create('Grid no asignado (PegarTextoDesdePortapapeles)'); + if not Supports(((AGrid.ActiveView as TcxGridDBTableView).DataController.DataSource as TDADataSource).DataTable, IDAStronglyTypedDataTable, ADataTable) then + raise Exception.Create('DataTable asignado no soporta IDAStronglyTypedDataTable)'); + RegistrarFormatos; if not Clipboard.HasFormat(CF_TEXT) then @@ -703,8 +557,8 @@ begin ATextList := TStringList.Create; try CopyStringsFromClipboard(CF_TEXT, ATextList); - ADataSet := AView.DataController.DataSource.DataSet; - bEstabaVacia := ADataSet.IsEmpty; + AControllerDetallesBase := TControllerDetallesBase.Create; + bEstabaVacia := ADataTable.IsEmpty; AView.DataController.BeginUpdate; try // Localizar el punto donde se empieza a insertar @@ -714,7 +568,7 @@ begin if ARecordIndex >= 0 then begin ARecordID := AView.DataController.GetRecordId(ARecordIndex); - ADataSet.Locate(AView.DataController.KeyFieldNames, ARecordID, []); + ADataTable.Locate(AView.DataController.KeyFieldNames, ARecordID, []); end; end; @@ -722,28 +576,27 @@ begin begin // Insertar una tupla de la forma adecuada if bEstabaVacia then - _NuevaTupla(ADataSet, taAnadir) + begin + AControllerDetallesBase.Add(ADataTable,TIPO_DETALLE_CONCEPTO); + ADataTable.Edit; + end else begin if iContador = 0 then - ADataSet.Edit + ADataTable.Edit else begin - ADataSet.Next; - if ADataSet.EOF then - _NuevaTupla(ADataSet, taAnadir) - else - _NuevaTupla(ADataSet, taInsertar) + AControllerDetallesBase.Add(ADataTable,TIPO_DETALLE_CONCEPTO); + ADataTable.Edit; end; end; try - ADataSet.Edit; - ADataSet.FieldByName('CONCEPTO').AsString := ATextList[iContador]; + ADataTable.Edit; + ADataTable.DataTable.FieldByName('CONCEPTO').AsString := ATextList[iContador]; finally - ADataSet.Post; + ADataTable.Post; end; end; - _Renumerar(ADataSet); finally AView.DataController.EndUpdate; end; @@ -754,6 +607,7 @@ begin Clipboard.Close; AGridStatus.Restore(TcxGridDBTableView(AGrid.ActiveView)); FreeAndNil(AGridStatus); + AControllerDetallesBase := Nil; end; end; diff --git a/Source/GUIBase/uEditorDBItem.dfm b/Source/GUIBase/uEditorDBItem.dfm index 53548e08..5608817c 100644 --- a/Source/GUIBase/uEditorDBItem.dfm +++ b/Source/GUIBase/uEditorDBItem.dfm @@ -77,6 +77,10 @@ inherited fEditorDBItem: TfEditorDBItem TabOrder = 2 object pagGeneral: TTabSheet Caption = 'General' + ExplicitLeft = 0 + ExplicitTop = 0 + ExplicitWidth = 0 + ExplicitHeight = 0 end end inherited StatusBar: TJvStatusBar diff --git a/Source/GUIBase/uViewDetallesBase.pas b/Source/GUIBase/uViewDetallesBase.pas index 095cdff4..bdbcfe84 100644 --- a/Source/GUIBase/uViewDetallesBase.pas +++ b/Source/GUIBase/uViewDetallesBase.pas @@ -1143,7 +1143,7 @@ procedure TfrViewDetallesBase.actDetallesCopiarExecute(Sender: TObject); begin ShowHourglassCursor; try - CopiarSeleccionGridAlPortapapeles(_Grid); + CopiarSeleccionGridAlPortapapeles(_Grid, True); finally HideHourglassCursor; end; diff --git a/Source/Informes/1/AlbaranCliente.rdx b/Source/Informes/1/AlbaranCliente.rdx index b57095c8c8f037a588541b62fe333ae202c49b1a..9416825fb2b10f58f3a8ab67fd015ebed68ea711 100644 GIT binary patch delta 4148 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 diff --git a/Source/Informes/1/AlbaranProveedor.rdx b/Source/Informes/1/AlbaranProveedor.rdx index e92655b171959545fd08c7c7eaa5c771de0bc175..f1317eb213f90f0890a3b853f830b5589255fcce 100644 GIT binary patch delta 995 zcmbW0T}YEr7=Yh*-}%-yQ@5Fl|4TPDBb93130h$yn2149hW!#nkxH}tpOyU?WxUY5 z3nOfGRer&sqR8%yYByb2gP^uA0>vPLNOZl&Z4z`7y`1N~=e&RC=R2SGf$%;OBbBQ! zL0qf=S9plbVl*0+)(gzVhfOaGYE2Hn3>7Fjv|cG~2xkKr*r&6W@~?VbE`Wm*8}b2m z#PibWhDf8wO0{{p3Mrz(HP5v(WK5=9;cs2e&TF(&6xro&{uDivP~B7}1EeI}ve11# zU7}#j3ow#JGh+L|NLI`sl4JVkN&s$9-QwSS*FS~TMgS92Cygvm=cXX9mT zd}Ebtls6|O5jVzXmm>4aI4(Z7EC=Y?OSQ=&7Fo1*Qy9^pE!a}+SW9MSg?e2D@RQqF zVl(q*(wPjVl&PZq&MZeLs85C_waK6!(u1L(ALfE{a7zw#*>q|*T~)1H>Q@0Zx{5@e z+cZesu53$=a!l?@PH(%)s6RQA-nuHWXrlPpF6`2t_c!mMwrN45(sZMIMp-YLkY6SEFuexROTg+{Yg zjwTOZocv`@vp&OgG2KiL)64WR(m%l3%M3DSnRCo}W{8pgg*cZ3c`5i2Z(8xVIr034 l10E|XXc)`)b=&Y4cKSSa9Ke3x4?E7KCZggx@I4Ka#cu_y0pSWVSI9oU6wyhjR!R}pnz<)x-VNY&_~|IKZLT9-tew=0>7s?tZfx<5+Bb zrACA1`rM@rI8YNf23o*r&;`b9jyQN=-k*^ql7s{+&%ut6$6*dp?gkroL<^TE{!AQaShTXFi{_ zid}leApWAk)|TQrb-mlr;0!nm+Cc~C1YJPI)lKOI0ni7|fqrlvsQ8l2K(Hi}-qLW3 xyy>A6$rIyMvD - + - + diff --git a/Source/Informes/1/InfAlbaranProveedor.fr3 b/Source/Informes/1/InfAlbaranProveedor.fr3 index 9e125e93..477cc57d 100644 --- a/Source/Informes/1/InfAlbaranProveedor.fr3 +++ b/Source/Informes/1/InfAlbaranProveedor.fr3 @@ -1,10 +1,10 @@ - + - + @@ -12,7 +12,7 @@ - + diff --git a/Source/Informes/1/InfPedidoProveedor.fr3 b/Source/Informes/1/InfPedidoProveedor.fr3 index 7901d52a..b019d6b4 100644 --- a/Source/Informes/1/InfPedidoProveedor.fr3 +++ b/Source/Informes/1/InfPedidoProveedor.fr3 @@ -1,10 +1,10 @@ - + - + @@ -12,9 +12,9 @@ - + - + diff --git a/Source/Informes/1/PedidoProveedor.rdx b/Source/Informes/1/PedidoProveedor.rdx index f5bd1be5e116d7fafcd80a713d5fc8d2656878bf..ce9002f12f460f3d60eb68714677582cd57cbde6 100644 GIT binary patch delta 4609 zcmb`L4Nz3q701tA9=pr;E-W952)hZg1eJnc2!1WFMj;9+euF`TXiyLbm0G_Rqlu|H zR&zBwiB2@tOxjG^scu>lr-?XeoF*~VNg}l>QmxTWYs46>Mn(ERZ}*XfF*E5*AM<_CmO1*39ppqC>@=T_;q%`Aqc#V zo23XIF-DuGR?U82MLW&E)@6RQuk--RKM2K3a9=Es1&?y~)cDuv1|)(&e;k|-BQHK*TD#p?0=~HaEl9ua>S>@&SsO@`eM8+>*U{g+ zT_K8c;FLk<#^c2TJIDapAP0;DW5GBu4U~cDU5HZNCf@BjmzzqKX3oI{qj+)uJ-r#f%XIYN#gIw zR@{ENPz@B>Wo?RGIONV0M_g24v4!dU|v#b_i?MOv&%VKG8#;(KXv5KRS7 z14@)pQT@U~)P^*}D57OmR7?)qCG>6=TaeMqun5w*Z;FtWCWrSkL$r`<%^R(H?!yr`A_yFmt=MK=xV*;~Vm=98yI4HJ}3Z%VC<9tznKAL`jHB{n4);lh~s)W&l0brR__{1vq+*~ z_Fn{ezg`P;eGN1IKWYoG=2@%Rc{0apPZ zlYfJ2;A?PQk#1X|+-`Ho$+pCb+krFv|0>sHRf0A0bl?DwH0@Lp#9dqskH^4W5kNZtID$OdFrbWa$k^~fTm;>g53a}Kc0$adVa1gu!4uL;{ z_rVw7OK=*T15sE%6EN%Xs!vB@2p9^+0e+cG1J8mr;03T5@Fz=WM`zoK*0#eZ4j(w& z+IFI?70QXWS9VZmYbR~?t0&sxTL@Blr)xcS-d~efUqe~svA-waR zZz_?;44>F7_#h3%0j?!v$(~s`u@S!M){&FK<({)SVJ;F*fiFuJ^smm23M(d^sux2a zdM+P&P>;SD`ZQ8heH!Y|ohu3}pkP%mfSz+c7xns{`ip|3!x4)vw9 z66Iy;y#ia|8CrnyBGiqX?M0LFCPYH_@E&y zyy{>QBz|AfY{*E+8c5`5s)NJ_B&~qtrCAHfG30ODWJoUC@T^=$6|UvGuL`?cEmt+w z_SpSp90Qe!=r;g+(8j8OgYc#~_Z8yl84EL>rm)zDaD%gw|i zI$@_!&klY>wOs598T|WJp_b2_3R(M3Yno4aYs^dhD}{G3PlzQ)i{*HhEq1dgi`*p= zGWa=kr$0NrH?yBfdWopl)7E3#<`9lYiE89Q_~H)nG*y*+j#+=)=y!xNI|v1nsR~=O8h0CZb{S5BuTHca z5+W$_Wt+Gmo%a-l|3BfmYZH4DxU>kZ_$NXw;2$ANfah(yNbt4$vt1@t)NKL~%IBhEo;SqB33AyvB2HfLJXWJuB0MTdelnP7@^&g4cup@u0Qq z$4|mnDKfxf9N%h$cnXei1J%LLU{f5%RfqK7V6>RDX=<|NmP4fLgw@kOL&Ud?$`Bt3 IxnD8-7Z-#k)Bpeg delta 9716 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 diff --git a/Source/Informes/2/InfAlbaranCliente.fr3 b/Source/Informes/2/InfAlbaranCliente.fr3 index 0af47dfc..ff933220 100644 --- a/Source/Informes/2/InfAlbaranCliente.fr3 +++ b/Source/Informes/2/InfAlbaranCliente.fr3 @@ -1,15 +1,15 @@ - + - + - - + + - + @@ -18,8 +18,8 @@ - - + + diff --git a/Source/Informes/2/InfAlbaranProveedor.fr3 b/Source/Informes/2/InfAlbaranProveedor.fr3 index ac2e9aa3..a243bcf3 100644 --- a/Source/Informes/2/InfAlbaranProveedor.fr3 +++ b/Source/Informes/2/InfAlbaranProveedor.fr3 @@ -1,5 +1,5 @@ - + @@ -10,20 +10,20 @@ - - + + - - + + - - + + - + diff --git a/Source/Informes/2/InfPedidoProveedor.fr3 b/Source/Informes/2/InfPedidoProveedor.fr3 index 63889b88..08edb864 100644 --- a/Source/Informes/2/InfPedidoProveedor.fr3 +++ b/Source/Informes/2/InfPedidoProveedor.fr3 @@ -1,5 +1,5 @@ - + @@ -12,21 +12,21 @@ - - - - + + + + - + - - + + - - + + diff --git a/Source/Modulos/Pedidos a proveedor/Views/PedidosProveedor_view.dpk b/Source/Modulos/Pedidos a proveedor/Views/PedidosProveedor_view.dpk index 48152ac5..0c14a28b 100644 --- a/Source/Modulos/Pedidos a proveedor/Views/PedidosProveedor_view.dpk +++ b/Source/Modulos/Pedidos a proveedor/Views/PedidosProveedor_view.dpk @@ -38,7 +38,38 @@ requires Obras_controller, PedProv_AlbProv_relation, PedProv_FacProv_relation, - GestorInformes_controller; + GestorInformes_controller, + rtl, + vcl, + dbrtl, + vcldb, + PNG_D10, + PngComponentsD10, + vclactnband, + vclx, + cxLibraryD11, + dxThemeD11, + dxGDIPlusD11, + dxCoreD11, + cxExtEditorsD11, + cxDataD11, + cxEditorsD11, + vcljpg, + DataAbstract_Core_D11, + dsnap, + adortl, + RemObjects_Core_D11, + GUISDK_D11R, + designide, + xmlrtl, + dxLayoutControlD11, + dxComnD11, + JvStdCtrlsD11R, + JclVcl, + Jcl, + JvCoreD11R, + JvSystemD11R, + JvCtrlsD11R; contains uPedidosProveedorViewRegister in 'uPedidosProveedorViewRegister.pas', @@ -57,6 +88,7 @@ contains uViewProveedorPedido in 'uViewProveedorPedido.pas' {frViewProveedorPedido: TFrame}, uEditorElegirPersonaContactoPedido in 'uEditorElegirPersonaContactoPedido.pas' {fEditorElegirPersonaContactoPedido: TfEditorSituacionPedidoProveedor}, uViewObraReserva in 'uViewObraReserva.pas' {frViewObraReserva: TFrame}, - uDialogOpcionesImpresionPedidosProveedor in 'uDialogOpcionesImpresionPedidosProveedor.pas' {fDialogOpcionesImpresionPedidosProveedor: TForm}; + uDialogOpcionesImpresionPedidosProveedor in 'uDialogOpcionesImpresionPedidosProveedor.pas' {fDialogOpcionesImpresionPedidosProveedor: TForm}, + uViewDatosYSeleccionProveedorPedido in 'uViewDatosYSeleccionProveedorPedido.pas'{frViewDatosYSeleccionProveedorPedido: TFrame}; end. diff --git a/Source/Modulos/Pedidos a proveedor/Views/PedidosProveedor_view.dproj b/Source/Modulos/Pedidos a proveedor/Views/PedidosProveedor_view.dproj index 9aeb692e..09d4bfe1 100644 --- a/Source/Modulos/Pedidos a proveedor/Views/PedidosProveedor_view.dproj +++ b/Source/Modulos/Pedidos a proveedor/Views/PedidosProveedor_view.dproj @@ -49,20 +49,45 @@ MainSource + + + + + + + + + + + + + + + + + + + + + + + + +
fDialogOpcionesImpresionPedidosProveedor
TForm @@ -100,6 +125,7 @@ TfEditorSituacionPedidoProveedor
+
frViewDetallesPedidoProveedor
TFrame @@ -128,6 +154,12 @@
frViewProveedorPedido
TFrame
+ + + + + +