From 306115550b457560dcd240f34774363996ca56b5 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 17 May 2013 14:40:44 +0000 Subject: [PATCH] =?UTF-8?q?-=20Tarea=20#1204=20->=20Poder=20generar=20un?= =?UTF-8?q?=20albar=C3=A1n=20a=20partir=20de=20un=20contrato=20-=20Cambiar?= =?UTF-8?q?=20Aspack=20por=20UX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@576 f4e31baf-9722-1c47-927c-6f952f962d4b --- Build/Build.fbpInf | 4 +- Build/Build.fbz6 | Bin 58264 -> 58109 bytes Build/Installer.fbpInf | 6 +- Build/Installer.fbz6 | Bin 12603 -> 12966 bytes Database/scripts/factuges.sql | 50 +- Source/ApplicationBase/ApplicationBase.dproj | 73 +- Source/Base/Base.dproj | 96 +- Source/Cliente/FactuGES.dproj | 3 +- Source/Cliente/FactuGES.rc | 8 +- Source/Cliente/FactuGES.res | Bin 171984 -> 171984 bytes Source/FactuGES.inc | 2 +- Source/GUIBase/GUIBase.res | Bin 384 -> 4748 bytes .../AlbaranesCliente_Group.groupproj | 26 +- .../Data/uDataModuleAlbaranesCliente.dfm | 16 + .../Model/schAlbaranesClienteClient_Intf.pas | 170 ++- .../Model/schAlbaranesClienteServer_Intf.pas | 98 +- .../Servidor/srvAlbaranesCliente_Impl.dfm | 114 +- .../Views/AlbaranesCliente_view.dpk | 4 +- .../Views/AlbaranesCliente_view.dproj | 30 +- .../Views/uEditorAlbaranCliente.dfm | 11 +- .../Views/uEditorAlbaranesCliente.dfm | 24 +- .../Views/uEditorAlbaranesCliente.pas | 32 +- .../Views/uViewAlbaranCliente.dfm | 185 +-- .../Views/uViewAlbaranCliente.pas | 51 +- .../Views/uViewAlbaranDevCliente.dfm | 172 +-- .../Views/uViewAlbaranDevCliente.pas | 2 +- .../Views/uViewAlbaranesCliente.dfm | 9 + .../Views/uViewAlbaranesCliente.pas | 1 + .../Views/uViewAlbaranesDevCliente.pas | Bin 1557 -> 1596 bytes .../Articulos/Data/Articulos_data.dproj | 2 +- .../Articulos/Views/Articulos_view.dproj | 10 +- .../ContratosCliente_Group.groupproj | 16 +- .../ContratosCliente_controller.dproj | 16 +- .../uContratosClienteController.pas | 19 +- .../Data/ContratosCliente_data.dproj | 24 +- .../Model/ContratosCliente_model.dproj | 22 +- .../Plugin/ContratosCliente_plugin.dproj | 16 +- .../Views/ContratosCliente_view.dpk | 1 + .../Views/ContratosCliente_view.dproj | 101 +- .../Views/uEditorContratosCliente.dfm | 42 +- .../Views/uEditorContratosCliente.pas | 24 +- .../Views/uEditorElegirContratosCliente.dfm | 17 +- .../Views/uEditorFacturasCliente.dfm | 16 +- .../ConCli_AlbCli_relation.dpk | 40 + .../ConCli_AlbCli_relation.dproj | 653 +++++++++++ .../ConCli_AlbCli_relation.res | Bin 0 -> 384 bytes .../uGenerarAlbaranesCliUtils.dfm | 313 +++++ .../uGenerarAlbaranesCliUtils.pas | 296 +++++ .../ConCli_FacCli_relation.dproj | 124 +- Source/Servidor/FactuGES_Server.dpr | 6 +- Source/Servidor/FactuGES_Server.dproj | 2 +- Source/Servidor/FactuGES_Server.rc | 10 +- Source/Servidor/FactuGES_Server.res | Bin 23348 -> 23344 bytes Tools/UPX/BUGS | 51 + Tools/UPX/COPYING | 339 ++++++ Tools/UPX/LICENSE | 138 +++ Tools/UPX/NEWS | 478 ++++++++ Tools/UPX/README | 142 +++ Tools/UPX/README.1ST | 23 + Tools/UPX/THANKS | 61 + Tools/UPX/TODO | 114 ++ Tools/UPX/upx.1 | 1036 +++++++++++++++++ Tools/UPX/upx.doc | 843 ++++++++++++++ Tools/UPX/upx.exe | Bin 0 -> 295936 bytes Tools/UPX/upx.html | 894 ++++++++++++++ 65 files changed, 6329 insertions(+), 747 deletions(-) create mode 100644 Source/Modulos/Relaciones/Contratos de cliente - Albaranes de cliente/ConCli_AlbCli_relation.dpk create mode 100644 Source/Modulos/Relaciones/Contratos de cliente - Albaranes de cliente/ConCli_AlbCli_relation.dproj create mode 100644 Source/Modulos/Relaciones/Contratos de cliente - Albaranes de cliente/ConCli_AlbCli_relation.res create mode 100644 Source/Modulos/Relaciones/Contratos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.dfm create mode 100644 Source/Modulos/Relaciones/Contratos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas create mode 100644 Tools/UPX/BUGS create mode 100644 Tools/UPX/COPYING create mode 100644 Tools/UPX/LICENSE create mode 100644 Tools/UPX/NEWS create mode 100644 Tools/UPX/README create mode 100644 Tools/UPX/README.1ST create mode 100644 Tools/UPX/THANKS create mode 100644 Tools/UPX/TODO create mode 100644 Tools/UPX/upx.1 create mode 100644 Tools/UPX/upx.doc create mode 100644 Tools/UPX/upx.exe create mode 100644 Tools/UPX/upx.html diff --git a/Build/Build.fbpInf b/Build/Build.fbpInf index 36e7b215..088ee318 100644 --- a/Build/Build.fbpInf +++ b/Build/Build.fbpInf @@ -14,8 +14,8 @@ - 00:03:10 - 11/04/2012 12:05:34 + 00:03:53 + 16/05/2013 15:44:27 True diff --git a/Build/Build.fbz6 b/Build/Build.fbz6 index 56f97843b67c7daf16bd546db20f874f78568988..c7d9548804abe110af665ee9f111518a0df4f461 100644 GIT binary patch literal 58109 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 T000310RTDx006Dx00000`S^$o literal 58264 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

^=DvV|g5VVrh+^i}sof5BpEW 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 - 00:00:00 - 30/12/1899 - True + 00:00:15 + 17/05/2013 15:04:17 + False diff --git a/Build/Installer.fbz6 b/Build/Installer.fbz6 index 9cb9d04f60351ef43bf015791772965638dbb353..1dc50874668ac04264d69f75d2c7afdb7161f11b 100644 GIT binary patch literal 12966 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 literal 12603 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 MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - -

fConfiguracionEditor
- + +
frViewConfiguracionBase
+ TFrame +
frViewConfiguracionGeneral
TFrame
- - - - - - diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index 95ba1f77..426db58c 100644 --- a/Source/Base/Base.dproj +++ b/Source/Base/Base.dproj @@ -58,55 +58,55 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fConfigurarConexion
TForm diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj index 7d32c92e..519bf9e4 100644 --- a/Source/Cliente/FactuGES.dproj +++ b/Source/Cliente/FactuGES.dproj @@ -52,7 +52,8 @@ Delphi.Personality VCLApplication -FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2520FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.5.2.0FactuGESFactuGES2.5.2.0 +FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2530FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.5.3.0FactuGESFactuGES2.5.3.0 + File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found FactuGES.dprFalse diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc index 6aea2108..85ecd366 100644 --- a/Source/Cliente/FactuGES.rc +++ b/Source/Cliente/FactuGES.rc @@ -1,7 +1,7 @@ MAINICON ICON "C:\Codigo Acana\Resources\Iconos\Factuges.ico" 1 VERSIONINFO -FILEVERSION 2,5,2,0 -PRODUCTVERSION 2,5,2,0 +FILEVERSION 2,5,3,0 +PRODUCTVERSION 2,5,3,0 FILEFLAGSMASK 0x3FL FILEFLAGS 0x00L FILEOS 0x40004L @@ -13,10 +13,10 @@ BEGIN BLOCK "0C0A04E4" BEGIN VALUE "CompanyName", "Rodax Software S.L.\0" - VALUE "FileVersion", "2.5.2.0\0" + VALUE "FileVersion", "2.5.3.0\0" VALUE "InternalName", "FactuGES\0" VALUE "ProductName", "FactuGES\0" - VALUE "ProductVersion", "2.5.2.0\0" + VALUE "ProductVersion", "2.5.3.0\0" END END BLOCK "VarFileInfo" diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res index f2abbcb792dbf8856c531a5a8b3720d4ee62243b..f6fb879c38280d60d13a84b9e04704a38e193982 100644 GIT binary patch delta 42 xcmcbxpXh4E_KB diff --git a/Source/FactuGES.inc b/Source/FactuGES.inc index bf434910..72603a0d 100644 --- a/Source/FactuGES.inc +++ b/Source/FactuGES.inc @@ -1,4 +1,4 @@ {$DEFINE MULTIEMPRESA} -{$DEFINE ALMACEN} +{DEFINE ALMACEN} {DEFINE PEDIDOSPROVEEDOR} {$DEFINE CONTABILIDAD} \ No newline at end of file diff --git a/Source/GUIBase/GUIBase.res b/Source/GUIBase/GUIBase.res index 8b251f312bcccec5485024f6fe8d80e1cdf25746..1641339fcc482e7e3492d1b45813a86619622c33 100644 GIT binary patch literal 4748 zcmbW5&ub)A5XUPdpe&2#;C*uNAUVhgd+&(4um@dnom`vXF9g}ZuHJ;se=<3UNdFJg zbCw+UD9j$byGIXV`~6hC>h4S?F|k9X-j90q{Z_qtZ<;nUJCO8!h?p${kR>3GhM`oH*q zk=UsjOCIgA_4!`B+Gb&`I84R)bT4dy-BQV<-SyFz?R8ILEQ(+JB$u{sEXE@j@B*7W zT;iZH#|OJ<&DO$RCkM6VbK3(B(k{nbdv1lpc;E$xz9as|v3uE1V{hw2w~g3eD0an7 z{BT%G%irdMe*|oDJmgvJaA2`9B<6Xi*?M~Q;)@Sbfwf3uf zVaWkbUjU=;sL{BlYemIZXv%qZ{SZw{-TCU+;!nH6KDDIJumU+9{E0zXW4>7T)y|>$DQlv zRJe?TjSp{c!DqeayAnSMTtZZT;>LN7J0Rls+5m@q)MbyB*eL%Eu@(+$Cw}Pd@q7N| z%Q0*AHpCP^b9v`@jx-l_FD>khpW2W8(OU2&V5TrnoAY-m_hlcV?zq3;7{2gF{J#Hc z6R+o~mVenX?>@W0@_DVzyOFs(5464CY{!q9ChoF#_*eXi@4gFuV8?vhl=_w5$iKL0 zEV0nMBcN08xtRmsgJrqjh@s#|{?*ssnsG)mH*wa6{efF0JFWHok@kA5%b661{B38= zCcgJ|*ZFTpV$8<-&+AWpa)Q8*`wL&hMeNQ^v6I7$HSdLZhZ^&+6<@Uw_Zsml9^v3W zVvPDBKHh;i=RU4J_ta3E;)Mn>Y+L zKLZ0UQ+*km9FO-b?U4gmn-62iwzH6&*duKGo~aUV)bYDla8wWZ9+^7p-F<8lP@i!m z@vhbD_${F}h>^T;C(?(b*OJDk?{dEXB?nuehoON3HAb!7Mr7-ls!84-5V-jJugbu<_$}mU=Yd9!?TOX;|B-#B)+0x#9q*yqJiqS!`49d=7ztk$O+9=1i;?K_|J<8T z?0b7=-`Z3A#vV$4XJ5(lQ~TOZHUFdA%oWvK5zg&_IKXIbughQBA8XAsd#=@|TFLXC zy(^m((;DnQmDQKatmw!@c`| G?EMQ&4NnpP delta 11 ScmeBCZD5|Duvteife`=|>;pCc diff --git a/Source/Modulos/Albaranes de cliente/AlbaranesCliente_Group.groupproj b/Source/Modulos/Albaranes de cliente/AlbaranesCliente_Group.groupproj index 6480e68e..faccdbc9 100644 --- a/Source/Modulos/Albaranes de cliente/AlbaranesCliente_Group.groupproj +++ b/Source/Modulos/Albaranes de cliente/AlbaranesCliente_Group.groupproj @@ -13,6 +13,8 @@ + + @@ -97,6 +99,24 @@ + + + + + + + + + + + + + + + + + + @@ -152,13 +172,13 @@ - + - + - + \ No newline at end of file diff --git a/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.dfm b/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.dfm index c49c7292..e3fb20bc 100644 --- a/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.dfm +++ b/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.dfm @@ -26,6 +26,11 @@ inherited DataModuleAlbaranesCliente: TDataModuleAlbaranesCliente object tbl_AlbaranesCliente: TDAMemDataTable RemoteUpdatesOptions = [] Fields = < + item + Name = 'ID_CONTRATO' + DataType = datInteger + DictionaryEntry = 'AlbaranesCliente_ID_CONTRATO' + end item Name = 'ID' DataType = datAutoInc @@ -112,6 +117,13 @@ inherited DataModuleAlbaranesCliente: TDataModuleAlbaranesCliente DisplayLabel = 'Ref. pedido cliente' DictionaryEntry = 'AlbaranesCliente_REF_PEDIDO' end + item + Name = 'REF_CONTRATO' + DataType = datString + Size = 255 + DisplayLabel = 'Ref. contrato cliente' + DictionaryEntry = 'AlbaranesCliente_REF_CONTRATO' + end item Name = 'ID_FACTURA' DataType = datInteger @@ -182,6 +194,8 @@ inherited DataModuleAlbaranesCliente: TDataModuleAlbaranesCliente Name = 'MOVIL' DataType = datString Size = 25 + DisplayLabel = 'AlbaranesCliente_MOVIL' + DictionaryEntry = 'AlbaranesCliente_MOVIL' end item Name = 'IMPORTE_NETO' @@ -222,6 +236,8 @@ inherited DataModuleAlbaranesCliente: TDataModuleAlbaranesCliente item Name = 'ID_TIPO_IVA' DataType = datInteger + DisplayLabel = 'AlbaranesCliente_ID_TIPO_IVA' + DictionaryEntry = 'AlbaranesCliente_ID_TIPO_IVA' end item Name = 'IVA' diff --git a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas index 845a062d..1a5a0fdc 100644 --- a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas +++ b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas @@ -9,9 +9,9 @@ const { Data table rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosAlbaranes = '{B52C00C6-FE82-4F51-81FA-B4FF1B82A203}'; - RID_AlbaranesCliente = '{34BC09FF-5B71-4550-8CB0-1DA569B133D7}'; - RID_AlbaranesCliente_Detalles = '{86D6C469-278B-4655-A28C-3359D8812BB1}'; + RID_ListaAnosAlbaranes = '{7EB3AC27-59E8-42B4-ADA3-CE4D9CAEB13C}'; + RID_AlbaranesCliente = '{D2DA1D56-1646-4F90-8DE9-D4B5FFE8B553}'; + RID_AlbaranesCliente_Detalles = '{BBD1F7AA-F56C-43AE-A7C7-0F58965BDF4A}'; { Data table names } nme_ListaAnosAlbaranes = 'ListaAnosAlbaranes'; @@ -25,6 +25,7 @@ const idx_ListaAnosAlbaranesANO = 0; { AlbaranesCliente fields } + fld_AlbaranesClienteID_CONTRATO = 'ID_CONTRATO'; fld_AlbaranesClienteID = 'ID'; fld_AlbaranesClienteID_EMPRESA = 'ID_EMPRESA'; fld_AlbaranesClienteID_CLIENTE = 'ID_CLIENTE'; @@ -38,6 +39,7 @@ const fld_AlbaranesClienteNOMBRE_ALMACEN = 'NOMBRE_ALMACEN'; fld_AlbaranesClienteID_PEDIDO = 'ID_PEDIDO'; fld_AlbaranesClienteREF_PEDIDO = 'REF_PEDIDO'; + fld_AlbaranesClienteREF_CONTRATO = 'REF_CONTRATO'; fld_AlbaranesClienteID_FACTURA = 'ID_FACTURA'; fld_AlbaranesClienteREF_FACTURA = 'REF_FACTURA'; fld_AlbaranesClienteID_DIRECCION = 'ID_DIRECCION'; @@ -71,50 +73,52 @@ const fld_AlbaranesClienteTIENDA = 'TIENDA'; { AlbaranesCliente field indexes } - idx_AlbaranesClienteID = 0; - idx_AlbaranesClienteID_EMPRESA = 1; - idx_AlbaranesClienteID_CLIENTE = 2; - idx_AlbaranesClienteNOMBRE = 3; - idx_AlbaranesClienteFECHA_ALBARAN = 4; - idx_AlbaranesClienteREFERENCIA = 5; - idx_AlbaranesClienteREFERENCIA_CLIENTE = 6; - idx_AlbaranesClienteTIPO = 7; - idx_AlbaranesClienteSITUACION = 8; - idx_AlbaranesClienteID_ALMACEN = 9; - idx_AlbaranesClienteNOMBRE_ALMACEN = 10; - idx_AlbaranesClienteID_PEDIDO = 11; - idx_AlbaranesClienteREF_PEDIDO = 12; - idx_AlbaranesClienteID_FACTURA = 13; - idx_AlbaranesClienteREF_FACTURA = 14; - idx_AlbaranesClienteID_DIRECCION = 15; - idx_AlbaranesClienteCALLE = 16; - idx_AlbaranesClienteCODIGO_POSTAL = 17; - idx_AlbaranesClientePOBLACION = 18; - idx_AlbaranesClientePROVINCIA = 19; - idx_AlbaranesClientePERSONA_CONTACTO = 20; - idx_AlbaranesClienteTELEFONO = 21; - idx_AlbaranesClienteMOVIL = 22; - idx_AlbaranesClienteIMPORTE_NETO = 23; - idx_AlbaranesClienteIMPORTE_PORTE = 24; - idx_AlbaranesClienteDESCUENTO = 25; - idx_AlbaranesClienteIMPORTE_DESCUENTO = 26; - idx_AlbaranesClienteBASE_IMPONIBLE = 27; - idx_AlbaranesClienteID_TIPO_IVA = 28; - idx_AlbaranesClienteIVA = 29; - idx_AlbaranesClienteIMPORTE_IVA = 30; - idx_AlbaranesClienteIMPORTE_TOTAL = 31; - idx_AlbaranesClienteOBSERVACIONES = 32; - idx_AlbaranesClienteINCIDENCIAS = 33; - idx_AlbaranesClienteINCIDENCIAS_ACTIVAS = 34; - idx_AlbaranesClienteFECHA_ALTA = 35; - idx_AlbaranesClienteFECHA_MODIFICACION = 36; - idx_AlbaranesClienteUSUARIO = 37; - idx_AlbaranesClienteID_FORMA_PAGO = 38; - idx_AlbaranesClienteFECHA_PREVISTA_ENVIO = 39; - idx_AlbaranesClienteFECHA_ENVIO = 40; - idx_AlbaranesClienteFECHA_RECEPCION = 41; - idx_AlbaranesClienteID_TIENDA = 42; - idx_AlbaranesClienteTIENDA = 43; + idx_AlbaranesClienteID_CONTRATO = 0; + idx_AlbaranesClienteID = 1; + idx_AlbaranesClienteID_EMPRESA = 2; + idx_AlbaranesClienteID_CLIENTE = 3; + idx_AlbaranesClienteNOMBRE = 4; + idx_AlbaranesClienteFECHA_ALBARAN = 5; + idx_AlbaranesClienteREFERENCIA = 6; + idx_AlbaranesClienteREFERENCIA_CLIENTE = 7; + idx_AlbaranesClienteTIPO = 8; + idx_AlbaranesClienteSITUACION = 9; + idx_AlbaranesClienteID_ALMACEN = 10; + idx_AlbaranesClienteNOMBRE_ALMACEN = 11; + idx_AlbaranesClienteID_PEDIDO = 12; + idx_AlbaranesClienteREF_PEDIDO = 13; + idx_AlbaranesClienteREF_CONTRATO = 14; + idx_AlbaranesClienteID_FACTURA = 15; + idx_AlbaranesClienteREF_FACTURA = 16; + idx_AlbaranesClienteID_DIRECCION = 17; + idx_AlbaranesClienteCALLE = 18; + idx_AlbaranesClienteCODIGO_POSTAL = 19; + idx_AlbaranesClientePOBLACION = 20; + idx_AlbaranesClientePROVINCIA = 21; + idx_AlbaranesClientePERSONA_CONTACTO = 22; + idx_AlbaranesClienteTELEFONO = 23; + idx_AlbaranesClienteMOVIL = 24; + idx_AlbaranesClienteIMPORTE_NETO = 25; + idx_AlbaranesClienteIMPORTE_PORTE = 26; + idx_AlbaranesClienteDESCUENTO = 27; + idx_AlbaranesClienteIMPORTE_DESCUENTO = 28; + idx_AlbaranesClienteBASE_IMPONIBLE = 29; + idx_AlbaranesClienteID_TIPO_IVA = 30; + idx_AlbaranesClienteIVA = 31; + idx_AlbaranesClienteIMPORTE_IVA = 32; + idx_AlbaranesClienteIMPORTE_TOTAL = 33; + idx_AlbaranesClienteOBSERVACIONES = 34; + idx_AlbaranesClienteINCIDENCIAS = 35; + idx_AlbaranesClienteINCIDENCIAS_ACTIVAS = 36; + idx_AlbaranesClienteFECHA_ALTA = 37; + idx_AlbaranesClienteFECHA_MODIFICACION = 38; + idx_AlbaranesClienteUSUARIO = 39; + idx_AlbaranesClienteID_FORMA_PAGO = 40; + idx_AlbaranesClienteFECHA_PREVISTA_ENVIO = 41; + idx_AlbaranesClienteFECHA_ENVIO = 42; + idx_AlbaranesClienteFECHA_RECEPCION = 43; + idx_AlbaranesClienteID_TIENDA = 44; + idx_AlbaranesClienteTIENDA = 45; { AlbaranesCliente_Detalles fields } fld_AlbaranesCliente_DetallesID = 'ID'; @@ -151,7 +155,7 @@ const type { IListaAnosAlbaranes } IListaAnosAlbaranes = interface(IDAStronglyTypedDataTable) - ['{88848224-91B5-41B0-A2FC-54BCF8BF5AE8}'] + ['{203EE597-D0C7-4604-A953-891F0E3D98FF}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -186,8 +190,12 @@ type { IAlbaranesCliente } IAlbaranesCliente = interface(IDAStronglyTypedDataTable) - ['{DFD09690-9B1D-4BE5-9101-46589DF1E88E}'] + ['{D6D78EF6-CA78-4ED9-B294-D1D466E1726B}'] { Property getters and setters } + function GetID_CONTRATOValue: Integer; + procedure SetID_CONTRATOValue(const aValue: Integer); + function GetID_CONTRATOIsNull: Boolean; + procedure SetID_CONTRATOIsNull(const aValue: Boolean); function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); function GetIDIsNull: Boolean; @@ -240,6 +248,10 @@ type procedure SetREF_PEDIDOValue(const aValue: String); function GetREF_PEDIDOIsNull: Boolean; procedure SetREF_PEDIDOIsNull(const aValue: Boolean); + function GetREF_CONTRATOValue: String; + procedure SetREF_CONTRATOValue(const aValue: String); + function GetREF_CONTRATOIsNull: Boolean; + procedure SetREF_CONTRATOIsNull(const aValue: Boolean); function GetID_FACTURAValue: Integer; procedure SetID_FACTURAValue(const aValue: Integer); function GetID_FACTURAIsNull: Boolean; @@ -365,6 +377,8 @@ type { Properties } + property ID_CONTRATO: Integer read GetID_CONTRATOValue write SetID_CONTRATOValue; + property ID_CONTRATOIsNull: Boolean read GetID_CONTRATOIsNull write SetID_CONTRATOIsNull; property ID: Integer read GetIDValue write SetIDValue; property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; @@ -391,6 +405,8 @@ type property ID_PEDIDOIsNull: Boolean read GetID_PEDIDOIsNull write SetID_PEDIDOIsNull; property REF_PEDIDO: String read GetREF_PEDIDOValue write SetREF_PEDIDOValue; property REF_PEDIDOIsNull: Boolean read GetREF_PEDIDOIsNull write SetREF_PEDIDOIsNull; + property REF_CONTRATO: String read GetREF_CONTRATOValue write SetREF_CONTRATOValue; + property REF_CONTRATOIsNull: Boolean read GetREF_CONTRATOIsNull write SetREF_CONTRATOIsNull; property ID_FACTURA: Integer read GetID_FACTURAValue write SetID_FACTURAValue; property ID_FACTURAIsNull: Boolean read GetID_FACTURAIsNull write SetID_FACTURAIsNull; property REF_FACTURA: String read GetREF_FACTURAValue write SetREF_FACTURAValue; @@ -464,6 +480,10 @@ type procedure INCIDENCIAS_OnChange(Sender: TObject); protected { Property getters and setters } + function GetID_CONTRATOValue: Integer; virtual; + procedure SetID_CONTRATOValue(const aValue: Integer); virtual; + function GetID_CONTRATOIsNull: Boolean; virtual; + procedure SetID_CONTRATOIsNull(const aValue: Boolean); virtual; function GetIDValue: Integer; virtual; procedure SetIDValue(const aValue: Integer); virtual; function GetIDIsNull: Boolean; virtual; @@ -516,6 +536,10 @@ type procedure SetREF_PEDIDOValue(const aValue: String); virtual; function GetREF_PEDIDOIsNull: Boolean; virtual; procedure SetREF_PEDIDOIsNull(const aValue: Boolean); virtual; + function GetREF_CONTRATOValue: String; virtual; + procedure SetREF_CONTRATOValue(const aValue: String); virtual; + function GetREF_CONTRATOIsNull: Boolean; virtual; + procedure SetREF_CONTRATOIsNull(const aValue: Boolean); virtual; function GetID_FACTURAValue: Integer; virtual; procedure SetID_FACTURAValue(const aValue: Integer); virtual; function GetID_FACTURAIsNull: Boolean; virtual; @@ -640,6 +664,8 @@ type procedure SetTIENDAIsNull(const aValue: Boolean); virtual; { Properties } + property ID_CONTRATO: Integer read GetID_CONTRATOValue write SetID_CONTRATOValue; + property ID_CONTRATOIsNull: Boolean read GetID_CONTRATOIsNull write SetID_CONTRATOIsNull; property ID: Integer read GetIDValue write SetIDValue; property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; @@ -666,6 +692,8 @@ type property ID_PEDIDOIsNull: Boolean read GetID_PEDIDOIsNull write SetID_PEDIDOIsNull; property REF_PEDIDO: String read GetREF_PEDIDOValue write SetREF_PEDIDOValue; property REF_PEDIDOIsNull: Boolean read GetREF_PEDIDOIsNull write SetREF_PEDIDOIsNull; + property REF_CONTRATO: String read GetREF_CONTRATOValue write SetREF_CONTRATOValue; + property REF_CONTRATOIsNull: Boolean read GetREF_CONTRATOIsNull write SetREF_CONTRATOIsNull; property ID_FACTURA: Integer read GetID_FACTURAValue write SetID_FACTURAValue; property ID_FACTURAIsNull: Boolean read GetID_FACTURAIsNull write SetID_FACTURAIsNull; property REF_FACTURA: String read GetREF_FACTURAValue write SetREF_FACTURAValue; @@ -737,7 +765,7 @@ type { IAlbaranesCliente_Detalles } IAlbaranesCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{B45193BD-105D-44E3-AF4D-BB43F4A1D1CA}'] + ['{020AD67D-D6F1-4E13-962A-E7B9FE5F4C5E}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -994,6 +1022,27 @@ begin if DataTable.Editing then DataTable.Fields[idx_AlbaranesClienteINCIDENCIAS].AsVariant := TStringList(Sender).Text; end; +function TAlbaranesClienteDataTableRules.GetID_CONTRATOValue: Integer; +begin + result := DataTable.Fields[idx_AlbaranesClienteID_CONTRATO].AsInteger; +end; + +procedure TAlbaranesClienteDataTableRules.SetID_CONTRATOValue(const aValue: Integer); +begin + DataTable.Fields[idx_AlbaranesClienteID_CONTRATO].AsInteger := aValue; +end; + +function TAlbaranesClienteDataTableRules.GetID_CONTRATOIsNull: boolean; +begin + result := DataTable.Fields[idx_AlbaranesClienteID_CONTRATO].IsNull; +end; + +procedure TAlbaranesClienteDataTableRules.SetID_CONTRATOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_AlbaranesClienteID_CONTRATO].AsVariant := Null; +end; + function TAlbaranesClienteDataTableRules.GetIDValue: Integer; begin result := DataTable.Fields[idx_AlbaranesClienteID].AsInteger; @@ -1267,6 +1316,27 @@ begin DataTable.Fields[idx_AlbaranesClienteREF_PEDIDO].AsVariant := Null; end; +function TAlbaranesClienteDataTableRules.GetREF_CONTRATOValue: String; +begin + result := DataTable.Fields[idx_AlbaranesClienteREF_CONTRATO].AsString; +end; + +procedure TAlbaranesClienteDataTableRules.SetREF_CONTRATOValue(const aValue: String); +begin + DataTable.Fields[idx_AlbaranesClienteREF_CONTRATO].AsString := aValue; +end; + +function TAlbaranesClienteDataTableRules.GetREF_CONTRATOIsNull: boolean; +begin + result := DataTable.Fields[idx_AlbaranesClienteREF_CONTRATO].IsNull; +end; + +procedure TAlbaranesClienteDataTableRules.SetREF_CONTRATOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_AlbaranesClienteREF_CONTRATO].AsVariant := Null; +end; + function TAlbaranesClienteDataTableRules.GetID_FACTURAValue: Integer; begin result := DataTable.Fields[idx_AlbaranesClienteID_FACTURA].AsInteger; diff --git a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas index 5be1a8e8..119cd060 100644 --- a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas +++ b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas @@ -9,14 +9,14 @@ const { Delta rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosAlbaranesDelta = '{D19A666D-8DA1-4DA3-9C5E-70934F26B596}'; - RID_AlbaranesClienteDelta = '{EC9EB4AE-4745-4CE3-83EB-C57CAA4CCFCD}'; - RID_AlbaranesCliente_DetallesDelta = '{0B383F46-915A-4744-915D-0986E32003B3}'; + RID_ListaAnosAlbaranesDelta = '{B498D9C0-EE0A-46DA-A371-702D825BDB3A}'; + RID_AlbaranesClienteDelta = '{D704D54E-00E5-4A35-B737-A915BB515300}'; + RID_AlbaranesCliente_DetallesDelta = '{999E4300-FF31-4EA7-B81E-287E2000B1BD}'; type { IListaAnosAlbaranesDelta } IListaAnosAlbaranesDelta = interface(IListaAnosAlbaranes) - ['{D19A666D-8DA1-4DA3-9C5E-70934F26B596}'] + ['{B498D9C0-EE0A-46DA-A371-702D825BDB3A}'] { Property getters and setters } function GetOldANOValue : String; @@ -50,8 +50,9 @@ type { IAlbaranesClienteDelta } IAlbaranesClienteDelta = interface(IAlbaranesCliente) - ['{EC9EB4AE-4745-4CE3-83EB-C57CAA4CCFCD}'] + ['{D704D54E-00E5-4A35-B737-A915BB515300}'] { Property getters and setters } + function GetOldID_CONTRATOValue : Integer; function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; function GetOldID_CLIENTEValue : Integer; @@ -65,6 +66,7 @@ type function GetOldNOMBRE_ALMACENValue : String; function GetOldID_PEDIDOValue : Integer; function GetOldREF_PEDIDOValue : String; + function GetOldREF_CONTRATOValue : String; function GetOldID_FACTURAValue : Integer; function GetOldREF_FACTURAValue : String; function GetOldID_DIRECCIONValue : Integer; @@ -98,6 +100,7 @@ type function GetOldTIENDAValue : String; { Properties } + property OldID_CONTRATO : Integer read GetOldID_CONTRATOValue; property OldID : Integer read GetOldIDValue; property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; property OldID_CLIENTE : Integer read GetOldID_CLIENTEValue; @@ -111,6 +114,7 @@ type property OldNOMBRE_ALMACEN : String read GetOldNOMBRE_ALMACENValue; property OldID_PEDIDO : Integer read GetOldID_PEDIDOValue; property OldREF_PEDIDO : String read GetOldREF_PEDIDOValue; + property OldREF_CONTRATO : String read GetOldREF_CONTRATOValue; property OldID_FACTURA : Integer read GetOldID_FACTURAValue; property OldREF_FACTURA : String read GetOldREF_FACTURAValue; property OldID_DIRECCION : Integer read GetOldID_DIRECCIONValue; @@ -153,6 +157,12 @@ type procedure INCIDENCIAS_OnChange(Sender: TObject); protected { Property getters and setters } + function GetID_CONTRATOValue: Integer; virtual; + function GetID_CONTRATOIsNull: Boolean; virtual; + function GetOldID_CONTRATOValue: Integer; virtual; + function GetOldID_CONTRATOIsNull: Boolean; virtual; + procedure SetID_CONTRATOValue(const aValue: Integer); virtual; + procedure SetID_CONTRATOIsNull(const aValue: Boolean); virtual; function GetIDValue: Integer; virtual; function GetIDIsNull: Boolean; virtual; function GetOldIDValue: Integer; virtual; @@ -231,6 +241,12 @@ type function GetOldREF_PEDIDOIsNull: Boolean; virtual; procedure SetREF_PEDIDOValue(const aValue: String); virtual; procedure SetREF_PEDIDOIsNull(const aValue: Boolean); virtual; + function GetREF_CONTRATOValue: String; virtual; + function GetREF_CONTRATOIsNull: Boolean; virtual; + function GetOldREF_CONTRATOValue: String; virtual; + function GetOldREF_CONTRATOIsNull: Boolean; virtual; + procedure SetREF_CONTRATOValue(const aValue: String); virtual; + procedure SetREF_CONTRATOIsNull(const aValue: Boolean); virtual; function GetID_FACTURAValue: Integer; virtual; function GetID_FACTURAIsNull: Boolean; virtual; function GetOldID_FACTURAValue: Integer; virtual; @@ -417,6 +433,10 @@ type procedure SetTIENDAIsNull(const aValue: Boolean); virtual; { Properties } + property ID_CONTRATO : Integer read GetID_CONTRATOValue write SetID_CONTRATOValue; + property ID_CONTRATOIsNull : Boolean read GetID_CONTRATOIsNull write SetID_CONTRATOIsNull; + property OldID_CONTRATO : Integer read GetOldID_CONTRATOValue; + property OldID_CONTRATOIsNull : Boolean read GetOldID_CONTRATOIsNull; property ID : Integer read GetIDValue write SetIDValue; property IDIsNull : Boolean read GetIDIsNull write SetIDIsNull; property OldID : Integer read GetOldIDValue; @@ -469,6 +489,10 @@ type property REF_PEDIDOIsNull : Boolean read GetREF_PEDIDOIsNull write SetREF_PEDIDOIsNull; property OldREF_PEDIDO : String read GetOldREF_PEDIDOValue; property OldREF_PEDIDOIsNull : Boolean read GetOldREF_PEDIDOIsNull; + property REF_CONTRATO : String read GetREF_CONTRATOValue write SetREF_CONTRATOValue; + property REF_CONTRATOIsNull : Boolean read GetREF_CONTRATOIsNull write SetREF_CONTRATOIsNull; + property OldREF_CONTRATO : String read GetOldREF_CONTRATOValue; + property OldREF_CONTRATOIsNull : Boolean read GetOldREF_CONTRATOIsNull; property ID_FACTURA : Integer read GetID_FACTURAValue write SetID_FACTURAValue; property ID_FACTURAIsNull : Boolean read GetID_FACTURAIsNull write SetID_FACTURAIsNull; property OldID_FACTURA : Integer read GetOldID_FACTURAValue; @@ -602,7 +626,7 @@ type { IAlbaranesCliente_DetallesDelta } IAlbaranesCliente_DetallesDelta = interface(IAlbaranesCliente_Detalles) - ['{0B383F46-915A-4744-915D-0986E32003B3}'] + ['{999E4300-FF31-4EA7-B81E-287E2000B1BD}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_ALBARANValue : Integer; @@ -869,6 +893,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteINCIDENCIAS] := TStringList(Sender).Text; end; +function TAlbaranesClienteBusinessProcessorRules.GetID_CONTRATOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteID_CONTRATO]; +end; + +function TAlbaranesClienteBusinessProcessorRules.GetID_CONTRATOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteID_CONTRATO]); +end; + +function TAlbaranesClienteBusinessProcessorRules.GetOldID_CONTRATOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranesClienteID_CONTRATO]; +end; + +function TAlbaranesClienteBusinessProcessorRules.GetOldID_CONTRATOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranesClienteID_CONTRATO]); +end; + +procedure TAlbaranesClienteBusinessProcessorRules.SetID_CONTRATOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteID_CONTRATO] := aValue; +end; + +procedure TAlbaranesClienteBusinessProcessorRules.SetID_CONTRATOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteID_CONTRATO] := Null; +end; + function TAlbaranesClienteBusinessProcessorRules.GetIDValue: Integer; begin result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteID]; @@ -1272,6 +1327,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteREF_PEDIDO] := Null; end; +function TAlbaranesClienteBusinessProcessorRules.GetREF_CONTRATOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteREF_CONTRATO]; +end; + +function TAlbaranesClienteBusinessProcessorRules.GetREF_CONTRATOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteREF_CONTRATO]); +end; + +function TAlbaranesClienteBusinessProcessorRules.GetOldREF_CONTRATOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranesClienteREF_CONTRATO]; +end; + +function TAlbaranesClienteBusinessProcessorRules.GetOldREF_CONTRATOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranesClienteREF_CONTRATO]); +end; + +procedure TAlbaranesClienteBusinessProcessorRules.SetREF_CONTRATOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteREF_CONTRATO] := aValue; +end; + +procedure TAlbaranesClienteBusinessProcessorRules.SetREF_CONTRATOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteREF_CONTRATO] := Null; +end; + function TAlbaranesClienteBusinessProcessorRules.GetID_FACTURAValue: Integer; begin result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteID_FACTURA]; diff --git a/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm b/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm index 434c5b4b..b2c226b5 100644 --- a/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm +++ b/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm @@ -223,10 +223,23 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente item DatasetField = 'MOVIL' TableField = 'MOVIL' + end + item + DatasetField = 'ID_CONTRATO' + TableField = 'ID_CONTRATO' + end + item + DatasetField = 'REF_CONTRATO' + TableField = 'REF_CONTRATO' end> end> Name = 'AlbaranesCliente' Fields = < + item + Name = 'ID_CONTRATO' + DataType = datInteger + DictionaryEntry = 'AlbaranesCliente_ID_CONTRATO' + end item Name = 'ID' DataType = datAutoInc @@ -304,6 +317,12 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente Size = 255 DictionaryEntry = 'AlbaranesCliente_REF_PEDIDO' end + item + Name = 'REF_CONTRATO' + DataType = datString + Size = 255 + DictionaryEntry = 'AlbaranesCliente_REF_CONTRATO' + end item Name = 'ID_FACTURA' DataType = datInteger @@ -366,6 +385,7 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente Name = 'MOVIL' DataType = datString Size = 25 + DictionaryEntry = 'AlbaranesCliente_MOVIL' end item Name = 'IMPORTE_NETO' @@ -395,6 +415,7 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente item Name = 'ID_TIPO_IVA' DataType = datInteger + DictionaryEntry = 'AlbaranesCliente_ID_TIPO_IVA' end item Name = 'IVA' @@ -686,6 +707,11 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente DataType = datInteger Value = '' end + item + Name = 'ID_CONTRATO' + DataType = datInteger + Value = '' + end item Name = 'ID_FACTURA' DataType = datInteger @@ -837,22 +863,23 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente SQL = 'INSERT'#10' INTO ALBARANES_CLIENTE'#10' (ID, ID_EMPRESA, ID_CLIENTE,' + ' FECHA_ALBARAN, TIPO, REFERENCIA,'#10' REFERENCIA_CLIENTE, ID_AL' + - 'MACEN, ID_PEDIDO, ID_FACTURA, ID_DIRECCION,'#10' CALLE, CODIGO_P' + - 'OSTAL, POBLACION, PROVINCIA, PERSONA_CONTACTO,'#10' TELEFONO, MO' + - 'VIL, IMPORTE_NETO, IMPORTE_PORTE, DESCUENTO, IMPORTE_DESCUENTO,'#10 + - ' BASE_IMPONIBLE, IVA, IMPORTE_IVA, IMPORTE_TOTAL, OBSERVACIO' + - 'NES, '#10' INCIDENCIAS, INCIDENCIAS_ACTIVAS, FECHA_ALTA, FECHA_M' + - 'ODIFICACION, '#10' USUARIO, ID_FORMA_PAGO, FECHA_PREVISTA_ENVIO,' + - ' FECHA_ENVIO, '#10' FECHA_RECEPCION, ID_TIENDA)'#10' VALUES'#10' (:I' + - 'D, :ID_EMPRESA, :ID_CLIENTE, :FECHA_ALBARAN, :TIPO, :REFERENCIA,' + - #10' :REFERENCIA_CLIENTE, :ID_ALMACEN, :ID_PEDIDO, :ID_FACTURA,' + - ' :ID_DIRECCION,'#10' :CALLE, :CODIGO_POSTAL, :POBLACION, :PROVIN' + - 'CIA, :PERSONA_CONTACTO,'#10' :TELEFONO, :MOVIL, :IMPORTE_NETO, :' + - 'IMPORTE_PORTE, :DESCUENTO, :IMPORTE_DESCUENTO,'#10' :BASE_IMPONI' + - 'BLE, :IVA, :IMPORTE_IVA, :IMPORTE_TOTAL, :OBSERVACIONES,'#10' :I' + - 'NCIDENCIAS, :INCIDENCIAS_ACTIVAS, CURRENT_TIMESTAMP, :FECHA_MODI' + - 'FICACION,'#10' :USUARIO, :ID_FORMA_PAGO, :FECHA_PREVISTA_ENVIO, ' + - ':FECHA_ENVIO, :FECHA_RECEPCION,'#10' :ID_TIENDA)'#10' '#10' '#10#10 + 'MACEN, ID_PEDIDO, ID_FACTURA, ID_CONTRATO, ID_DIRECCION,'#10' CA' + + 'LLE, CODIGO_POSTAL, POBLACION, PROVINCIA, PERSONA_CONTACTO,'#10' ' + + ' TELEFONO, MOVIL, IMPORTE_NETO, IMPORTE_PORTE, DESCUENTO, IMPORT' + + 'E_DESCUENTO,'#10' BASE_IMPONIBLE, IVA, IMPORTE_IVA, IMPORTE_TOTA' + + 'L, OBSERVACIONES, '#10' INCIDENCIAS, INCIDENCIAS_ACTIVAS, FECHA_' + + 'ALTA, FECHA_MODIFICACION, '#10' USUARIO, ID_FORMA_PAGO, FECHA_PR' + + 'EVISTA_ENVIO, FECHA_ENVIO, '#10' FECHA_RECEPCION, ID_TIENDA)'#10' V' + + 'ALUES'#10' (:ID, :ID_EMPRESA, :ID_CLIENTE, :FECHA_ALBARAN, :TIPO,' + + ' :REFERENCIA,'#10' :REFERENCIA_CLIENTE, :ID_ALMACEN, :ID_PEDIDO,' + + ' :ID_FACTURA, :ID_CONTRATO, :ID_DIRECCION,'#10' :CALLE, :CODIGO_' + + 'POSTAL, :POBLACION, :PROVINCIA, :PERSONA_CONTACTO,'#10' :TELEFON' + + 'O, :MOVIL, :IMPORTE_NETO, :IMPORTE_PORTE, :DESCUENTO, :IMPORTE_D' + + 'ESCUENTO,'#10' :BASE_IMPONIBLE, :IVA, :IMPORTE_IVA, :IMPORTE_TOT' + + 'AL, :OBSERVACIONES,'#10' :INCIDENCIAS, :INCIDENCIAS_ACTIVAS, CUR' + + 'RENT_TIMESTAMP, :FECHA_MODIFICACION,'#10' :USUARIO, :ID_FORMA_PA' + + 'GO, :FECHA_PREVISTA_ENVIO, :FECHA_ENVIO, :FECHA_RECEPCION,'#10' ' + + ':ID_TIENDA)'#10' '#10' '#10#10 StatementType = stSQL ColumnMappings = <> end> @@ -877,6 +904,11 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente end item Params = < + item + Name = 'ID_CONTRATO' + DataType = datInteger + Value = '' + end item Name = 'ID_EMPRESA' DataType = datInteger @@ -1073,21 +1105,21 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente #10' TIPO = :TIPO,'#10' REFERENCIA = :REFERENCIA, '#10' REFERENCIA' + '_CLIENTE = :REFERENCIA_CLIENTE, '#10' ID_ALMACEN = :ID_ALMACEN,'#10' ' + ' ID_PEDIDO = :ID_PEDIDO,'#10' ID_FACTURA = :ID_FACTURA,'#10' ID_' + - 'DIRECCION = :ID_DIRECCION,'#10' CALLE = :CALLE,'#10' CODIGO_POSTAL' + - ' = :CODIGO_POSTAL, '#10' POBLACION = :POBLACION, '#10' PROVINCIA =' + - ' :PROVINCIA, '#10' PERSONA_CONTACTO = :PERSONA_CONTACTO, '#10' TEL' + - 'EFONO = :TELEFONO, '#10' MOVIL = :MOVIL,'#10' IMPORTE_NETO = :IMPO' + - 'RTE_NETO, '#10' IMPORTE_PORTE = :IMPORTE_PORTE, '#10' DESCUENTO = ' + - ':DESCUENTO, '#10' IMPORTE_DESCUENTO = :IMPORTE_DESCUENTO, '#10' BA' + - 'SE_IMPONIBLE = :BASE_IMPONIBLE, '#10' IVA = :IVA, '#10' IMPORTE_IV' + - 'A = :IMPORTE_IVA, '#10' IMPORTE_TOTAL = :IMPORTE_TOTAL, '#10' OBSE' + - 'RVACIONES = :OBSERVACIONES, '#10' INCIDENCIAS = :INCIDENCIAS, '#10' ' + - ' INCIDENCIAS_ACTIVAS = :INCIDENCIAS_ACTIVAS, '#10' FECHA_MODIFIC' + - 'ACION = CURRENT_TIMESTAMP,'#10' USUARIO = :USUARIO, '#10' ID_FORMA' + - '_PAGO = :ID_FORMA_PAGO, '#10' FECHA_PREVISTA_ENVIO = :FECHA_PREVI' + - 'STA_ENVIO, '#10' FECHA_ENVIO = :FECHA_ENVIO, '#10' FECHA_RECEPCION' + - ' = :FECHA_RECEPCION,'#10' ID_TIENDA = :ID_TIENDA'#10' WHERE'#10' (ID ' + - '= :OLD_ID)'#10 + 'CONTRATO = :ID_CONTRATO,'#10' ID_DIRECCION = :ID_DIRECCION,'#10' C' + + 'ALLE = :CALLE,'#10' CODIGO_POSTAL = :CODIGO_POSTAL, '#10' POBLACIO' + + 'N = :POBLACION, '#10' PROVINCIA = :PROVINCIA, '#10' PERSONA_CONTAC' + + 'TO = :PERSONA_CONTACTO, '#10' TELEFONO = :TELEFONO, '#10' MOVIL = ' + + ':MOVIL,'#10' IMPORTE_NETO = :IMPORTE_NETO, '#10' IMPORTE_PORTE = :' + + 'IMPORTE_PORTE, '#10' DESCUENTO = :DESCUENTO, '#10' IMPORTE_DESCUEN' + + 'TO = :IMPORTE_DESCUENTO, '#10' BASE_IMPONIBLE = :BASE_IMPONIBLE, ' + + #10' IVA = :IVA, '#10' IMPORTE_IVA = :IMPORTE_IVA, '#10' IMPORTE_T' + + 'OTAL = :IMPORTE_TOTAL, '#10' OBSERVACIONES = :OBSERVACIONES, '#10' ' + + ' INCIDENCIAS = :INCIDENCIAS, '#10' INCIDENCIAS_ACTIVAS = :INCIDEN' + + 'CIAS_ACTIVAS, '#10' FECHA_MODIFICACION = CURRENT_TIMESTAMP,'#10' U' + + 'SUARIO = :USUARIO, '#10' ID_FORMA_PAGO = :ID_FORMA_PAGO, '#10' FEC' + + 'HA_PREVISTA_ENVIO = :FECHA_PREVISTA_ENVIO, '#10' FECHA_ENVIO = :F' + + 'ECHA_ENVIO, '#10' FECHA_RECEPCION = :FECHA_RECEPCION,'#10' ID_TIEN' + + 'DA = :ID_TIENDA'#10' WHERE'#10' (ID = :OLD_ID)'#10 StatementType = stSQL ColumnMappings = <> end> @@ -1685,6 +1717,26 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente DataType = datString Size = 255 ServerAutoRefresh = True + end + item + Name = 'AlbaranesCliente_ID_CONTRATO' + DataType = datInteger + DisplayLabel = 'ID_CONTRATO' + end + item + Name = 'AlbaranesCliente_REF_CONTRATO' + DataType = datString + Size = 255 + DisplayLabel = 'Ref. contrato cliente' + end + item + Name = 'AlbaranesCliente_MOVIL' + DataType = datString + Size = 25 + end + item + Name = 'AlbaranesCliente_ID_TIPO_IVA' + DataType = datInteger end> Left = 48 Top = 136 diff --git a/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dpk b/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dpk index 780c6ac5..f4f071fb 100644 --- a/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dpk +++ b/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dpk @@ -32,7 +32,9 @@ requires AlbaranesCliente_controller, Articulos_view, Almacenes_controller, - AlbCli_FacCli_relation; + AlbCli_FacCli_relation, + ContratosCliente_controller, + ConCli_AlbCli_relation; contains uAlbaranesClienteViewRegister in 'uAlbaranesClienteViewRegister.pas', diff --git a/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dproj b/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dproj index 2f756bc7..3f152c59 100644 --- a/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dproj +++ b/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dproj @@ -43,6 +43,18 @@ Package FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + + + + + + + + + + + File c:\archivos de programa\borland\delphi10\Bin\dclIntraweb_80_100.bpl not found File c:\archivos de programa\borland\delphi10\Bin\dclnet100.bpl not found File c:\archivos de programa\borland\delphi10\Bin\dclsoap100.bpl not found @@ -54,14 +66,16 @@ MainSource - - - - - - - - + + + + + + + + + +
fEditorAlbaranCliente
diff --git a/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranCliente.dfm b/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranCliente.dfm index 14d8c4dc..4e4c1438 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranCliente.dfm +++ b/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranCliente.dfm @@ -201,12 +201,19 @@ inherited fEditorAlbaranCliente: TfEditorAlbaranCliente inherited TBXDock1: TTBXDock Width = 751 ExplicitWidth = 751 + inherited TBXToolbar1: TTBXToolbar + ExplicitWidth = 548 + end end end end object pagInicidencias: TTabSheet Caption = 'Incidencias' ImageIndex = 2 + ExplicitLeft = 0 + ExplicitTop = 0 + ExplicitWidth = 0 + ExplicitHeight = 0 inline frViewIncidenciasCli: TfrViewIncidencias Left = 0 Top = 0 @@ -441,10 +448,6 @@ inherited fEditorAlbaranCliente: TfEditorAlbaranCliente inherited PnlComentario: TPanel [5] Width = 765 ExplicitWidth = 765 - inherited lbComentario: TLabel - Width = 755 - Height = 25 - end end inherited EditorActionList: TActionList [9] Left = 32 diff --git a/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.dfm b/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.dfm index ebbb83c2..080e53b9 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.dfm +++ b/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.dfm @@ -2,7 +2,6 @@ inherited fEditorAlbaranesCliente: TfEditorAlbaranesCliente Caption = 'Lista de albaranes de cliente' ClientWidth = 583 ExplicitWidth = 591 - ExplicitHeight = 240 PixelsPerInch = 96 TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader @@ -148,7 +147,7 @@ inherited fEditorAlbaranesCliente: TfEditorAlbaranesCliente Left = 431 Visible = True ExplicitLeft = 431 - ExplicitWidth = 152 + ExplicitWidth = 129 object TBXItem42: TTBXItem Action = actEnviar DisplayMode = nbdmImageAndText @@ -202,28 +201,36 @@ inherited fEditorAlbaranesCliente: TfEditorAlbaranesCliente object actEnviar: TAction Category = 'Acciones' Caption = 'Enviar albar'#225'n...' + Enabled = False ImageIndex = 23 + Visible = False OnExecute = actEnviarExecute OnUpdate = actEnviarUpdate end object actCancelarEnvio: TAction Category = 'Acciones' Caption = 'Cancelar envio' + Enabled = False ImageIndex = 23 + Visible = False OnExecute = actCancelarEnvioExecute OnUpdate = actCancelarEnvioUpdate end object actConfirmarRecepcion: TAction Category = 'Acciones' Caption = 'Confirmar recepcion' + Enabled = False ImageIndex = 23 + Visible = False OnExecute = actConfirmarRecepcionExecute OnUpdate = actConfirmarRecepcionUpdate end object actGenerarEtiquetas: TAction Category = 'Acciones' Caption = 'Generar etiquetas' + Enabled = False ImageIndex = 23 + Visible = False OnExecute = actGenerarEtiquetasExecute OnUpdate = actGenerarEtiquetasUpdate end @@ -1672,10 +1679,7 @@ inherited fEditorAlbaranesCliente: TfEditorAlbaranesCliente object N4: TMenuItem [5] Caption = '-' end - object Serviralbarn1: TMenuItem [6] - Action = actEnviar - end - object Generarfactura1: TMenuItem [7] + object Generarfactura1: TMenuItem [6] Action = actGenerarFactura end end @@ -1749,12 +1753,12 @@ inherited fEditorAlbaranesCliente: TfEditorAlbaranesCliente Value = 100 end item - Caption = 'Utilizar un pedido de cliente.' - Value = 200 + Caption = 'Utilizar un contrato de cliente.' + Value = 300 Info.Strings = ( - 'Puede utilizar un pedido de cliente existente para dar de alta e' + - 'l albar'#225'n nuevo.') + 'Puede utilizar un contrato de cliente existente para dar de alta' + + ' el albar'#225'n nuevo.') end> ButtonBar.Buttons = [cbCancel] MainIcon = tdiCustom diff --git a/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas b/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas index fea01f7e..e10da2f3 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas +++ b/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas @@ -22,7 +22,6 @@ type Generarfactura1: TMenuItem; TBXSeparatorItem17: TTBXSeparatorItem; actEnviar: TAction; - Serviralbarn1: TMenuItem; JsImprimirDialog: TJSDialog; JsPrevisualizarDialog: TJSDialog; actCancelarEnvio: TAction; @@ -85,11 +84,8 @@ implementation uses uDataModuleAlbaranesCliente, uDataModuleUsuarios, uFactuGES_App, -//En tecsitel no estaran habilitados los pedidos -// uPedidosClienteController, uBizPedidosCliente, uDialogUtils, schAlbaranesClienteClient_Intf, uGenerarFacturasCliAlbCliUtils, -// uFacturasClienteController, uBizFacturasCliente, uGenerarAlbaranesCliUtils, -// uInventarioController, + uGenerarAlbaranesCliUtils, uEditorBase, cxCustomData, uGridUtils, uDBSelectionListUtils; @@ -251,11 +247,11 @@ end; procedure TfEditorAlbaranesCliente.actEnviarUpdate(Sender: TObject); begin - inherited; +{ inherited; (Sender as TAction).Enabled := HayDatos and not (ViewGrid.NumSeleccionados > 1) and ViewGrid.esSeleccionCeldaDatos - and (FAlbaranes.SITUACION = SITUACION_ALBARAN_PENDIENTE); + and (FAlbaranes.SITUACION = SITUACION_ALBARAN_PENDIENTE);} end; procedure TfEditorAlbaranesCliente.AsignarVista; @@ -431,34 +427,32 @@ begin end; procedure TfEditorAlbaranesCliente.NuevoInterno; -{var +var Respuesta : Integer; AAlbaran : IBizAlbaranCliente; - IDAlbaranAux: Integer;} + IDAlbaranAux: Integer; begin inherited; - if FController.Anadir(Albaranes) then - FController.Ver(Albaranes); - -//Se deshabilita la funcionalidad para poder generar un albarán a partir de un presupuesto - -{ Respuesta := JsNuevoAlbaranDialog.Execute; + Respuesta := JsNuevoAlbaranDialog.Execute; if Respuesta <> IDCANCEL then begin case JsNuevoAlbaranDialog.CustomButtonResult of - 200 : begin // Utilizar un pedido -// if ElegirPedidoYGenerarAlbaranCli(IDAlbaranAux) then + {200 : begin // Utilizar un pedido + if ElegirPedidoYGenerarAlbaranCli(IDAlbaranAux) then actRefrescar.Execute; - end; + end;} 100 : begin // Albaran nuevo vacio if FController.Anadir(Albaranes) then FController.Ver(Albaranes); end; + 300 : begin // Utilizar un contrato + if ElegirContratoYGenerarAlbaranCli(IDAlbaranAux) then + actRefrescar.Execute; + end; end; end; -} end; procedure TfEditorAlbaranesCliente.OnListaAnosChange(Sender: TObject; const Text: string); diff --git a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranCliente.dfm b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranCliente.dfm index 4bf64cd4..f839b9ec 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranCliente.dfm +++ b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranCliente.dfm @@ -1,25 +1,25 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente - Width = 825 - Height = 512 + Width = 947 + Height = 644 OnCreate = CustomViewCreate OnDestroy = CustomViewDestroy - ExplicitWidth = 825 - ExplicitHeight = 512 + ExplicitWidth = 947 + ExplicitHeight = 644 object dxLayoutControl1: TdxLayoutControl Left = 0 Top = 0 - Width = 825 - Height = 512 + Width = 947 + Height = 644 Align = alClient ParentBackground = True TabOrder = 0 TabStop = False AutoContentSizes = [acsWidth, acsHeight] DesignSize = ( - 825 - 512) + 947 + 644) object Label1: TLabel - Left = 344 + Left = 546 Top = 622 Width = 299 Height = 26 @@ -81,7 +81,7 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente Width = 284 end inline frViewClienteAlbaran: TfrViewDatosYSeleccionClienteAlbaran - Left = 344 + Left = 546 Top = 28 Width = 442 Height = 221 @@ -91,46 +91,32 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente Font.Name = 'Tahoma' Font.Style = [] ParentFont = False - TabOrder = 10 + TabOrder = 12 ReadOnly = False - ExplicitLeft = 344 + ExplicitLeft = 546 ExplicitTop = 28 ExplicitWidth = 442 ExplicitHeight = 221 inherited dxLayoutControl1: TdxLayoutControl Width = 442 Height = 221 - ExplicitWidth = 452 - ExplicitHeight = 226 - inherited edtlNombre: TcxDBTextEdit - ExplicitWidth = 224 - Width = 224 - end - inherited edtNIFCIF: TcxDBTextEdit - ExplicitWidth = 103 - Width = 103 - end + ExplicitWidth = 442 + ExplicitHeight = 221 inherited bVerFichaCliente: TBitBtn - Left = 240 - ExplicitLeft = 240 - end - inherited edtDireccion: TcxMemo - ExplicitWidth = 437 - Width = 437 + Left = 160 + ExplicitLeft = 160 end inherited bElegirDireccion: TButton - Left = 409 - ExplicitLeft = 409 + Left = 329 + ExplicitLeft = 329 end inherited edtTelefonos: TcxTextEdit ExplicitWidth = 193 Width = 193 end inherited edtReferencia: TcxDBTextEdit - Left = 282 - ExplicitLeft = 282 - ExplicitWidth = 103 - Width = 103 + Left = 242 + ExplicitLeft = 242 end end inherited ActionList1: TActionList @@ -141,7 +127,7 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente end end object eCalle: TcxDBTextEdit - Left = 438 + Left = 640 Top = 396 DataBinding.DataField = 'CALLE' DataBinding.DataSource = DADataSource @@ -156,11 +142,11 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 14 + TabOrder = 16 Width = 284 end object ePoblacion: TcxDBTextEdit - Left = 438 + Left = 640 Top = 423 DataBinding.DataField = 'POBLACION' DataBinding.DataSource = DADataSource @@ -175,11 +161,11 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 15 + TabOrder = 17 Width = 61 end object eCodigoPostal: TcxDBTextEdit - Left = 721 + Left = 843 Top = 423 DataBinding.DataField = 'CODIGO_POSTAL' DataBinding.DataSource = DADataSource @@ -194,11 +180,11 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 16 + TabOrder = 18 Width = 65 end object eProvincia: TcxDBTextEdit - Left = 438 + Left = 640 Top = 450 DataBinding.DataField = 'PROVINCIA' DataBinding.DataSource = DADataSource @@ -213,11 +199,11 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 17 + TabOrder = 19 Width = 406 end object ePersonaContacto: TcxDBTextEdit - Left = 438 + Left = 640 Top = 477 DataBinding.DataField = 'PERSONA_CONTACTO' DataBinding.DataSource = DADataSource @@ -233,11 +219,11 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 18 + TabOrder = 20 Width = 284 end object eTlfTrabajo: TcxDBTextEdit - Left = 438 + Left = 640 Top = 504 DataBinding.DataField = 'TELEFONO' DataBinding.DataSource = DADataSource @@ -252,20 +238,20 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 19 + TabOrder = 21 Width = 284 end object bElegirDireccion: TBitBtn - Left = 614 + Left = 736 Top = 531 Width = 172 Height = 23 Action = actElegirDireccion Caption = 'Elegir una direcci'#243'n de env'#237'o...' - TabOrder = 20 + TabOrder = 22 end object Button1: TButton - Left = 182 + Left = 384 Top = 138 Width = 132 Height = 23 @@ -327,7 +313,7 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente Width = 146 end object bFormasPago: TButton - Left = 182 + Left = 384 Top = 109 Width = 132 Height = 23 @@ -336,7 +322,7 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente OnClick = bFormasPagoClick end object eFechaRecepcion: TcxDBDateEdit - Left = 478 + Left = 680 Top = 339 Anchors = [akLeft, akTop, akRight] DataBinding.DataField = 'FECHA_RECEPCION' @@ -357,20 +343,20 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 13 + TabOrder = 15 Width = 239 end object cbConAlmacen: TCheckBox - Left = 354 + Left = 556 Top = 590 Width = 179 Height = 21 Caption = 'Asociar este albar'#225'n al almac'#233'n:' - TabOrder = 21 + TabOrder = 23 OnClick = cbConAlmacenClick end object cbAlmacen: TcxDBLookupComboBox - Left = 539 + Left = 741 Top = 590 DataBinding.DataField = 'ID_ALMACEN' DataBinding.DataSource = DADataSource @@ -396,12 +382,12 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 22 + TabOrder = 24 Width = 586 end object eRefFacturaCli: TcxDBTextEdit Left = 116 - Top = 167 + Top = 196 Anchors = [akLeft, akTop, akRight] DataBinding.DataField = 'REF_FACTURA' DataBinding.DataSource = DADataSource @@ -422,11 +408,11 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 7 + TabOrder = 9 Width = 284 end object eFechaPrevista: TcxDBDateEdit - Left = 478 + Left = 680 Top = 285 Anchors = [akLeft, akTop, akRight] DataBinding.DataField = 'FECHA_PREVISTA_ENVIO' @@ -449,7 +435,7 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 11 + TabOrder = 13 Width = 202 end object eRefCliente: TcxDBTextEdit @@ -478,7 +464,7 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente Width = 284 end object eFechaEnvio: TcxDBDateEdit - Left = 478 + Left = 680 Top = 312 Anchors = [akLeft, akTop, akRight] DataBinding.DataField = 'FECHA_ENVIO' @@ -499,12 +485,12 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente StyleFocused.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.Kind = lfStandard StyleHot.LookAndFeel.NativeStyle = True - TabOrder = 12 + TabOrder = 14 Width = 239 end inline frViewTienda1: TfrViewTienda Left = 22 - Top = 224 + Top = 253 Width = 373 Height = 41 Font.Charset = DEFAULT_CHARSET @@ -513,10 +499,10 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente Font.Name = 'Tahoma' Font.Style = [] ParentFont = False - TabOrder = 8 + TabOrder = 10 ReadOnly = False ExplicitLeft = 22 - ExplicitTop = 224 + ExplicitTop = 253 ExplicitWidth = 373 inherited dxLayoutControl1: TdxLayoutControl Width = 373 @@ -529,7 +515,7 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente end inline frViewObservaciones1: TfrViewObservaciones Left = 22 - Top = 301 + Top = 330 Width = 521 Height = 228 Font.Charset = DEFAULT_CHARSET @@ -538,10 +524,10 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente Font.Name = 'Tahoma' Font.Style = [] ParentFont = False - TabOrder = 9 + TabOrder = 11 ReadOnly = False ExplicitLeft = 22 - ExplicitTop = 301 + ExplicitTop = 330 ExplicitHeight = 228 inherited memObservaciones: TcxDBMemo DataBinding.DataField = 'OBSERVACIONES' @@ -550,6 +536,40 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente Height = 228 end end + object eRefContratoCli: TcxDBTextEdit + Left = 116 + Top = 167 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'REF_CONTRATO' + DataBinding.DataSource = DADataSource + Enabled = False + Properties.ReadOnly = False + Properties.ValidateOnEnter = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = clWindow + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.Color = clMenuBar + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 7 + Width = 247 + end + object Button2: TButton + Left = 369 + Top = 167 + Width = 147 + Height = 23 + Action = actVerContratoCli + TabOrder = 8 + end object dxLayoutControl1Group_Root: TdxLayoutGroup ShowCaption = False Hidden = True @@ -631,6 +651,22 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente ControlOptions.ShowBorder = False end end + object dxLayoutControl1Group16: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item25: TdxLayoutItem + Caption = 'Ref. contrato:' + Control = eRefContratoCli + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item26: TdxLayoutItem + ShowCaption = False + Control = Button2 + ControlOptions.ShowBorder = False + end + end object dxLayoutControl1Item22: TdxLayoutItem Caption = 'Ref. factura:' Control = eRefFacturaCli @@ -796,6 +832,14 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente end end end + object cxDBTextEdit1: TcxDBTextEdit + Left = 176 + Top = 236 + DataBinding.DataField = 'REF_CONTRATO' + DataBinding.DataSource = DADataSource + TabOrder = 1 + Width = 297 + end object DADataSource: TDADataSource Left = 48 end @@ -810,6 +854,11 @@ inherited frViewAlbaranCliente: TfrViewAlbaranCliente OnExecute = actVerPedidoCliExecute OnUpdate = actVerPedidoCliUpdate end + object actVerContratoCli: TAction + Caption = 'Ver el contrato de cliente...' + OnExecute = actVerContratoCliExecute + OnUpdate = actVerContratoCliUpdate + end end object dsFormaPago: TDADataSource Left = 16 diff --git a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranCliente.pas b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranCliente.pas index 7365c6a6..0c99d645 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranCliente.pas +++ b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranCliente.pas @@ -11,6 +11,7 @@ uses cxGraphics, cxDropDownEdit, cxImageComboBox, cxDBEdit, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo, uViewDireccionEntregaAlbaranCliente, Buttons, ActnList, + uBizContratosCliente, uContratosClienteController, // uBizPedidosCliente, uPedidosClienteController, @@ -102,6 +103,13 @@ type dxLayoutControl1Item17: TdxLayoutItem; frViewObservaciones1: TfrViewObservaciones; dxLayoutControl1Item6: TdxLayoutItem; + dxLayoutControl1Item25: TdxLayoutItem; + eRefContratoCli: TcxDBTextEdit; + dxLayoutControl1Item26: TdxLayoutItem; + Button2: TButton; + dxLayoutControl1Group16: TdxLayoutGroup; + actVerContratoCli: TAction; + cxDBTextEdit1: TcxDBTextEdit; procedure CustomViewCreate(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure actVerPedidoCliExecute(Sender: TObject); @@ -119,6 +127,8 @@ type procedure frViewClienteAlbaranButton1Click(Sender: TObject); procedure frViewClienteAlbaranButton2Click(Sender: TObject); procedure frViewClienteAlbaranactAnadirContactoUpdate(Sender: TObject); + procedure actVerContratoCliUpdate(Sender: TObject); + procedure actVerContratoCliExecute(Sender: TObject); protected FAlbaran : IBizAlbaranCliente; @@ -126,6 +136,8 @@ type FAlmacenesController : IAlmacenesController; // FPedidoAsociado : IBizPedidoCliente; // FPedidoController : IPedidosClienteController; + FContratoAsociado : IBizContratoCliente; + FContratoController : IContratosClienteController; FViewClienteAlbaran : IViewDatosYSeleccionClienteAlbaran; FFormasPago : IBizFormaPago; FFormasPagoController : IFormasPagoController; @@ -152,6 +164,20 @@ uses uDialogUtils, uFactuGES_App; +procedure TfrViewAlbaranCliente.actVerContratoCliExecute(Sender: TObject); +begin + inherited; + FContratoController. + Ver(FContratoAsociado); +end; + +procedure TfrViewAlbaranCliente.actVerContratoCliUpdate(Sender: TObject); +begin + inherited; + if (Sender as TAction).Enabled then + (Sender as TAction).Enabled := (FAlbaran.ID_CONTRATO > 0); +end; + procedure TfrViewAlbaranCliente.actVerPedidoCliExecute(Sender: TObject); begin inherited; @@ -161,8 +187,8 @@ end; procedure TfrViewAlbaranCliente.actVerPedidoCliUpdate(Sender: TObject); begin inherited; - if (Sender as TAction).Enabled then - (Sender as TAction).Enabled := (Albaran.REF_PEDIDO <> '') +{ if (Sender as TAction).Enabled then + (Sender as TAction).Enabled := (Albaran.REF_PEDIDO <> '')} end; procedure TfrViewAlbaranCliente.bFormasPagoClick(Sender: TObject); @@ -196,6 +222,8 @@ begin inherited; FFormasPago := Nil; FFormasPagoController := TFormasPagoController.Create; + FContratoAsociado := NIL; + FContratoController := TContratosClienteController.Create; // FPedidoAsociado := NIL; // FPedidoController := TPedidosClienteController.Create; FViewClienteAlbaran := frViewClienteAlbaran; @@ -208,6 +236,8 @@ begin FFormasPago := Nil; FFormasPagoController := NIL; FViewClienteAlbaran := Nil; + FContratoAsociado := NIL; + FContratoController := NIL; // FPedidoController := NIL; // FPedidoAsociado := NIL; FAlmacenesController := NIL; @@ -356,6 +386,21 @@ begin end; end; + FContratoAsociado := NIL; + if (FAlbaran.ID_CONTRATO > 0) then + begin + FContratoAsociado := FContratoController.Buscar(FAlbaran.ID_CONTRATO); + if Assigned(FContratoAsociado) then + begin + FContratoAsociado.DataTable.Active := True; + eRefContratoCli.Text := FContratoAsociado.REFERENCIA + end + else + eRefContratoCli.Text := ''; + end + else + eRefContratoCli.Text := 'No hay contrato asociado'; + { FPedidoAsociado := NIL; if (FAlbaran.ID_PEDIDO > 0) then @@ -371,7 +416,7 @@ begin end else eReferenciaPedidoCli.Text := 'No hay pedido asociado'; -} +} end else begin DADataSource.DataTable := NIL; diff --git a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranDevCliente.dfm b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranDevCliente.dfm index bdee0729..cde39b8d 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranDevCliente.dfm +++ b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranDevCliente.dfm @@ -1,235 +1,94 @@ inherited frViewAlbaranDevCliente: TfrViewAlbaranDevCliente inherited dxLayoutControl1: TdxLayoutControl - ExplicitHeight = 650 inherited Label1: TLabel - Left = 352 Width = 299 - ExplicitLeft = 352 ExplicitWidth = 299 end inherited edtFechaAlbaran: TcxDBDateEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 431 Width = 431 end - inherited memObservaciones: TcxDBMemo - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitWidth = 499 - Width = 499 - end inherited eReferencia: TcxDBTextEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 431 Width = 431 end inherited frViewClienteAlbaran: TfrViewDatosYSeleccionClienteAlbaran - Left = 352 Width = 145 - ExplicitLeft = 352 ExplicitWidth = 145 inherited dxLayoutControl1: TdxLayoutControl Width = 145 - ExplicitWidth = 219 + ExplicitWidth = 145 inherited edtlNombre: TcxDBTextEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 210 Width = 210 end inherited edtNIFCIF: TcxDBTextEdit - Left = 231 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 231 ExplicitWidth = 210 Width = 210 end - inherited Button3: TBitBtn - Left = 249 - ExplicitLeft = 249 - end - inherited edtPersonaContacto: TcxDBTextEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitWidth = 283 - Width = 283 - end inherited edtDireccion: TcxMemo - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 403 Width = 403 end - inherited Button4: TButton - Left = 418 - ExplicitLeft = 418 + inherited edtTelefonos: TcxTextEdit + ExplicitWidth = 193 + Width = 193 end - inherited Button5: TButton - Left = 418 - ExplicitLeft = 418 + inherited edtReferencia: TcxDBTextEdit + ExplicitWidth = 103 + Width = 103 end end end inherited eCalle: TcxDBTextEdit - Left = 446 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 446 ExplicitWidth = 125 Width = 125 end inherited ePoblacion: TcxDBTextEdit - Left = 446 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 446 ExplicitWidth = 24 Width = 24 end - inherited eCodigoPostal: TcxDBTextEdit - Left = 738 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 738 - end inherited eProvincia: TcxDBTextEdit - Left = 446 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 446 ExplicitWidth = 125 Width = 125 end inherited ePersonaContacto: TcxDBTextEdit - Left = 446 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 446 ExplicitWidth = 125 Width = 125 end inherited eTlfTrabajo: TcxDBTextEdit - Left = 446 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 446 ExplicitWidth = 125 Width = 125 end - inherited bElegirDireccion: TBitBtn - Left = 631 - ExplicitLeft = 631 - end - inherited Button1: TButton - Left = 190 - ExplicitLeft = 190 - end inherited eReferenciaPedidoCli: TcxTextEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 245 Width = 245 end inherited cbFormaPago: TcxDBLookupComboBox - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 293 Width = 293 end - inherited bFormasPago: TButton - Left = 190 - ExplicitLeft = 190 - end inherited eFechaRecepcion: TcxDBDateEdit - Left = 486 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 486 ExplicitWidth = 85 Width = 85 end - inherited cbConAlmacen: TCheckBox - Left = 362 - ExplicitLeft = 362 - end inherited cbAlmacen: TcxDBLookupComboBox - Left = 547 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 547 ExplicitWidth = 586 Width = 586 end inherited eRefFacturaCli: TcxDBTextEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 381 Width = 381 end inherited eFechaPrevista: TcxDBDateEdit - Left = 486 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 486 ExplicitWidth = 85 Width = 85 end inherited eRefCliente: TcxDBTextEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 431 Width = 431 end inherited eFechaEnvio: TcxDBDateEdit - Left = 486 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 486 ExplicitWidth = 85 Width = 85 end @@ -240,15 +99,24 @@ inherited frViewAlbaranDevCliente: TfrViewAlbaranDevCliente Width = 515 ExplicitWidth = 515 inherited cbTienda: TcxComboBox - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 454 Width = 454 end end end + inherited frViewObservaciones1: TfrViewObservaciones + Width = 521 + Height = 228 + ExplicitWidth = 521 + ExplicitHeight = 228 + inherited memObservaciones: TcxDBMemo + DataBinding.DataSource = DADataSource + ExplicitWidth = 521 + ExplicitHeight = 228 + Height = 228 + Width = 521 + end + end inherited dxLayoutControl1Group_Root: TdxLayoutGroup inherited dxLayoutControl1Group3: TdxLayoutGroup inherited dxLayoutControl1Group11: TdxLayoutGroup diff --git a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranDevCliente.pas b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranDevCliente.pas index 33160106..f585cb91 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranDevCliente.pas +++ b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranDevCliente.pas @@ -9,7 +9,7 @@ uses cxDBLookupComboBox, cxTextEdit, Buttons, uCustomView, uViewBase, uViewDatosYSeleccionCliente, cxDBEdit, cxMemo, cxContainer, cxEdit, cxMaskEdit, cxCalendar, cxControls, uDAInterfaces, uViewTienda, - uViewDatosYSeleccionClienteAlbaran; + uViewDatosYSeleccionClienteAlbaran, uViewObservaciones; type TfrViewAlbaranDevCliente = class(TfrViewAlbaranCliente) diff --git a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.dfm b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.dfm index 38774d19..597fbdf4 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.dfm +++ b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.dfm @@ -115,6 +115,11 @@ inherited frViewAlbaranesCliente: TfrViewAlbaranesCliente VisibleForCustomization = False Width = 45 end + object cxGridViewREF_CONTRATO: TcxGridDBColumn + DataBinding.FieldName = 'REF_CONTRATO' + BestFitMaxWidth = 45 + Width = 61 + end object cxGridViewREF_FACTURA: TcxGridDBColumn DataBinding.FieldName = 'REF_FACTURA' BestFitMaxWidth = 45 @@ -171,17 +176,21 @@ inherited frViewAlbaranesCliente: TfrViewAlbaranesCliente end object cxGridLevelPendientes: TcxGridLevel Caption = 'Pendientes' + Visible = False end object cxGridLevelEnviados: TcxGridLevel Caption = 'Enviados' + Visible = False end object cxGridLevelServidos: TcxGridLevel Caption = 'Servidos' + Visible = False end object cxGridLevelProximosAEnviar: TcxGridLevel Caption = 'Pasados de fecha' Options.DetailFrameColor = clNone Options.DetailFrameWidth = 0 + Visible = False end end inherited frViewFiltroBase1: TfrViewFiltroBase diff --git a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.pas b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.pas index bb90a0df..7850955f 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.pas +++ b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.pas @@ -59,6 +59,7 @@ type cxGridViewFECHA_PREVISTA_ENVIO: TcxGridDBColumn; cxStyleRETRASADOS: TcxStyle; cxGridViewTIENDA: TcxGridDBColumn; + cxGridViewREF_CONTRATO: TcxGridDBColumn; procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView; diff --git a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesDevCliente.pas b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesDevCliente.pas index af69998f54774962de94dfdcc518d20219f902ee..f484cded81a5acb83cf8c942a72c8257d24e72f8 100644 GIT binary patch delta 68 zcmbQrvxjHHCnjSZg;Ezs&%Bb1)M6mlxwN<>KQ}BhwH(L+QBH})sn)z)yj&%f T1*yDT3X?Z7OKuit{>KCWJ82fk delta 12 TcmdnPGnHqRa diff --git a/Source/Modulos/Articulos/Data/Articulos_data.dproj b/Source/Modulos/Articulos/Data/Articulos_data.dproj index 362ae2fb..126ef528 100644 --- a/Source/Modulos/Articulos/Data/Articulos_data.dproj +++ b/Source/Modulos/Articulos/Data/Articulos_data.dproj @@ -54,7 +54,7 @@ MainSource - +
DataModuleArticulos
diff --git a/Source/Modulos/Articulos/Views/Articulos_view.dproj b/Source/Modulos/Articulos/Views/Articulos_view.dproj index aa976d2f..3a73d011 100644 --- a/Source/Modulos/Articulos/Views/Articulos_view.dproj +++ b/Source/Modulos/Articulos/Views/Articulos_view.dproj @@ -55,11 +55,11 @@ MainSource - - - - - + + + + +
fEditorArticulo
diff --git a/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj b/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj index 022cfd0f..822dbf0c 100644 --- a/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj +++ b/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj @@ -17,6 +17,7 @@ + @@ -148,6 +149,15 @@ + + + + + + + + + @@ -212,13 +222,13 @@ - + - + - + \ No newline at end of file diff --git a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dproj b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dproj index 0d47611c..29fccc12 100644 --- a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dproj +++ b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.dproj @@ -49,14 +49,14 @@ MainSource - - - - - - - - + + + + + + + + diff --git a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas index d47eb4eb..bef0524d 100644 --- a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas +++ b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas @@ -33,7 +33,8 @@ type function Buscar(const ListaID: TIntegerList): IBizContratoCliente; overload; function BuscarTodos: IBizContratoCliente; overload; function BuscarTodos(const ID_Cliente: Integer): IBizContratoCliente; overload; - procedure Ver(AContrato : IBizContratoCliente); + procedure Ver(AContrato : IBizContratoCliente); overload; + procedure Ver(const ID: Integer); overload; procedure VerTodos(AContratos: IBizContratoCliente; const AVerModal : Boolean = False; const AWindowCaption: String = ''; const AHeaderText: String = ''); @@ -113,7 +114,8 @@ type function BuscarTodos: IBizContratoCliente; overload; function BuscarTodos(const ID_Cliente: Integer): IBizContratoCliente; overload; function Nuevo : IBizContratoCliente; - procedure Ver(AContrato : IBizContratoCliente); + procedure Ver(AContrato : IBizContratoCliente); overload; + procedure Ver(const ID: Integer); overload; procedure VerTodos(AContratos: IBizContratoCliente; const AVerModal : Boolean = False; const AWindowCaption: String = ''; const AHeaderText: String = ''); @@ -460,6 +462,19 @@ begin end; end; +procedure TContratosClienteController.Ver(const ID: Integer); +var + AContrato : IBizContratoCliente; +begin + AContrato := Self.Buscar(ID); + if Assigned(AContrato) then + try + Self.Ver(AContrato); + finally + FreeAndNil(AContrato); + end; +end; + procedure TContratosClienteController.VerListadoBeneficios; var AContratosClienteBeneficios: IBizContratosClienteBeneficios; diff --git a/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.dproj b/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.dproj index 160b9273..aaee7298 100644 --- a/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.dproj +++ b/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.dproj @@ -49,18 +49,18 @@ MainSource - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.dproj b/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.dproj index e8f8b499..4403e025 100644 --- a/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.dproj +++ b/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.dproj @@ -52,23 +52,23 @@ MainSource - - - - - + + + + + + + + + + + - - - - - - diff --git a/Source/Modulos/Relaciones/Contratos de cliente - Albaranes de cliente/ConCli_AlbCli_relation.res b/Source/Modulos/Relaciones/Contratos de cliente - Albaranes de cliente/ConCli_AlbCli_relation.res new file mode 100644 index 0000000000000000000000000000000000000000..8b251f312bcccec5485024f6fe8d80e1cdf25746 GIT binary patch literal 384 zcmZ9HOA3Ne6ox;+L5PEv(4cV`IIrjdPAV##hV&wc1g%+%X(R2Xc{`~7t6e0Ioa?#% zkMj%AQhz>WYy7LeWAUaqx~Kv?-;(-Hs4-^ATIZOBrid9+-6Ne7&88mi>kUR4lo#jxZ;#*s4zxg9yNlk=H9sqkCD2^cEXKpiTBNfgkKpXJBWWaLt(Qkv@0 w5yv*t82((Wlr2{_+FDoDHKW2QCXvc+s**ul{{$ + ButtonBar.Buttons = [cbOK] + ButtonBar.Cancel = cbOK + ButtonBar.UseCancel = False + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 72 + Top = 16 + end +end diff --git a/Source/Modulos/Relaciones/Contratos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas b/Source/Modulos/Relaciones/Contratos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas new file mode 100644 index 00000000..6ec433ac --- /dev/null +++ b/Source/Modulos/Relaciones/Contratos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas @@ -0,0 +1,296 @@ +unit uGenerarAlbaranesCliUtils; + +interface + +uses + Windows, SysUtils, Classes, pngimage, JSDialog, + uBizContratosCliente, uBizAlbaranesCliente; + +type + TdmGenerarAlbaranesCli = class(TDataModule) + JsListaAlbaranesGenerados: TJSDialog; + end; + + function GenerarAlbaranCli(const IDContrato : Integer) : Boolean; overload; + function GenerarAlbaranCli(AContrato : IBizContratoCliente; var AAlbaran: IBizAlbaranCliente) : Boolean; overload; +// function ElegirPedidoYGenerarAlbaranCli(var IDAlbaran: Integer) : Boolean; + function ElegirContratoYGenerarAlbaranCli(var IDAlbaran: Integer) : Boolean; + +implementation + +{$R *.dfm} + +uses + uDialogUtils, uBizDetallesContratoCliente, uBizDetallesAlbaranCliente, + uContratosClienteController, uAlbaranesClienteController, uClientesController, + uDetallesAlbaranClienteController, uControllerDetallesBase, + uBizContactos, schAlbaranesClienteClient_Intf, + schContratosClienteClient_Intf, uBizDetallesPresupuestoCliente; + +var + dmGenerarAlbaranesCli: TdmGenerarAlbaranesCli; + AContratosClienteController : IContratosClienteController; + AAlbaranesClienteController : IAlbaranesClienteController; + AClientesController : IClientesController; + +{ Métodos auxiliares } +procedure CopiarContratoAAlbaran(AContrato: IBizContratoCliente; AAlbaran : IBizAlbaranCliente); +begin + if not Assigned(AAlbaran) then + raise Exception.Create ('Albarán no asignado (CopiarContratoAAlbaran)'); + + if not Assigned(AContrato) then + raise Exception.Create ('Contrato no asignado (CopiarContratoAAlbaran)'); + + if not AContrato.DataTable.Active then + AContrato.DataTable.Active := True; + + // El albarán tiene que venir ya abierto y posicionado donde hay que copiar + AAlbaran.ID_CLIENTE := AContrato.ID_CLIENTE; + // Lo dejamos listo para que se localize la subcuenta contable asociada al cliente + AAlbaranesClienteController.RecuperarCliente(AAlbaran); + AAlbaran.Cliente.Open; + +// AAlbaran.NIF_CIF := AContrato.NIF_CIF; + AAlbaran.NOMBRE := AContrato.NOMBRE; + AAlbaran.CALLE := AContrato.CALLE; + AAlbaran.POBLACION := AContrato.POBLACION; + AAlbaran.PROVINCIA := AContrato.PROVINCIA; + AAlbaran.CODIGO_POSTAL := AContrato.CODIGO_POSTAL; + + +// AAlbaran.PERSONA_CONTACTO := AContrato.PERSONA_CONTACTO; +// AAlbaran.DataTable.FieldByName(fld_FacturasClientePLAZO_ENTREGA).AsVariant := AContrato.DataTable.FieldByName(fld_ContratosClientePLAZO_ENTREGA).AsVariant; + + AAlbaran.DataTable.FieldByName(fld_AlbaranesClienteOBSERVACIONES).AsVariant := AContrato.DataTable.FieldByName(fld_ContratosClienteOBSERVACIONES).AsVariant; + AAlbaran.IMPORTE_NETO := AContrato.IMPORTE_NETO; + AAlbaran.IMPORTE_PORTE := AContrato.IMPORTE_PORTE; + AAlbaran.DESCUENTO := AContrato.DESCUENTO; + AAlbaran.IMPORTE_DESCUENTO := AContrato.IMPORTE_DESCUENTO; + AAlbaran.BASE_IMPONIBLE := AContrato.BASE_IMPONIBLE; + AAlbaran.ID_TIPO_IVA := AContrato.ID_TIPO_IVA; + AAlbaran.IVA := AContrato.IVA; + AAlbaran.IMPORTE_IVA := AContrato.IMPORTE_IVA; + AAlbaran.IMPORTE_TOTAL := AContrato.IMPORTE_TOTAL; + AAlbaran.ID_TIENDA := AContrato.ID_TIENDA; + AAlbaran.ID_CONTRATO := AContrato.ID; + +// AAlbaran.ID_VENDEDOR := AContrato.ID_VENDEDOR; +// AAlbaran.RECARGO_EQUIVALENCIA := AContrato.RECARGO_EQUIVALENCIA; +// AAlbaran.RE := AContrato.RE; +// AAlbaran.IMPORTE_RE := AContrato.IMPORTE_RE; +// AAlbaran.TIPO_FACTURA := AContrato.TIPO_CONTRATO; +end; + +procedure CopiarDetallesAAlbaran( + AContrato: IBizContratoCliente; + AAlbaran: IBizAlbaranCliente; + AArticulos: IBizDetallesContratoCliente); +var + i : integer; + ADetalles : IBizDetallesAlbaranCliente; + ADetallesController : IDetallesAlbaranClienteController; +begin + if not Assigned(AAlbaran) then + raise Exception.Create ('Albarán no asignada (CopiarDetallesAAlbaran)'); + + if not Assigned(AContrato) then + raise Exception.Create ('Contrato no asignado (CopiarDetallesAAlbaran)'); + + if not Assigned(AArticulos) then + raise Exception.Create ('Artículos no asignado (CopiarDetallesAAlbaran)'); + + if not AArticulos.DataTable.Active then + AArticulos.DataTable.Active := True; + + // El contrato tiene que venir ya abierto y posicionado donde hay que copiar + + ADetalles := AAlbaran.Detalles; + ADetallesController := TDetallesAlbaranClienteController.Create; + try + //OJO IMPORTANTE + //Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para + //obligarle siempre a recalcular los detalles una sola vez + ADetallesController.BeginUpdate(ADetalles); + + AArticulos.DataTable.First; + for i := 0 to AArticulos.DataTable.RecordCount - 1 do + begin + ADetallesController.Add(ADetalles, AArticulos.TIPO_DETALLE); + ADetalles.Edit; + ADetalles.REFERENCIA := AArticulos.REFERENCIA; + ADetalles.ID_ARTICULO := AArticulos.ID_ARTICULO; + if (AArticulos.PROPIEDAD <> '') then + ADetalles.CONCEPTO := AArticulos.PROPIEDAD + ': '+ AArticulos.CONCEPTO + else + ADetalles.CONCEPTO := AArticulos.CONCEPTO; + + if not AArticulos.CANTIDADIsNull then + ADetalles.CANTIDAD := AArticulos.CANTIDAD; + if not AArticulos.IMPORTE_UNIDADIsNull then + ADetalles.IMPORTE_UNIDAD := AArticulos.IMPORTE_UNIDAD; + if not AArticulos.IMPORTE_TOTALIsNull then + ADetalles.IMPORTE_TOTAL := AArticulos.IMPORTE_TOTAL; + if not AArticulos.DESCUENTOIsNull then + ADetalles.DESCUENTO := AArticulos.DESCUENTO; + if not AArticulos.IMPORTE_PORTEIsNull then + ADetalles.IMPORTE_PORTE := AArticulos.IMPORTE_PORTE; + ADetalles.VISIBLE := AArticulos.VISIBLE; + ADetalles.REFERENCIA_PROVEEDOR := AArticulos.REFERENCIA_PROVEEDOR; + ADetalles.Post; + AArticulos.Next; + end; + finally + ADetallesController.EndUpdate(ADetalles); + ADetallesController := NIL; + end; +end; + +procedure Inicializar; +begin + dmGenerarAlbaranesCli := TdmGenerarAlbaranesCli.Create(nil); + AContratosClienteController := TContratosClienteController.Create; + AAlbaranesClienteController := TAlbaranesClienteController.Create; + AClientesController := TClientesController.Create; +end; + +procedure Finalizar; +begin + FreeAndNIL(dmGenerarAlbaranesCli); + AContratosClienteController := nil; + AAlbaranesClienteController := nil; + AClientesController := nil; +end; + + +function GenerarAlbaranCli(const IDContrato : Integer) : Boolean; overload; +var + AContrato : IBizContratoCliente; + AAlbaran : IBizAlbaranCliente; +begin + Result := False; + + try + if not Assigned(AContratosClienteController) then + Inicializar; + + AContrato := AContratosClienteController.Buscar(IDContrato); + if Assigned(AContrato) then + Result := GenerarAlbaranCli(AContrato, AAlbaran); + finally + if Assigned(AContratosClienteController) then + Finalizar; + end; +end; + +function GenerarAlbaranCli(AContrato : IBizContratoCliente; var AAlbaran: IBizAlbaranCliente) : Boolean; overload; +var + ARespuesta : Integer; +begin + AAlbaran := NIL; + + if not Assigned(AContrato) then + raise Exception.Create('Contrato de cliente no asignado (GenerarAlbaranCli)'); + + if not AContrato.DataTable.Active then + AContrato.DataTable.Active := True; + + if not Assigned(AContratosClienteController) then + Inicializar; + + try + AAlbaran := AAlbaranesClienteController.Nuevo; + CopiarContratoAAlbaran(AContrato, AAlbaran); + CopiarDetallesAAlbaran(AContrato, AAlbaran, AContrato.Detalles); + + //Sustituir por if de guardar + if AAlbaranesClienteController.Guardar(AAlbaran) then + begin +// Asocio el contrato al presupuesto + with dmGenerarAlbaranesCli.JsListaAlbaranesGenerados do + begin + Instruction.Text := 'Se ha generado el albarán'; + + Content.Clear; + Content.Add(Format('Se ha generado correctamente el albarán %s a partir del contrato de cliente' + #10#13, [AAlbaran.REFERENCIA])); + Execute; + + ARespuesta := CustomButtonResult; + case ARespuesta of + 100 : begin + // Ver el albarán + AAlbaranesClienteController.Ver(AAlbaran); + end; + 200 : // Continuar; + end; + end; + end; + + Result := True; + finally + if Assigned(AContratosClienteController) then + Finalizar; + end; +end; + +function ElegirContratoYGenerarAlbaranCli(var IDAlbaran: Integer) : Boolean; +var + AContrato : IBizContratoCliente; + AAlbaran : IBizAlbaranCliente; +begin + Result := False; + IDAlbaran := -1; + + AAlbaran := NIL; + try + if not Assigned(AContratosClienteController) then + Inicializar; + + AContrato := AContratosClienteController.ElegirContratos(AContratosClienteController.BuscarTodos, + 'Elija el contrato de cliente que desea utilizar para dar de alta el albarán.', False); + + if Assigned(AContrato) then + begin + Result := GenerarAlbaranCli(AContrato, AAlbaran); + if Result then + IDAlbaran := AAlbaran.ID; + end; + finally + if Assigned(AContratosClienteController) then + Finalizar; + end; +end; + + + +{ +function ElegirPedidoYGenerarAlbaranCli(var IDAlbaran: Integer) : Boolean; overload; +var + APedido : IBizPedidoCliente; + AAlbaran : IBizAlbaranCliente; +begin + Result := False; + IDAlbaran := -1; + + AAlbaran := NIL; + try + if not Assigned(APedidosClienteController) then + Inicializar; + + APedido := APedidosClienteController.ElegirPedidos(APedidosClienteController.BuscarPendientes, + 'Elija el pedido de cliente que desea utilizar para dar de alta el albarán de cliente.' + , False); + + if Assigned(APedido) then + begin + Result := GenerarAlbaranCli(APedido, AAlbaran); + if Result then + IDAlbaran := AAlbaran.ID; + end; + finally + if Assigned(APedidosClienteController) then + Finalizar; + end; +end; +} +end. diff --git a/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dproj b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dproj index 4eb2e1a5..27164aa9 100644 --- a/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dproj +++ b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dproj @@ -40,114 +40,6 @@ Package FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Borland Sample Components Delphi 1.0 Compatibility Components Borland MyBase DataAccess Components @@ -191,14 +83,14 @@ MainSource - - - - - - - - + + + + + + + +
dmGenerarFacturasCli
diff --git a/Source/Servidor/FactuGES_Server.dpr b/Source/Servidor/FactuGES_Server.dpr index d2fca630..eeb8ae75 100644 --- a/Source/Servidor/FactuGES_Server.dpr +++ b/Source/Servidor/FactuGES_Server.dpr @@ -115,8 +115,6 @@ uses srvContratosCliente_Impl in '..\Modulos\Contratos de cliente\Servidor\srvContratosCliente_Impl.pas' {srvContratosCliente: TDataAbstractService}, uBizContratosClienteServer in '..\Modulos\Contratos de cliente\Model\uBizContratosClienteServer.pas', uRptContratosCliente_Server in '..\Modulos\Contratos de cliente\Reports\uRptContratosCliente_Server.pas' {RptContratosCliente}, - schAlbaranesClienteClient_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteClient_Intf.pas', - schAlbaranesClienteServer_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteServer_Intf.pas', schAlbaranesProveedorClient_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorClient_Intf.pas', schAlbaranesProveedorServer_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorServer_Intf.pas', schInventarioClient_Intf in '..\Modulos\Inventario\Model\schInventarioClient_Intf.pas', @@ -136,7 +134,9 @@ uses schPresupuestosClienteClient_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteClient_Intf.pas', schPresupuestosClienteServer_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteServer_Intf.pas', schFacturasClienteClient_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteClient_Intf.pas', - schFacturasClienteServer_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteServer_Intf.pas'; + schFacturasClienteServer_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteServer_Intf.pas', + schAlbaranesClienteClient_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteClient_Intf.pas', + schAlbaranesClienteServer_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteServer_Intf.pas'; {$R *.res} {$R ..\Servicios\RODLFile.res} diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj index 9237fba4..97f4123f 100644 --- a/Source/Servidor/FactuGES_Server.dproj +++ b/Source/Servidor/FactuGES_Server.dproj @@ -28,7 +28,7 @@ Delphi.Personality - FalseTrueFalseTrueFalse2520FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.5.2.0FactuGES (Servidor)2.5.2.0martes, 29 de enero de 2013 19:17 + FalseTrueFalseTrueFalse2530FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.5.3.0FactuGES (Servidor)2.5.3.0viernes, 17 de mayo de 2013 12:12 File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found FactuGES_Server.dpr diff --git a/Source/Servidor/FactuGES_Server.rc b/Source/Servidor/FactuGES_Server.rc index bab0a7e3..59c19d00 100644 --- a/Source/Servidor/FactuGES_Server.rc +++ b/Source/Servidor/FactuGES_Server.rc @@ -1,7 +1,7 @@ MAINICON ICON "C:\Codigo Acana\Resources\Iconos\Servidor.ico" 1 VERSIONINFO -FILEVERSION 2,5,2,0 -PRODUCTVERSION 2,5,2,0 +FILEVERSION 2,5,3,0 +PRODUCTVERSION 2,5,3,0 FILEFLAGSMASK 0x3FL FILEFLAGS 0x00L FILEOS 0x40004L @@ -13,10 +13,10 @@ BEGIN BLOCK "0C0A04E4" BEGIN VALUE "CompanyName", "Rodax Software S.L.\0" - VALUE "FileVersion", "2.5.2.0\0" + VALUE "FileVersion", "2.5.3.0\0" VALUE "ProductName", "FactuGES (Servidor)\0" - VALUE "ProductVersion", "2.5.2.0\0" - VALUE "CompileDate", "martes, 05 de febrero de 2013 12:54\0" + VALUE "ProductVersion", "2.5.3.0\0" + VALUE "CompileDate", "viernes, 17 de mayo de 2013 14:16\0" END END BLOCK "VarFileInfo" diff --git a/Source/Servidor/FactuGES_Server.res b/Source/Servidor/FactuGES_Server.res index b3876333fc9f9db85f51e78adce09650838224fb..624d4397d07ab42d7c2e6235ec01aaf15143b256 100644 GIT binary patch delta 121 zcmdn8jd24I-HBi{nS3`w9!UO;Fy&-sU}a!pU|?XLY#k}fIAwBVq%vc{ zQPteW40;R(K=~8~rODk69w-0+ delta 143 zcmdn6jd9C1#tnBO7%e8>jgSYDe3usm?m3C$}-NF92u$1STeabvYpXr zGHX;dw-JLLg8@)JgF$6-ca*GaE<++i5km<>Dnl`Y4ub+v&J;+d0Qm|GX+SawD4Pnz b`EXGqpc+F4V<6v + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/Tools/UPX/LICENSE b/Tools/UPX/LICENSE new file mode 100644 index 00000000..444ded8d --- /dev/null +++ b/Tools/UPX/LICENSE @@ -0,0 +1,138 @@ +-----BEGIN PGP SIGNED MESSAGE----- + + + ooooo ooo ooooooooo. ooooooo ooooo + `888' `8' `888 `Y88. `8888 d8' + 888 8 888 .d88' Y888..8P + 888 8 888ooo88P' `8888' + 888 8 888 .8PY888. + `88. .8' 888 d8' `888b + `YbodP' o888o o888o o88888o + + + The Ultimate Packer for eXecutables + Copyright (c) 1996-2000 Markus Oberhumer & Laszlo Molnar + http://wildsau.idv.uni-linz.ac.at/mfx/upx.html + http://www.nexus.hu/upx + http://upx.tsx.org + + +PLEASE CAREFULLY READ THIS LICENSE AGREEMENT, ESPECIALLY IF YOU PLAN +TO MODIFY THE UPX SOURCE CODE OR USE A MODIFIED UPX VERSION. + + +ABSTRACT +======== + + UPX and UCL are copyrighted software distributed under the terms + of the GNU General Public License (hereinafter the "GPL"). + + The stub which is imbedded in each UPX compressed program is part + of UPX and UCL, and contains code that is under our copyright. The + terms of the GNU General Public License still apply as compressing + a program is a special form of linking with our stub. + + As a special exception we grant the free usage of UPX for all + executables, including commercial programs. + See below for details and restrictions. + + +COPYRIGHT +========= + + UPX and UCL are copyrighted software. All rights remain with the authors. + + UPX is Copyright (C) 1996-2000 Markus Franz Xaver Johannes Oberhumer + UPX is Copyright (C) 1996-2000 Laszlo Molnar + + UCL is Copyright (C) 1996-2000 Markus Franz Xaver Johannes Oberhumer + + +GNU GENERAL PUBLIC LICENSE +========================== + + UPX and the UCL library are free software; you can redistribute them + and/or modify them under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + UPX and UCL are distributed in the hope that they will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + + +SPECIAL EXCEPTION FOR COMPRESSED EXECUTABLES +============================================ + + The stub which is imbedded in each UPX compressed program is part + of UPX and UCL, and contains code that is under our copyright. The + terms of the GNU General Public License still apply as compressing + a program is a special form of linking with our stub. + + Hereby Markus F.X.J. Oberhumer and Laszlo Molnar grant you special + permission to freely use and distribute all UPX compressed programs + (including commercial ones), subject to the following restrictions: + + 1. You must compress your program with a completely unmodified UPX + version; either with our precompiled version, or (at your option) + with a self compiled version of the unmodified UPX sources as + distributed by us. + 2. This also implies that the UPX stub must be completely unmodfied, i.e. + the stub imbedded in your compressed program must be byte-identical + to the stub that is produced by the official unmodified UPX version. + 3. The decompressor and any other code from the stub must exclusively get + used by the unmodified UPX stub for decompressing your program at + program startup. No portion of the stub may get read, copied, + called or otherwise get used or accessed by your program. + + +ANNOTATIONS +=========== + + - You can use a modified UPX version or modified UPX stub only for + programs that are compatible with the GNU General Public License. + + - We grant you special permission to freely use and distribute all UPX + compressed programs. But any modification of the UPX stub (such as, + but not limited to, removing our copyright string or making your + program non-decompressible) will immediately revoke your right to + use and distribute a UPX compressed program. + + - UPX is not a software protection tool; by requiring that you use + the unmodified UPX version for your proprietary programs we + make sure that any user can decompress your program. This protects + both you and your users as nobody can hide malicious code - + any program that cannot be decompressed is highly suspicious + by definition. + + - You can integrate all or part of UPX and UCL into projects that + are compatible with the GNU GPL, but obviously you cannot grant + any special exceptions beyond the GPL for our code in your project. + + - We want to actively support manufacturers of virus scanners and + similar security software. Please contact us if you would like to + incorporate parts of UPX or UCL into such a product. + + + +Markus F.X.J. Oberhumer Laszlo Molnar +markus.oberhumer@jk.uni-linz.ac.at ml1050@cdata.tvnet.hu + +Linz, Austria, 25 Feb 2000 + + + +-----BEGIN PGP SIGNATURE----- +Version: 2.6.3ia +Charset: noconv + +iQCVAwUBOLaLS210fyLu8beJAQFYVAP/ShzENWKLTvedLCjZbDcwaBEHfUVcrGMI +wE7frMkbWT2zmkdv9hW90WmjMhOBu7yhUplvN8BKOtLiolEnZmLCYu8AGCwr5wBf +dfLoClxnzfTtgQv5axF1awp4RwCUH3hf4cDrOVqmAsWXKPHtm4hx96jF6L4oHhjx +OO03+ojZdO8= +=CS52 +-----END PGP SIGNATURE----- diff --git a/Tools/UPX/NEWS b/Tools/UPX/NEWS new file mode 100644 index 00000000..a25da715 --- /dev/null +++ b/Tools/UPX/NEWS @@ -0,0 +1,478 @@ +================================================================== +User visible changes for UPX +================================================================== + +Changes in 3.09 (18 Feb 2013): + * New option --preserve-build-id for GNU ELF. + * Allow for code signing and LC_UUID on Mac OS X executables. + * Allow non-contiguous LC_SEGMENTs and 0==.vmsize for Mach-O. + * Allow zero-filled final page in PackUnix::canUnpack(). + * bug fixes + +Changes in 3.08 (12 Dec 2011): + * Fix allocation in runtime stub for darwin.macho-entry (i386 and amd64). + * Compress shared library on ELF i386 only [ld.so threatens even this case]. + * Attempt to support ELF on QNX 6.3.0 for armel (experimental). + * Better diagnostic when ELF -fPIC is needed. + * PT_NOTE improvements for *BSD. + * Preserve more ELF .e_flags on ARM. + * Minor code improvements for ELF stubs. + * Defend against another flavor of corrupt PE header. + * bug fixes + +Changes in 3.07 (08 Sep 2010): + * win32/pe: fixed relocation handling for files with *no* TLS callbacks + [severe bug introduced in 3.06] + +Changes in 3.06 (04 Sep 2010): + * win32/pe: TLS callback support contributed by Stefan Widmann. Thanks! + * bug fixes + +Changes in 3.05 (27 Apr 2010): + * i386-linux and amd64-linux support shared libraries (DT_INIT must + exist, all info needed by runtime loader must be first in .text, etc.) + * Linux /proc/self/exe now is preserved by default, by leaving behind + one page. New compress-time option --unmap-all-pages is available. + * Withdraw support for shared libraries on Darwin (Apple Mac OS X) + because upx does not understand enough about .dylib. + * bug fixes + +Changes in 3.04 (27 Sep 2009): + * new format Mach/AMD64 supports 64-bit programs on Apple Macintosh. + * new formats Dylib/i386 and Dylib/ppc32 support shared libraries + [such as browser plugins] on Darwin (Apple Macintosh). An existing + -init function (LC_ROUTINES command) is required. + * new format vmlinuz/armel for Debian NSLU2 (etc.) linux kernel + * bvmlinuz boot protocol 2.08 for 386 Linux kernel + * Extended ABI version 4 for armel-eabi ARM Linux ELF + * bug fixes + +Changes in 3.03 (27 Apr 2008): + * implement cache flushing for PowerPC (esp. model 440) + * fix cache flushing on MIPS (>3 MiB compressed, or with holes) + * fix MIPS big-endian + * bug fixes + +Changes in 3.02 (16 Dec 2007): + * fix unmapping on arm-linux.elf + * fix error checking in mmap for i386-linux.elf [triggered by -fPIE] + * bug fixes + +Changes in 3.01 (31 Jul 2007): + * new options --no-mode, --no-owner and --no-time to disable preservation + of mode (file permissions), file ownership and timestamps. + * dos/exe: fixed an incorrect error message caused by a bug in + relocation handling + * new format linux/mipsel supports ELF on [32-bit] R3000 + * fix argv[0] on PowerPC with --lzma + * bug fixes + +Changes in 3.00 (27 Apr 2007): + * watcom/le & tmt/adam: fixed a problem when using certain filters + +Changes in 2.93 beta (08 Mar 2007): + * new formats Mach/i386 and Mach/fat support Mac OS X i686 and + Universal binaries [i686 and PowerPC only] + * dos/exe: LZMA is now also supported for 16-bit dos/exe. Please note that + you have to explicitly use '--lzma' even for '--ultra-brute' here + because runtime decompression is about 30 times slower than NRV - + which is really noticeable on old machines. + * dos/exe: fixed a rarely occuring bug in relocation handling + * win32/pe & arm/pe: better icon compression handling + +Changes in 2.92 beta (23 Jan 2007): + * new option '--ultra-brute' which tries even more variants + * slightly improved compression ratio for some files when + using '--brute' or '--ultra-brute' + * bug fixes + +Changes in 2.91 beta (29 Nov 2006): + * assorted bug fixes + * arm/pe: fix "missing" icon & version info resource problem for wince 5 + * win32/pe & arm/pe: added option --compress-icons=3 to compress all icons + +Changes in 2.90 beta (08 Oct 2006): + * LZMA algorithm support for most of the 32-bit and 64-bit file formats; + use new option '--lzma' to enable + * new format: BSD/elf386 supporting FreeBSD, NetBSD and OpenBSD + via auto-detection of PT_NOTE or EI_OSABI + * arm/pe: all the NRV compression methods are now supported + (only NRV2D is missing in thumb mode) + * linux/elf386, linux/ElfAMD: remember /proc/self/exe in environment + * major source code changes: the runtime decompression stubs are now + built from internal ELF objects + +================================================================== + +Changes in 2.03 (07 Nov 2006): + * bvmlinuz/386: fix for kernels not at 0x100000; also allow x86_64 + * linux/elf386: work around Linux kernel bug (0-length .bss needs PF_W) + +Changes in 2.02 (13 Aug 2006): + * linux/386: work around Linux kernel bug (".bss" requires PF_W) + * linux/ppc32, mach/ppc32: compressed programs now work on a 405 CPU + * vmlinuz/386: fixed zlib uncompression problem on DOS + +Changes in 2.01 (06 Jun 2006): + * arm/pe: better DLL support + * dos/exe: device driver support added + * linux/386: Fix --force-execve for PaX, grSecurity, and strict SELinux. + /tmp must support execve(); therefore /tmp cannot be mounted 'noexec'. + * win32/pe & arm/pe: added new option '--keep-resource=' for + excluding selected resources from compression + +Changes in 2.00 (27 Apr 2006): + * linux/386: the stub now prints an error message if some strict + SELinux mode does prevent runtime decompression and execution + (for a fully SELinux-compatible but otherwise inferior compression + format you can use the '--force-execve' option) + * linux/386: worked around a problem where certain Linux kernels + clobber the %ebx register during a syscall + * win32/pe: disable filters for files with broken PE headers + +Changes in 1.96 beta (13 Apr 2006): + * arm/pe: added filter support + * win32/pe: removed an unnecessary check so that Delphi 2006 and + Digital Mars C++ programs finally are supported + +Changes in 1.95 beta (09 Apr 2006): + * arm/pe: added DLL support + * arm/pe: added thumb mode stub support + * arm/pe: added unpacking support + * win32/pe: really worked around R6002 runtime errors + +Changes in 1.94 beta (11 Mar 2006): + * new format: added support for arm/pe (ARM executables running on WinCE) + * new format: added support for linux elf/amd64 + * new format: added support for linux elf/ppc32 + * new format: added support for mach/ppc32 (Apple Mac OS X) + * win32/pe: hopefully working "load config" support + * win32/pe: R6002 runtime errors worked around + * win32/pe: the stub now clears the dirty stack + +Changes in 1.93 beta (07 Feb 2005): + * vmlinuz/386: fixes to support more kernels + +Changes in 1.92 beta (20 Jul 2004): + * win32/pe: added option '--strip-loadconf' to strip the SEH load + config section [NOTE: this option is obsolete since UPX 1.94] + * win32/pe: try to detect .NET (win32/net) files [not yet supported by UPX] + * vmlinux/386: new format that directly supports building Linux kernels + * source code: now compiles cleanly under Win64 + +Changes in 1.91 beta (30 Jun 2004): + * djgpp2/coff: added support for recent binutils versions + * linux/elf386, linux/sh386: lots of improvements + * vmlinuz/386: added support for recent kernels + * watcom/le: don't crash on files without relocations + * win32/pe: stricter checks of some PE values + * option '--brute' now implies '--crp-ms=999999'. + * source code: much improved portability using ACC, the + Automatic Compiler Configuration + * source code: compile fixes for strict ISO C++ compilers + * source code: compile fixes for Win64 + * re-synced with upx 1.25 branch + +Changes in 1.90 beta (11 Nov 2002): + * implemented several new options for finer compression control: + '--all-methods', '--all-filters' and '--brute' + * ps1/exe: new format - UPX now supports PlayStation One programs + * linux/386: added the option '--force-execve' + * vmlinuz/386: better kernel detection and sanity checks + * re-synced with upx 1.24 branch + * documentation updates + +Changes in 1.11 beta (20 Dec 2000): + * vmlinuz/386: new format - UPX now supports bootable linux kernels + * linux/elf386: added the new ELF direct-to-memory executable format - no + more temp files are needed for decompression! + * linux/sh386: added the new shell direct-to-memory executable format - no + more temp files are needed for decompression! + * reduced overall memory requirements during packing + * quite a number of internal source code rearrangements + +================================================================== + +Changes in 1.25 (29 Jun 2004) + * INFO: http://upx.sourceforge.net is the permanent UPX home page + * watcom/le: don't crash on files without relocations + * win32/pe: stricter checks of some PE values + * source code: much improved portability using ACC, the + Automatic Compiler Configuration + * source code: compile fixes for strict ISO C++ compilers + * source code: compile fixes for Win64 + +Changes in 1.24 (07 Nov 2002) + * djgpp2/coff: stricter check of the COFF header to work around a + problem with certain binutils versions + +Changes in 1.23 (05 Sep 2002) + * atari/tos: fixed an unpacking problem where a buffer was too + small (introduced in 1.22) + * linux/386: don't give up too early if a single block turns out + to be incompressible + * documentation: added some quick tips how to achieve the best + compression ratio for the final release of your application + * fixed a rare situation where the exit code was not set correctly + +Changes in 1.22 (27 Jun 2002) + * atari/tos: the stub now flushes the CPU cache to avoid + problems on 68030+ machines + * source code: additional compiler support for Borland C++, + Digital Mars C++ and Watcom C++ + +Changes in 1.21 (01 Jun 2002) + * New option '--crp-ms=' for slightly better compression at the cost + of higher memory requirements during compression. + Try 'upx --best --crp-ms=100000'. See the docs for more info. + * source code: portability fixes + * source code: compile fixes for g++ 3.0 and g++ 3.1 + +Changes in 1.20 (23 May 2001) + * slightly faster compression + * work around a gcc problem in the latest djgpp2 distribution + * watcom/le: fixed detection of already compressed files + * win32/pe: do not compress RT_MANIFEST resource types + * win32/pe: improved the error message for empty resource sections + * [NOTE: the jump from 1.08 to 1.20 is to avoid confusion with + our unstable development releases 1.1x and 1.9x] + +Changes in 1.08 (30 Apr 2001) + * new native port to atari/tos + * win32/pe: shortened the identstring + * source code: portability fixes - UPX now builds cleanly under m68k CPUs + +Changes in 1.07 (20 Feb 2001) + * win32/pe: corrected the TLS callback check + * win32/pe: really fixed that rare bug in relocation handling + * win32/pe: experimental support for SizeOfHeaders > 0x1000 + * win32/pe: check for superfluous data between sections + * win32/pe: compressing screensavers (.scr) should finally work + +Changes in 1.06 (27 Jan 2001) + * win32/pe: the check for TLS callbacks introduced in 1.05 + was too strict - disabled for now + * dos/com: decreased the decompressor stack size a little bit + +Changes in 1.05 (24 Jan 2001) + * win32/pe: refuse to compress programs with TLS callbacks + * win32/pe: stub changes to avoid slowdowns with some virus monitors + * win32/pe: reverted the relocation handling changes in 1.04 + * linux/386: dont try to compress Linux kernel images (have a look + at the unstable UPX 1.1x beta versions for that) + +Changes in 1.04 (19 Dec 2000) + * dos/exe: fixed an internal error when using '--no-reloc' + * win32/pe: fixed a rare bug in the relocation handling code + * some tunings for the default compression level + +Changes in 1.03 (30 Nov 2000) + * linked with a new version of the NRV compression library: + - improved compression ratio a little bit + - overall significantly faster compression + - much faster when using high compression levels like '-9' or '--best' + - much faster with large files + * atari/tos: added support for FreeMiNT + * the 32-bit DOS version now uses the new CWSDSTUB extender + +Changes in 1.02 (13 Sep 2000) + * watcom/le: fixed a problem with the Causeway extender + * win32/pe: don't automatically strip relocs if they seem needed + * support multiple backup generations when using '-k' + * updated the console screen driver + +Changes in 1.01 (09 Apr 2000) + * win32/pe: fixed an uncompression problem in DLLs with empty + fixup sections + * win32/pe: fixed another rare uncompression problem - a field in the + PE header was set incorrectly + +Changes in 1.00 (26 Mar 2000) + * documentation updates + * watcom/le: do not duplicate the non-resident name table + * win32/pe: fixed an import handling problem: sometimes too much data + could be deleted from a file -> the uncompressed file would not work + anymore + +Changes in 0.99.3 (07 Mar 2000) + * win32/pe: fixed a rare problem in the stub string handling part + +Changes in 0.99.2 (02 Mar 2000) + * dos/exe: fixed a typo causing an internal error (introduced in 0.99.1) + +Changes in 0.99.1 (29 Feb 2000) + * win32/pe: fixed some object alignments which were causing + problems when loading compressed DLLs under Windows NT/2000 + +Changes in 0.99 (25 Feb 2000) + * FULL SOURCE CODE RELEASED UNDER THE TERMS OF THE GNU GPL + * win32/pe: changed default to '--strip-relocs=1' + * dos/com and dos/sys: fixed a bad decompressor problem + * linux/386: the counter for the progress indicator was off by one + +Changes in 0.94 (06 Dec 1999) + * win32/pe: the stub now calls ExitProcess in case of import errors + * under DOS and Windows, the environment variable UPX now accepts + a '#' as replacement for '=' because of a COMMAND.COM limitation + +Changes in 0.93 (22 Nov 1999) + * win32/pe: fixed --strip-relocs problem with uncompression + * win32/pe: fixed a bug which could produce a broken decompressor stub + * linux/386: yet another FreeBSD compatibility fix + +Changes in 0.92 (14 Nov 1999) + * win32/pe: really fixed that one line (see below) + +Changes in 0.91 (13 Nov 1999) + * win32/pe: an important one-line fix for the newly introduced problems + * dos/com and dos/sys: fixed an internal error + * dos/exe: correctly restore cs when uncompressing + +Changes in 0.90 (10 Nov 1999) + * all formats: '--overlay=copy' now is the default overlay mode + * improved compression ratio for most files + * win32/pe: uncompression is finally supported + * win32/pe: never compress REGISTRY resources + * win32/pe: headersize was not set in PE header + * win32/pe: resource handling is rewritten + * win32/pe: the last :-) TLS problem is fixed + * win32/pe: somewhat less memory is required during compression + * linux/386: fixed compression of scripts which was broken since 0.71 + * linux/386: more FreeBSD compatibility issues + * changed option: '-i' now prints some more details during compression + (not finished yet) + +Changes in 0.84 (04 Oct 1999) + * dos/exe: fixed a rare problem where the decompressor could crash + * some other minor fixes + +Changes in 0.83 (17 Sep 1999) + * dos/exe: fixed minimal memory requirement problem for some files + * win32/pe: fixed a bug which caused a crash in some compressed files + * linux/386: various improvements in the stub; also, for the sake + of FreeBSD users, the stub is now branded as Linux/ELF + +Changes in 0.82 (16 Aug 1999) + * dos/exe: fixed a decompressor bug which could cause crash on some files + * linux/386: section headers are now stripped from the stub so that + 'strip' won't ruin a compressed file any longer + * wc/le: support for stack not in the last object disabled again + * win32/pe: removed some unneeded data + +Changes in 0.81 (04 Aug 1999) + * win32/pe: fixed an important bug in import handling + * dos/com: fixed an internal error that could happen with very small files + +Changes in 0.80 (03 Aug 1999) + * you can set some default options in the environment var 'UPX' + * dos/com: the decompressor stub now checks for enough free memory + * dos/exe: decompressor rewritten, some bugs are fixed + * dos/exe: new option '--no-reloc': no relocation data is put into + the DOS header + * tmt/adam: added support for more stubs, detect already packed files + * tmt/adam: new option '--copy-overlay' + * wc/le: reduced memory requirement during uncompression + * wc/le: support files which do not contain their stack in the last object + * wc/le: fixed a bug which could cause a crash, improved relocation + handling + * wc/le: new option '--copy-overlay' + * win32/pe: '--compress-icons=2' is now the default + * win32/pe: even better TLS support + * win32/pe: versioninfo works on NT + * win32/pe: import by ordinal from kernel32.dll works + * win32/pe: other import improvements: importing a nonexistent DLL + results in a usual Windows message, importing a nonexistent function + results in program exit (instead of crash ;-) + * win32/pe: new option: '--compress-resources=0' + * win32/pe: reduced memory requirement during uncompression, some + files might even require LESS memory when they're compressed + * win32/pe: TYPELIBs should work now + * win32/pe: improved relocation handling, 16-bit relocations should work + * win32/pe: new option '--strip-relocs' (only if you know what you are doing) + * win32/pe: new option '--copy-overlay' + * important internal changes: now the stubs are built at runtime + +Changes in 0.72 (12 May 1999) + * tmt/adam: fixed a serious problem in the decompressor stub; all + compressed tmt files should be recompressed + * win32/pe: fixed the 'shared sections not supported' warning: + read-only shared sections are fine + * win32/pe: never compress TYPELIB resources + * win32/pe: compressed files are hopefully less suspicious to heuristic + virus scanners now + * linux/386: minor decompressor stub updates, nicer progress bar + +Changes in 0.71 (19 Apr 1999) + * dos/exe: added option '--no-overlay' + * linux/386: various improvements in the stub, most notably the + overhead for an extra cleanup process has been removed + * win32/pe: added support for export forwarders + * win32/pe: added support for DLLs without entry point or imports + * win32/pe: yet another .bss fix + * win32/pe: new option '--compress-icons=2': compress all icons + which are not in the first icon directory + * win32/pe: rearranged stub to avoid false alerts from some virus scanners + +Changes in 0.70 (30 Mar 1999) + * added support for linux/386 executables + * improved compression ratio quite a bit + * added new compression level '--best' to squeeze out even some more bytes + * win32/pe: TLS support is much better now + * win32/pe: --compress-icons=0 should now work as well + * the usual minor fixes for win32/pe + +Changes in 0.62 (16 Mar 1999) + * win32/pe: --compress-icons and --compress-exports are on now by default + * win32/pe: --compress-icons should really work now + * win32/pe: fixed a problem with embedded .bss sections + +Changes in 0.61 (08 Mar 1999) + * atari/tos: fixed a problem where the bss segment could become too small + +Changes in 0.60 (06 Mar 1999) + * win32/pe: fixed file corruption when the size of the export data is invalid + * win32/pe: fixed a problem with empty resource data + * win32/pe: compressed file alignment set to minimum value + * win32/pe: made all compressed sections writable + * fixed some other win32/pe bugs + * fixed an address optimization problem for some not Watcom LE files + * fixed a bug which could make UPX hang when an exe header contained + an illegal value + * added some compression flags for the win32/pe format + * added support for Atari ST/TT executables (atari/tos) + * improved compression ratio + * improved compression speed + +Changes in 0.51 (14 Jan 1999) + * fixed a small bug in the PE header that would prevent some compressed + win32/pe executables from running under Windows NT and WINE + +Changes in 0.50 (03 Jan 1999) + * added support for PE format executables (win32/pe & rtm32/pe) + * added support for TMT executables (tmt/adam) + * fixed a dos/sys bug that affected OpenDOS + +Changes in 0.40 (05 Oct 1998) + * improved compression ratio + * fixed a small but fatal bug in dos/sys introduced in 0.30 + * fixed a rare bug in dos/exe + * worked around a bug in djgpp's strip 2.8 + * djgpp/coff: Allegro packfile support should work now + * added dos/exeh compression method (works on 386+) + +Changes in 0.30 (27 Jul 1998) + * fixed a serious bug in the 32-bit compressors - please don't use + djgpp/coff and watcom/le compressed files from previous versions, + some of them are possibly damaged ! + * the 16-bit uncompressors are a little bit shorter & faster + * fixed progress indicator for VESA and SVGA text modes + +Changes in 0.20 (05 Jul 1998) + * second public beta release + * too many changes to list here + +Changes in 0.05 (26 May 1998) + * first public beta release + + +# vim:set syntax=off tw=0 ts=4 sw=4 et: -*- coding: utf-8 -*- diff --git a/Tools/UPX/README b/Tools/UPX/README new file mode 100644 index 00000000..63ccb5df --- /dev/null +++ b/Tools/UPX/README @@ -0,0 +1,142 @@ + ooooo ooo ooooooooo. ooooooo ooooo + `888' `8' `888 `Y88. `8888 d8' + 888 8 888 .d88' Y888..8P + 888 8 888ooo88P' `8888' + 888 8 888 .8PY888. + `88. .8' 888 d8' `888b + `YbodP' o888o o888o o88888o + + + The Ultimate Packer for eXecutables + Copyright (c) 1996-2013 Markus Oberhumer, Laszlo Molnar & John Reiser + http://upx.sourceforge.net + + + +WELCOME +======= + +Welcome to UPX ! + +Please don't forget to read the file LICENSE - UPX is distributed +under the GNU General Public License (GPL) with special exceptions +allowing the distribution of all compressed executables, including +commercial programs. + + +INTRODUCTION +============ + +UPX is an advanced executable file compressor. UPX will typically +reduce the file size of programs and DLLs by around 50%-70%, thus +reducing disk space, network load times, download times and +other distribution and storage costs. + +Programs and libraries compressed by UPX are completely self-contained +and run exactly as before, with no runtime or memory penalty for most +of the supported formats. + +UPX supports a number of different executable formats, including +Windows 95/98/ME/NT/2000/XP/CE programs and DLLs, DOS programs, +and Linux executables and kernels. + +UPX is free software distributed under the term of the GNU General +Public License. Full source code is available. + +UPX may be distributed and used freely, even with commercial applications. +See the UPX License Agreement for details. + +UPX is rated number one in the well known Archive Comparison Test. Visit +http://compression.ca/ . + +UPX aims to be Commercial Quality Freeware. + + +SHORT DOCUMENTATION +=================== + +'upx program.exe' will compress a program or DLL. For best compression +results try 'upx --brute program.exe'. + +Please see the file UPX.DOC for the full documentation. The files +NEWS and BUGS also contain various tidbits of information. + + +DISCLAIMER +========== + +UPX comes with ABSOLUTELY NO WARRANTY; for details see the file LICENSE. + +Having said that, we think that UPX is quite stable now. Indeed we +have compressed lots of files without any problems. Also, the +current version has undergone several months of beta testing - +actually it's almost 8 years since our first public beta. + +This is the first production quality release, and we plan that future +releases will be backward compatible with this version. + +Please report all problems or suggestions to the authors. Thanks. + + +THE FUTURE +========== + + - We'd really love to support handheld systems like the PalmPilot because + compression makes a lot of sense here. And - because of the atari/tos + format - we already have a working decompressor in 68000 assembly. + Unfortunately we know next to nothing about the operating system + architecture of such handhelds, so we need some information from + an expert. Please contact us if you think you can help. + + - The Linux approach could probably get ported to a lot of other Unix + variants, at least for other i386 architectures it shouldn't be too + much work. If someone sends me a fresh hard disk and an official + FreeBSD/OpenBSD/NetBSD/Solaris/BeOS... CD I might take a look at it ;-) + + - We will *NOT* add any sort of protection and/or encryption. + This only gives people a false feeling of security because + by definition all protectors/compressors can be broken. + And don't trust any advertisement of authors of other executable + compressors about this topic - just do a websearch on "unpackers"... + + - Fix all remaining bugs - keep your reports coming ;-) + + - See the file PROJECTS in the source code distribution if you want + to contribute. + + +COPYRIGHT +========= + +Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer +Copyright (C) 1996-2013 Laszlo Molnar +Copyright (C) 2000-2013 John F. Reiser + +This program may be used freely, and you are welcome to +redistribute it under certain conditions. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +UPX License Agreement for more details. + +You should have received a copy of the UPX License Agreement along +with this program; see the file LICENSE. If not, visit the UPX home page. + + +Share and enjoy, +Markus & Laszlo + + + Markus F.X.J. Oberhumer Laszlo Molnar + + + + +[ The term UPX is a shorthand for the Ultimate Packer for eXecutables + and holds no connection with potential owners of registered trademarks + or other rights. ] + +[ Feel free to contact us if you have commercial compression requirements + or interesting job offers. ] + diff --git a/Tools/UPX/README.1ST b/Tools/UPX/README.1ST new file mode 100644 index 00000000..51ad0816 --- /dev/null +++ b/Tools/UPX/README.1ST @@ -0,0 +1,23 @@ + ooooo ooo ooooooooo. ooooooo ooooo + `888' `8' `888 `Y88. `8888 d8' + 888 8 888 .d88' Y888..8P + 888 8 888ooo88P' `8888' + 888 8 888 .8PY888. + `88. .8' 888 d8' `888b + `YbodP' o888o o888o o88888o + + + The Ultimate Packer for eXecutables + Copyright (c) 1996-2013 Markus Oberhumer, Laszlo Molnar & John Reiser + http://upx.sourceforge.net + + +MAJOR NEWS IN UPX 3 +=================== + +The main news since UPX 2 are: + + * new format: added support for linux elf/arm + + * better compression using the LZMA algorithm (option '--lzma') + diff --git a/Tools/UPX/THANKS b/Tools/UPX/THANKS new file mode 100644 index 00000000..159429b5 --- /dev/null +++ b/Tools/UPX/THANKS @@ -0,0 +1,61 @@ + ooooo ooo ooooooooo. ooooooo ooooo + `888' `8' `888 `Y88. `8888 d8' + 888 8 888 .d88' Y888..8P + 888 8 888ooo88P' `8888' + 888 8 888 .8PY888. + `88. .8' 888 d8' `888b + `YbodP' o888o o888o o88888o + + + The Ultimate Packer for eXecutables + Copyright (c) 1996-2013 Markus Oberhumer, Laszlo Molnar & John Reiser + http://upx.sourceforge.net + + +.___.. . + | |_ _.._ ;_/ __ + | [ )(_][ )| \_) +-------------------- + +UPX would not be what it is today without the invaluable help of +everybody who was kind enough to spend time testing it, using it +in applications and reporting bugs. + +The following people made especially gracious contributions of their +time and energy in helping to track down bugs, add new features, and +generally assist in the UPX maintainership process: + +Adam Ierymenko + for severals ideas for the Linux version +Andi Kleen and Jamie Lokier + for the /proc/self/fd/X and other Linux suggestions +Andreas Muegge + for the Win32 GUI +Atli Mar Gudmundsson + for several comments on the win32/pe stub +Charles W. Sandmann + for the idea with the stubless decompressor in djgpp2/coff +Ice + for debugging the PE headersize problem down +Joergen Ibsen and d'b + for the relocation & address optimization ideas +John S. Fine + for the new version of the dos/exe decompressor +Lukundoo + for beta testing +Michael Devore + for initial dos/exe device driver support +Oleg V. Volkov + for various FreeBSD specific informations +The Owl & G-RoM + for the --compress-icons fix +Ralph Roth + for reporting several bugs +Salvador Eduardo Tropea + for beta testing +Stefan Widmann + for the win32/pe TLS callback support +The WINE project (http://www.winehq.com/) + for lots of useful information found in their PE loader sources +Natascha + diff --git a/Tools/UPX/TODO b/Tools/UPX/TODO new file mode 100644 index 00000000..210d9a17 --- /dev/null +++ b/Tools/UPX/TODO @@ -0,0 +1,114 @@ +UPX TODO list. Last updated 2006-12-08. + + +IMPORTANT PROBLEMS THAT SHOULD BE FIXED SOON: + +- [None] + + +OTHER: + +- docs: convert docs from upx.pod to use AsciiDoc + +- check all to make sure they are not invalid + +- throwNotCompressible() is not a real error, so make the output nicer + (info: bla bla). Also ui.cpp (total_*). + + +----------------------------------------------------------------------- + + +IMPROVED COMPRESSION RATIO +========================== + +- experiment with new filters + +- implement filters for dos/exe + +- filters: could we exploit a f->firstcall info field ? + +- for small programs (e.g. < 64k), try an additional algorithm + to see if it gives better compression + + +ALL FORMATS +=========== + +- more thoroughly test the exe-header in canPack() + and throw exceptions when encountering bad values. + +- implement `--cpu=486' option to use bswap on the 32-bit formats + (if cpu >= 486) + + +FORMAT DJGPP2/COFF +================== + +- handle overlays + +- fix default file extension handling when the --coff option is set + + +FORMAT DOS/EXE +============== + +- implement filters + +- add a check so that we don't pack djgpp1 binaries + + +FORMAT LINUX/386 +================ + +- don't mmap() the temporary output file - this seems to improve + file io speed + + +FORMAT TMT/ADAM +=============== + +- the decompressors are already aligned, no need for an + extra alignment + + +FORMAT WATCOM/LE +================ + +- handle files without relocations + +- the decompressors are already aligned, no need for an + extra alignment + +- fix default file extension handling when the --le option is set + +- handle holes in the file + + +FORMAT WIN16/NE +=============== + +- implement readFileHeader() to correctly identify a win16/ne + executable, so that the call for contribution will get thrown + + +FORMAT WIN32/PE +=============== + +- fix the section alignment with the Intel compiler + +- decrease runtime memory overhead + +3 - difficult) don't compress the BSS section and other holes. + +4 - medium - ml) fix when objectalign < 0x1000 + +4 - easy - ml) put the original offset of moved resources somewhere into + the res.dir. (if it's safe to do) + +4 - ??? - ml) fix FIXMEs + +5 - medium - ml) try to put the preprocessed imports & relocs back to their + original section if possible. this could save some virtual memory + address space. + diff --git a/Tools/UPX/upx.1 b/Tools/UPX/upx.1 new file mode 100644 index 00000000..1fd249ed --- /dev/null +++ b/Tools/UPX/upx.1 @@ -0,0 +1,1036 @@ +.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.13) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "UPX 1" +.TH UPX 1 "2013-02-18" "upx 3.09" " " +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +upx \- compress or expand executable files +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBupx\fR [\ \fIcommand\fR\ ] [\ \fIoptions\fR\ ] \fIfilename\fR... +.SH "ABSTRACT" +.IX Header "ABSTRACT" +.Vb 3 +\& The Ultimate Packer for eXecutables +\& Copyright (c) 1996\-2013 Markus Oberhumer, Laszlo Molnar & John Reiser +\& http://upx.sourceforge.net +.Ve +.PP +\&\fB\s-1UPX\s0\fR is a portable, extendable, high-performance executable packer for +several different executable formats. It achieves an excellent compression +ratio and offers \fI*very*\fR fast decompression. Your executables suffer +no memory overhead or other drawbacks for most of the formats supported, +because of in-place decompression. +.PP +While you may use \fB\s-1UPX\s0\fR freely for both non-commercial and commercial +executables (for details see the file \s-1LICENSE\s0), we would highly +appreciate if you credit \fB\s-1UPX\s0\fR and ourselves in the documentation, +possibly including a reference to the \fB\s-1UPX\s0\fR home page. Thanks. +.PP +[ Using \fB\s-1UPX\s0\fR in non-OpenSource applications without proper credits +is considered not politically correct ;\-) ] +.SH "DISCLAIMER" +.IX Header "DISCLAIMER" +\&\fB\s-1UPX\s0\fR comes with \s-1ABSOLUTELY\s0 \s-1NO\s0 \s-1WARRANTY\s0; for details see the file \s-1LICENSE\s0. +.PP +This is the first production quality release, and we plan that future 1.xx +releases will be backward compatible with this version. +.PP +Please report all problems or suggestions to the authors. Thanks. +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fB\s-1UPX\s0\fR is a versatile executable packer with the following features: +.PP +.Vb 2 +\& \- excellent compression ratio: compresses better than zip/gzip, +\& use UPX to decrease the size of your distribution ! +\& +\& \- very fast decompression: about 10 MiB/sec on an ancient Pentium 133, +\& about 200 MiB/sec on an Athlon XP 2000+. +\& +\& \- no memory overhead for your compressed executables for most of the +\& supported formats +\& +\& \- safe: you can list, test and unpack your executables +\& Also, a checksum of both the compressed and uncompressed file is +\& maintained internally. +\& +\& \- universal: UPX can pack a number of executable formats: +\& * atari/tos +\& * bvmlinuz/386 [bootable Linux kernel] +\& * djgpp2/coff +\& * dos/com +\& * dos/exe +\& * dos/sys +\& * linux/386 +\& * linux/elf386 +\& * linux/sh386 +\& * ps1/exe +\& * rtm32/pe +\& * tmt/adam +\& * vmlinuz/386 [bootable Linux kernel] +\& * vmlinux/386 +\& * watcom/le (supporting DOS4G, PMODE/W, DOS32a and CauseWay) +\& * win32/pe (exe and dll) +\& * arm/pe (exe and dll) +\& * linux/elfamd64 +\& * linux/elfppc32 +\& * mach/elfppc32 +\& +\& \- portable: UPX is written in portable endian\-neutral C++ +\& +\& \- extendable: because of the class layout it\*(Aqs very easy to support +\& new executable formats or add new compression algorithms +\& +\& \- free: UPX can be distributed and used freely. And from version 0.99 +\& the full source code of UPX is released under the GNU General Public +\& License (GPL) ! +.Ve +.PP +You probably understand now why we call \fB\s-1UPX\s0\fR the "\fIultimate\fR" +executable packer. +.SH "COMMANDS" +.IX Header "COMMANDS" +.SS "Compress" +.IX Subsection "Compress" +This is the default operation, eg. \fBupx yourfile.exe\fR will compress the file +specified on the command line. +.SS "Decompress" +.IX Subsection "Decompress" +All \fB\s-1UPX\s0\fR supported file formats can be unpacked using the \fB\-d\fR switch, eg. +\&\fBupx \-d yourfile.exe\fR will uncompress the file you've just compressed. +.SS "Test" +.IX Subsection "Test" +The \fB\-t\fR command tests the integrity of the compressed and uncompressed +data, eg. \fBupx \-t yourfile.exe\fR check whether your file can be safely +decompressed. Note, that this command doesn't check the whole file, only +the part that will be uncompressed during program execution. This means +that you should not use this command instead of a virus checker. +.SS "List" +.IX Subsection "List" +The \fB\-l\fR command prints out some information about the compressed files +specified on the command line as parameters, eg \fBupx \-l yourfile.exe\fR +shows the compressed / uncompressed size and the compression ratio of +\&\fIyourfile.exe\fR. +.SH "OPTIONS" +.IX Header "OPTIONS" +\&\fB\-q\fR: be quiet, suppress warnings +.PP +\&\fB\-q \-q\fR (or \fB\-qq\fR): be very quiet, suppress errors +.PP +\&\fB\-q \-q \-q\fR (or \fB\-qqq\fR): produce no output at all +.PP +\&\fB\-\-help\fR: prints the help +.PP +\&\fB\-\-version\fR: print the version of \fB\s-1UPX\s0\fR +.PP +\&\fB\-\-exact\fR: when compressing, require to be able to get a byte-identical file +after decompression with option \fB\-d\fR. [\s-1NOTE:\s0 this is work in progress and is +not supported for all formats yet. If you do care, as a workaround you can +compress and then decompress your program a first time \- any further +compress-decompress steps should then yield byte-identical results +as compared to the first decompressed version.] +.PP +[ ...to be written... \- type `\fBupx \-\-help\fR' for now ] +.SH "COMPRESSION LEVELS & TUNING" +.IX Header "COMPRESSION LEVELS & TUNING" +\&\fB\s-1UPX\s0\fR offers ten different compression levels from \fB\-1\fR to \fB\-9\fR, +and \fB\-\-best\fR. The default compression level is \fB\-8\fR for files +smaller than 512 KiB, and \fB\-7\fR otherwise. +.IP "\(bu" 4 +Compression levels 1, 2 and 3 are pretty fast. +.IP "\(bu" 4 +Compression levels 4, 5 and 6 achieve a good time/ratio performance. +.IP "\(bu" 4 +Compression levels 7, 8 and 9 favor compression ratio over speed. +.IP "\(bu" 4 +Compression level \fB\-\-best\fR may take a long time. +.PP +Note that compression level \fB\-\-best\fR can be somewhat slow for large +files, but you definitely should use it when releasing a final version +of your program. +.PP +Quick info for achieving the best compression ratio: +.IP "\(bu" 4 +Try \fBupx \-\-brute myfile.exe\fR or even \fBupx \-\-ultra\-brute myfile.exe\fR. +.IP "\(bu" 4 +Try if \fB\-\-overlay=strip\fR works. +.IP "\(bu" 4 +For win32/pe programs there's \fB\-\-strip\-relocs=0\fR. See notes below. +.SH "OVERLAY HANDLING OPTIONS" +.IX Header "OVERLAY HANDLING OPTIONS" +Info: An \*(L"overlay\*(R" means auxiliary data attached after the logical end of +an executable, and it often contains application specific data +(this is a common practice to avoid an extra data file, though +it would be better to use resource sections). +.PP +\&\fB\s-1UPX\s0\fR handles overlays like many other executable packers do: it simply +copies the overlay after the compressed image. This works with some +files, but doesn't work with others, depending on how an application +actually accesses this overlayed data. +.PP +.Vb 1 +\& \-\-overlay=copy Copy any extra data attached to the file. [DEFAULT] +\& +\& \-\-overlay=strip Strip any overlay from the program instead of +\& copying it. Be warned, this may make the compressed +\& program crash or otherwise unusable. +\& +\& \-\-overlay=skip Refuse to compress any program which has an overlay. +.Ve +.SH "ENVIRONMENT" +.IX Header "ENVIRONMENT" +The environment variable \fB\s-1UPX\s0\fR can hold a set of default +options for \fB\s-1UPX\s0\fR. These options are interpreted first and +can be overwritten by explicit command line parameters. +For example: +.PP +.Vb 3 +\& for DOS/Windows: set UPX=\-9 \-\-compress\-icons#0 +\& for sh/ksh/zsh: UPX="\-9 \-\-compress\-icons=0"; export UPX +\& for csh/tcsh: setenv UPX "\-9 \-\-compress\-icons=0" +.Ve +.PP +Under DOS/Windows you must use '#' instead of '=' when setting the +environment variable because of a \s-1COMMAND\s0.COM limitation. +.PP +Not all of the options are valid in the environment variable \- +\&\fB\s-1UPX\s0\fR will tell you. +.PP +You can explicitly use the \fB\-\-no\-env\fR option to ignore the +environment variable. +.SH "NOTES FOR THE SUPPORTED EXECUTABLE FORMATS" +.IX Header "NOTES FOR THE SUPPORTED EXECUTABLE FORMATS" +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1ATARI/TOS\s0" +.IX Subsection "NOTES FOR ATARI/TOS" +This is the executable format used by the Atari \s-1ST/TT\s0, a Motorola 68000 +based personal computer which was popular in the late '80s. Support +of this format is only because of nostalgic feelings of one of +the authors and serves no practical purpose :\-). +See http://www.freemint.de for more info. +.PP +Packed programs will be byte-identical to the original after uncompression. +All debug information will be stripped, though. +.PP +Extra options available for this executable format: +.PP +.Vb 4 +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1BVMLINUZ/I386\s0" +.IX Subsection "NOTES FOR BVMLINUZ/I386" +Same as vmlinuz/i386. +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1DOS/COM\s0" +.IX Subsection "NOTES FOR DOS/COM" +Obviously \fB\s-1UPX\s0\fR won't work with executables that want to read data from +themselves (like some commandline utilities that ship with Win95/98/ME). +.PP +Compressed programs only work on a 286+. +.PP +Packed programs will be byte-identical to the original after uncompression. +.PP +Maximum uncompressed size: ~65100 bytes. +.PP +Extra options available for this executable format: +.PP +.Vb 1 +\& \-\-8086 Create an executable that works on any 8086 CPU. +\& +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1DOS/EXE\s0" +.IX Subsection "NOTES FOR DOS/EXE" +dos/exe stands for all \*(L"normal\*(R" 16\-bit \s-1DOS\s0 executables. +.PP +Obviously \fB\s-1UPX\s0\fR won't work with executables that want to read data from +themselves (like some command line utilities that ship with Win95/98/ME). +.PP +Compressed programs only work on a 286+. +.PP +Extra options available for this executable format: +.PP +.Vb 1 +\& \-\-8086 Create an executable that works on any 8086 CPU. +\& +\& \-\-no\-reloc Use no relocation records in the exe header. +\& +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1DOS/SYS\s0" +.IX Subsection "NOTES FOR DOS/SYS" +Compressed programs only work on a 286+. +.PP +Packed programs will be byte-identical to the original after uncompression. +.PP +Maximum uncompressed size: ~65350 bytes. +.PP +Extra options available for this executable format: +.PP +.Vb 1 +\& \-\-8086 Create an executable that works on any 8086 CPU. +\& +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1DJGPP2/COFF\s0" +.IX Subsection "NOTES FOR DJGPP2/COFF" +First of all, it is recommended to use \fB\s-1UPX\s0\fR *instead* of \fBstrip\fR. strip has +the very bad habit of replacing your stub with its own (outdated) version. +Additionally \fB\s-1UPX\s0\fR corrects a bug/feature in strip v2.8.x: it +will fix the 4 KiB alignment of the stub. +.PP +\&\fB\s-1UPX\s0\fR includes the full functionality of stubify. This means it will +automatically stubify your \s-1COFF\s0 files. Use the option \fB\-\-coff\fR to +disable this functionality (see below). +.PP +\&\fB\s-1UPX\s0\fR automatically handles Allegro packfiles. +.PP +The \s-1DLM\s0 format (a rather exotic shared library extension) is not supported. +.PP +Packed programs will be byte-identical to the original after uncompression. +All debug information and trailing garbage will be stripped, though. +.PP +Extra options available for this executable format: +.PP +.Vb 2 +\& \-\-coff Produce COFF output instead of EXE. By default +\& UPX keeps your current stub. +\& +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1LINUX\s0 [general]" +.IX Subsection "NOTES FOR LINUX [general]" +Introduction +.PP +.Vb 4 +\& Linux/386 support in UPX consists of 3 different executable formats, +\& one optimized for ELF executables ("linux/elf386"), one optimized +\& for shell scripts ("linux/sh386"), and one generic format +\& ("linux/386"). +\& +\& We will start with a general discussion first, but please +\& also read the relevant docs for each of the individual formats. +\& +\& Also, there is special support for bootable kernels \- see the +\& description of the vmlinuz/386 format. +.Ve +.PP +General user's overview +.PP +.Vb 7 +\& Running a compressed executable program trades less space on a +\& \`\`permanent\*(Aq\*(Aq storage medium (such as a hard disk, floppy disk, +\& CD\-ROM, flash memory, EPROM, etc.) for more space in one or more +\& \`\`temporary\*(Aq\*(Aq storage media (such as RAM, swap space, /tmp, etc.). +\& Running a compressed executable also requires some additional CPU +\& cycles to generate the compressed executable in the first place, +\& and to decompress it at each invocation. +\& +\& How much space is traded? It depends on the executable, but many +\& programs save 30% to 50% of permanent disk space. How much CPU +\& overhead is there? Again, it depends on the executable, but +\& decompression speed generally is at least many megabytes per second, +\& and frequently is limited by the speed of the underlying disk +\& or network I/O. +\& +\& Depending on the statistics of usage and access, and the relative +\& speeds of CPU, RAM, swap space, /tmp, and file system storage, then +\& invoking and running a compressed executable can be faster than +\& directly running the corresponding uncompressed program. +\& The operating system might perform fewer expensive I/O operations +\& to invoke the compressed program. Paging to or from swap space +\& or /tmp might be faster than paging from the general file system. +\& \`\`Medium\-sized\*(Aq\*(Aq programs which access about 1/3 to 1/2 of their +\& stored program bytes can do particularly well with compression. +\& Small programs tend not to benefit as much because the absolute +\& savings is less. Big programs tend not to benefit proportionally +\& because each invocation may use only a small fraction of the program, +\& yet UPX decompresses the entire program before invoking it. +\& But in environments where disk or flash memory storage is limited, +\& then compression may win anyway. +\& +\& Currently, executables compressed by UPX do not share RAM at runtime +\& in the way that executables mapped from a file system do. As a +\& result, if the same program is run simultaneously by more than one +\& process, then using the compressed version will require more RAM and/or +\& swap space. So, shell programs (bash, csh, etc.) and \`\`make\*(Aq\*(Aq +\& might not be good candidates for compression. +\& +\& UPX recognizes three executable formats for Linux: Linux/elf386, +\& Linux/sh386, and Linux/386. Linux/386 is the most generic format; +\& it accommodates any file that can be executed. At runtime, the UPX +\& decompression stub re\-creates in /tmp a copy of the original file, +\& and then the copy is (re\-)executed with the same arguments. +\& ELF binary executables prefer the Linux/elf386 format by default, +\& because UPX decompresses them directly into RAM, uses only one +\& exec, does not use space in /tmp, and does not use /proc. +\& Shell scripts where the underlying shell accepts a \`\`\-c\*(Aq\*(Aq argument +\& can use the Linux/sh386 format. UPX decompresses the shell script +\& into low memory, then maps the shell and passes the entire text of the +\& script as an argument with a leading \`\`\-c\*(Aq\*(Aq. +.Ve +.PP +General benefits: +.PP +.Vb 4 +\& \- UPX can compress all executables, be it AOUT, ELF, libc4, libc5, +\& libc6, Shell/Perl/Python/... scripts, standalone Java .class +\& binaries, or whatever... +\& All scripts and programs will work just as before. +\& +\& \- Compressed programs are completely self\-contained. No need for +\& any external program. +\& +\& \- UPX keeps your original program untouched. This means that +\& after decompression you will have a byte\-identical version, +\& and you can use UPX as a file compressor just like gzip. +\& [ Note that UPX maintains a checksum of the file internally, +\& so it is indeed a reliable alternative. ] +\& +\& \- As the stub only uses syscalls and isn\*(Aqt linked against libc it +\& should run under any Linux configuration that can run ELF +\& binaries. +\& +\& \- For the same reason compressed executables should run under +\& FreeBSD and other systems which can run Linux binaries. +\& [ Please send feedback on this topic ] +.Ve +.PP +General drawbacks: +.PP +.Vb 4 +\& \- It is not advisable to compress programs which usually have many +\& instances running (like \`sh\*(Aq or \`make\*(Aq) because the common segments of +\& compressed programs won\*(Aqt be shared any longer between different +\& processes. +\& +\& \- \`ldd\*(Aq and \`size\*(Aq won\*(Aqt show anything useful because all they +\& see is the statically linked stub. Since version 0.82 the section +\& headers are stripped from the UPX stub and \`size\*(Aq doesn\*(Aqt even +\& recognize the file format. The file patches/patch\-elfcode.h has a +\& patch to fix this bug in \`size\*(Aq and other programs which use GNU BFD. +.Ve +.PP +General notes: +.PP +.Vb 2 +\& \- As UPX leaves your original program untouched it is advantageous +\& to strip it before compression. +\& +\& \- If you compress a script you will lose platform independence \- +\& this could be a problem if you are using NFS mounted disks. +\& +\& \- Compression of suid, guid and sticky\-bit programs is rejected +\& because of possible security implications. +\& +\& \- For the same reason there is no sense in making any compressed +\& program suid. +\& +\& \- Obviously UPX won\*(Aqt work with executables that want to read data +\& from themselves. E.g., this might be a problem for Perl scripts +\& which access their _\|_DATA_\|_ lines. +\& +\& \- In case of internal errors the stub will abort with exitcode 127. +\& Typical reasons for this to happen are that the program has somehow +\& been modified after compression. +\& Running \`strace \-o strace.log compressed_file\*(Aq will tell you more. +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1LINUX/ELF386\s0" +.IX Subsection "NOTES FOR LINUX/ELF386" +Please read the general Linux description first. +.PP +The linux/elf386 format decompresses directly into \s-1RAM\s0, +uses only one exec, does not use space in /tmp, +and does not use /proc. +.PP +Linux/elf386 is automatically selected for Linux \s-1ELF\s0 executables. +.PP +Packed programs will be byte-identical to the original after uncompression. +.PP +How it works: +.PP +.Vb 9 +\& For ELF executables, UPX decompresses directly to memory, simulating +\& the mapping that the operating system kernel uses during exec(), +\& including the PT_INTERP program interpreter (if any). +\& The brk() is set by a special PT_LOAD segment in the compressed +\& executable itself. UPX then wipes the stack clean except for +\& arguments, environment variables, and Elf_auxv entries (this is +\& required by bugs in the startup code of /lib/ld\-linux.so as of +\& May 2000), and transfers control to the program interpreter or +\& the e_entry address of the original executable. +\& +\& The UPX stub is about 1700 bytes long, partly written in assembler +\& and only uses kernel syscalls. It is not linked against any libc. +.Ve +.PP +Specific drawbacks: +.PP +.Vb 9 +\& \- For linux/elf386 and linux/sh386 formats, you will be relying on +\& RAM and swap space to hold all of the decompressed program during +\& the lifetime of the process. If you already use most of your swap +\& space, then you may run out. A system that is "out of memory" +\& can become fragile. Many programs do not react gracefully when +\& malloc() returns 0. With newer Linux kernels, the kernel +\& may decide to kill some processes to regain memory, and you +\& may not like the kernel\*(Aqs choice of which to kill. Running +\& /usr/bin/top is one way to check on the usage of swap space. +.Ve +.PP +Extra options available for this executable format: +.PP +.Vb 1 +\& (none) +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1LINUX/SH386\s0" +.IX Subsection "NOTES FOR LINUX/SH386" +Please read the general Linux description first. +.PP +Shell scripts where the underling shell accepts a ``\-c'' argument +can use the Linux/sh386 format. \fB\s-1UPX\s0\fR decompresses the shell script +into low memory, then maps the shell and passes the entire text of the +script as an argument with a leading ``\-c''. +It does not use space in /tmp, and does not use /proc. +.PP +Linux/sh386 is automatically selected for shell scripts that +use a known shell. +.PP +Packed programs will be byte-identical to the original after uncompression. +.PP +How it works: +.PP +.Vb 8 +\& For shell script executables (files beginning with "#!/" or "#! /") +\& where the shell is known to accept "\-c ", UPX decompresses +\& the file into low memory, then maps the shell (and its PT_INTERP), +\& and passes control to the shell with the entire decompressed file +\& as the argument after "\-c". Known shells are sh, ash, bash, bsh, csh, +\& ksh, tcsh, pdksh. Restriction: UPX cannot use this method +\& for shell scripts which use the one optional string argument after +\& the shell name in the script (example: "#! /bin/sh option3\en".) +\& +\& The UPX stub is about 1700 bytes long, partly written in assembler +\& and only uses kernel syscalls. It is not linked against any libc. +.Ve +.PP +Specific drawbacks: +.PP +.Vb 9 +\& \- For linux/elf386 and linux/sh386 formats, you will be relying on +\& RAM and swap space to hold all of the decompressed program during +\& the lifetime of the process. If you already use most of your swap +\& space, then you may run out. A system that is "out of memory" +\& can become fragile. Many programs do not react gracefully when +\& malloc() returns 0. With newer Linux kernels, the kernel +\& may decide to kill some processes to regain memory, and you +\& may not like the kernel\*(Aqs choice of which to kill. Running +\& /usr/bin/top is one way to check on the usage of swap space. +.Ve +.PP +Extra options available for this executable format: +.PP +.Vb 1 +\& (none) +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1LINUX/386\s0" +.IX Subsection "NOTES FOR LINUX/386" +Please read the general Linux description first. +.PP +The generic linux/386 format decompresses to /tmp and needs +/proc file system support. It starts the decompressed program +via the \fIexecve()\fR syscall. +.PP +Linux/386 is only selected if the specialized linux/elf386 +and linux/sh386 won't recognize a file. +.PP +Packed programs will be byte-identical to the original after uncompression. +.PP +How it works: +.PP +.Vb 7 +\& For files which are not ELF and not a script for a known "\-c" shell, +\& UPX uses kernel execve(), which first requires decompressing to a +\& temporary file in the file system. Interestingly \- +\& because of the good memory management of the Linux kernel \- this +\& often does not introduce a noticeable delay, and in fact there +\& will be no disk access at all if you have enough free memory as +\& the entire process takes places within the file system buffers. +\& +\& A compressed executable consists of the UPX stub and an overlay +\& which contains the original program in a compressed form. +\& +\& The UPX stub is a statically linked ELF executable and does +\& the following at program startup: +\& +\& 1) decompress the overlay to a temporary location in /tmp +\& 2) open the temporary file for reading +\& 3) try to delete the temporary file and start (execve) +\& the uncompressed program in /tmp using /proc//fd/X as +\& attained by step 2) +\& 4) if that fails, fork off a subprocess to clean up and +\& start the program in /tmp in the meantime +\& +\& The UPX stub is about 1700 bytes long, partly written in assembler +\& and only uses kernel syscalls. It is not linked against any libc. +.Ve +.PP +Specific drawbacks: +.PP +.Vb 4 +\& \- You need additional free disk space for the uncompressed program +\& in your /tmp directory. This program is deleted immediately after +\& decompression, but you still need it for the full execution time +\& of the program. +\& +\& \- You must have /proc file system support as the stub wants to open +\& /proc//exe and needs /proc//fd/X. This also means that you +\& cannot compress programs that are used during the boot sequence +\& before /proc is mounted. +\& +\& \- Utilities like \`top\*(Aq will display numerical values in the process +\& name field. This is because Linux computes the process name from +\& the first argument of the last execve syscall (which is typically +\& something like /proc//fd/3). +\& +\& \- Because of temporary decompression to disk the decompression speed +\& is not as fast as with the other executable formats. Still, I can see +\& no noticeable delay when starting programs like my ~3 MiB emacs (which +\& is less than 1 MiB when compressed :\-). +.Ve +.PP +Extra options available for this executable format: +.PP +.Vb 3 +\& \-\-force\-execve Force the use of the generic linux/386 "execve" +\& format, i.e. do not try the linux/elf386 and +\& linux/sh386 formats. +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1PS1/EXE\s0" +.IX Subsection "NOTES FOR PS1/EXE" +This is the executable format used by the Sony PlayStation (PSone), +a Mips R3000 based gaming console which is popular since the late '90s. +Support of this format is very similar to the Atari one, because of +nostalgic feelings of one of the authors. +.PP +Packed programs will be byte-identical to the original after uncompression, +until further notice. +.PP +Maximum uncompressed size: ~1.89 / ~7.60 MiB. +.PP +Notes: +.PP +.Vb 6 +\& \- UPX creates as default a suitable executable for CD\-Mastering +\& and console transfer. For a CD\-Master main executable you could also try +\& the special option "\-\-boot\-only" as described below. +\& It has been reported that upx packed executables are fully compatible with +\& the Sony PlayStation 2 (PS2, PStwo) and Sony PlayStation Portable (PSP) in +\& Sony PlayStation (PSone) emulation mode. +\& +\& \- Normally the packed files use the same memory areas like the uncompressed +\& versions, so they will not override other memory areas while unpacking. +\& If this isn\*(Aqt possible UPX will abort showing a \*(Aqpacked data overlap\*(Aq +\& error. With the "\-\-force" option UPX will relocate the loading address +\& for the packed file, but this isn\*(Aqt a real problem if it is a single or +\& the main executable. +.Ve +.PP +Extra options available for this executable format: +.PP +.Vb 4 +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-8\-bit Uses 8 bit size compression [default: 32 bit] +\& +\& \-\-8mib\-ram PSone has 8 MiB ram available [default: 2 MiB] +\& +\& \-\-boot\-only This format is for main exes and CD\-Mastering only ! +\& It may slightly improve the compression ratio, +\& decompression routines are faster than default ones. +\& But it cannot be used for console transfer ! +\& +\& \-\-no\-align This option disables CD mode 2 data sector format +\& alignment. May slightly improves the compression ratio, +\& but the compressed executable will not boot from a CD. +\& Use it for console transfer only ! +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1RTM32/PE\s0 and \s-1ARM/PE\s0" +.IX Subsection "NOTES FOR RTM32/PE and ARM/PE" +Same as win32/pe. +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1TMT/ADAM\s0" +.IX Subsection "NOTES FOR TMT/ADAM" +This format is used by the \s-1TMT\s0 Pascal compiler \- see http://www.tmt.com/ . +.PP +Extra options available for this executable format: +.PP +.Vb 4 +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1VMLINUZ/386\s0" +.IX Subsection "NOTES FOR VMLINUZ/386" +The vmlinuz/386 and bvmlinuz/386 formats take a gzip-compressed +bootable Linux kernel image (\*(L"vmlinuz\*(R", \*(L"zImage\*(R", \*(L"bzImage\*(R"), +gzip-decompress it and re-compress it with the \fB\s-1UPX\s0\fR compression method. +.PP +vmlinuz/386 is completely unrelated to the other Linux executable +formats, and it does not share any of their drawbacks. +.PP +Notes: +.PP +.Vb 3 +\& \- Be sure that "vmlinuz/386" or "bvmlinuz/386" is displayed +\& during compression \- otherwise a wrong executable format +\& may have been used, and the kernel won\*(Aqt boot. +.Ve +.PP +Benefits: +.PP +.Vb 4 +\& \- Better compression (but note that the kernel was already compressed, +\& so the improvement is not as large as with other formats). +\& Still, the bytes saved may be essential for special needs like +\& boot disks. +\& +\& For example, this is what I get for my 2.2.16 kernel: +\& 1589708 vmlinux +\& 641073 bzImage [original] +\& 560755 bzImage.upx [compressed by "upx \-9"] +\& +\& \- Much faster decompression at kernel boot time (but kernel +\& decompression speed is not really an issue these days). +.Ve +.PP +Drawbacks: +.PP +.Vb 1 +\& (none) +.Ve +.PP +Extra options available for this executable format: +.PP +.Vb 4 +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1WATCOM/LE\s0" +.IX Subsection "NOTES FOR WATCOM/LE" +\&\fB\s-1UPX\s0\fR has been successfully tested with the following extenders: + \s-1DOS4G\s0, \s-1DOS4GW\s0, \s-1PMODE/W\s0, DOS32a, CauseWay. + The \s-1WDOS/X\s0 extender is partly supported (for details + see the file bugs \s-1BUGS\s0). +.PP +DLLs and the \s-1LX\s0 format are not supported. +.PP +Extra options available for this executable format: +.PP +.Vb 2 +\& \-\-le Produce an unbound LE output instead of +\& keeping the current stub. +.Ve +.SS "\s-1NOTES\s0 \s-1FOR\s0 \s-1WIN32/PE\s0" +.IX Subsection "NOTES FOR WIN32/PE" +The \s-1PE\s0 support in \fB\s-1UPX\s0\fR is quite stable now, but probably there are +still some incompatibilities with some files. +.PP +Because of the way \fB\s-1UPX\s0\fR (and other packers for this format) works, you +can see increased memory usage of your compressed files because the whole +program is loaded into memory at startup. +If you start several instances of huge compressed programs you're +wasting memory because the common segments of the program won't +get shared across the instances. +On the other hand if you're compressing only smaller programs, or +running only one instance of larger programs, then this penalty is +smaller, but it's still there. +.PP +If you're running executables from network, then compressed programs +will load faster, and require less bandwidth during execution. +.PP +DLLs are supported. But \s-1UPX\s0 compressed DLLs can not share common data and +code when they got used by multiple applications. So compressing msvcrt.dll +is a waste of memory, but compressing the dll plugins of a particular +application may be a better idea. +.PP +Screensavers are supported, with the restriction that the filename +must end with \*(L".scr\*(R" (as screensavers are handled slightly different +than normal exe files). +.PP +\&\s-1UPX\s0 compressed \s-1PE\s0 files have some minor memory overhead (usually in the +10 \- 30 KiB range) which can be seen by specifying the \*(L"\-i\*(R" command +line switch during compression. +.PP +Extra options available for this executable format: +.PP +.Vb 9 +\& \-\-compress\-exports=0 Don\*(Aqt compress the export section. +\& Use this if you plan to run the compressed +\& program under Wine. +\& \-\-compress\-exports=1 Compress the export section. [DEFAULT] +\& Compression of the export section can improve the +\& compression ratio quite a bit but may not work +\& with all programs (like winword.exe). +\& UPX never compresses the export section of a DLL +\& regardless of this option. +\& +\& \-\-compress\-icons=0 Don\*(Aqt compress any icons. +\& \-\-compress\-icons=1 Compress all but the first icon. +\& \-\-compress\-icons=2 Compress all icons which are not in the +\& first icon directory. [DEFAULT] +\& \-\-compress\-icons=3 Compress all icons. +\& +\& \-\-compress\-resources=0 Don\*(Aqt compress any resources at all. +\& +\& \-\-keep\-resource=list Don\*(Aqt compress resources specified by the list. +\& The members of the list are separated by commas. +\& A list member has the following format: I. +\& I is the type of the resource. Standard types +\& must be specified as decimal numbers, user types can be +\& specified by decimal IDs or strings. I is the +\& identifier of the resource. It can be a decimal number +\& or a string. For example: +\& +\& \-\-keep\-resource=2/MYBITMAP,5,6/12345 +\& +\& UPX won\*(Aqt compress the named bitmap resource "MYBITMAP", +\& it leaves every dialog (5) resource uncompressed, and +\& it won\*(Aqt touch the string table resource with identifier +\& 12345. +\& +\& \-\-force Force compression even when there is an +\& unexpected value in a header field. +\& Use with care. +\& +\& \-\-strip\-relocs=0 Don\*(Aqt strip relocation records. +\& \-\-strip\-relocs=1 Strip relocation records. [DEFAULT] +\& This option only works on executables with base +\& address greater or equal to 0x400000. Usually the +\& compressed files becomes smaller, but some files +\& may become larger. Note that the resulting file will +\& not work under Windows 3.x (Win32s). +\& UPX never strips relocations from a DLL +\& regardless of this option. +\& +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SH "DIAGNOSTICS" +.IX Header "DIAGNOSTICS" +Exit status is normally 0; if an error occurs, exit status +is 1. If a warning occurs, exit status is 2. +.PP +\&\fB\s-1UPX\s0\fR's diagnostics are intended to be self-explanatory. +.SH "BUGS" +.IX Header "BUGS" +Please report all bugs immediately to the authors. +.SH "AUTHORS" +.IX Header "AUTHORS" +.Vb 2 +\& Markus F.X.J. Oberhumer +\& http://www.oberhumer.com +\& +\& Laszlo Molnar +\& +\& John F. Reiser +\& +\& Jens Medoch +.Ve +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (C) 1996\-2013 Markus Franz Xaver Johannes Oberhumer +.PP +Copyright (C) 1996\-2013 Laszlo Molnar +.PP +Copyright (C) 2000\-2013 John F. Reiser +.PP +Copyright (C) 2002\-2013 Jens Medoch +.PP +This program may be used freely, and you are welcome to +redistribute it under certain conditions. +.PP +This program is distributed in the hope that it will be useful, +but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the +\&\fB\s-1UPX\s0 License Agreement\fR for more details. +.PP +You should have received a copy of the \s-1UPX\s0 License Agreement along +with this program; see the file \s-1LICENSE\s0. If not, visit the \s-1UPX\s0 home page. diff --git a/Tools/UPX/upx.doc b/Tools/UPX/upx.doc new file mode 100644 index 00000000..cc6f7e27 --- /dev/null +++ b/Tools/UPX/upx.doc @@ -0,0 +1,843 @@ +NAME + upx - compress or expand executable files + +SYNOPSIS + upx [ *command* ] [ *options* ] *filename*... + +ABSTRACT + The Ultimate Packer for eXecutables + Copyright (c) 1996-2013 Markus Oberhumer, Laszlo Molnar & John Reiser + http://upx.sourceforge.net + + UPX is a portable, extendable, high-performance executable packer for + several different executable formats. It achieves an excellent + compression ratio and offers **very** fast decompression. Your + executables suffer no memory overhead or other drawbacks for most of the + formats supported, because of in-place decompression. + + While you may use UPX freely for both non-commercial and commercial + executables (for details see the file LICENSE), we would highly + appreciate if you credit UPX and ourselves in the documentation, + possibly including a reference to the UPX home page. Thanks. + + [ Using UPX in non-OpenSource applications without proper credits is + considered not politically correct ;-) ] + +DISCLAIMER + UPX comes with ABSOLUTELY NO WARRANTY; for details see the file LICENSE. + + This is the first production quality release, and we plan that future + 1.xx releases will be backward compatible with this version. + + Please report all problems or suggestions to the authors. Thanks. + +DESCRIPTION + UPX is a versatile executable packer with the following features: + + - excellent compression ratio: compresses better than zip/gzip, + use UPX to decrease the size of your distribution ! + + - very fast decompression: about 10 MiB/sec on an ancient Pentium 133, + about 200 MiB/sec on an Athlon XP 2000+. + + - no memory overhead for your compressed executables for most of the + supported formats + + - safe: you can list, test and unpack your executables + Also, a checksum of both the compressed and uncompressed file is + maintained internally. + + - universal: UPX can pack a number of executable formats: + * atari/tos + * bvmlinuz/386 [bootable Linux kernel] + * djgpp2/coff + * dos/com + * dos/exe + * dos/sys + * linux/386 + * linux/elf386 + * linux/sh386 + * ps1/exe + * rtm32/pe + * tmt/adam + * vmlinuz/386 [bootable Linux kernel] + * vmlinux/386 + * watcom/le (supporting DOS4G, PMODE/W, DOS32a and CauseWay) + * win32/pe (exe and dll) + * arm/pe (exe and dll) + * linux/elfamd64 + * linux/elfppc32 + * mach/elfppc32 + + - portable: UPX is written in portable endian-neutral C++ + + - extendable: because of the class layout it's very easy to support + new executable formats or add new compression algorithms + + - free: UPX can be distributed and used freely. And from version 0.99 + the full source code of UPX is released under the GNU General Public + License (GPL) ! + + You probably understand now why we call UPX the "*ultimate*" executable + packer. + +COMMANDS + Compress + This is the default operation, eg. upx yourfile.exe will compress the + file specified on the command line. + + Decompress + All UPX supported file formats can be unpacked using the -d switch, eg. + upx -d yourfile.exe will uncompress the file you've just compressed. + + Test + The -t command tests the integrity of the compressed and uncompressed + data, eg. upx -t yourfile.exe check whether your file can be safely + decompressed. Note, that this command doesn't check the whole file, only + the part that will be uncompressed during program execution. This means + that you should not use this command instead of a virus checker. + + List + The -l command prints out some information about the compressed files + specified on the command line as parameters, eg upx -l yourfile.exe + shows the compressed / uncompressed size and the compression ratio of + *yourfile.exe*. + +OPTIONS + -q: be quiet, suppress warnings + + -q -q (or -qq): be very quiet, suppress errors + + -q -q -q (or -qqq): produce no output at all + + --help: prints the help + + --version: print the version of UPX + + --exact: when compressing, require to be able to get a byte-identical + file after decompression with option -d. [NOTE: this is work in progress + and is not supported for all formats yet. If you do care, as a + workaround you can compress and then decompress your program a first + time - any further compress-decompress steps should then yield + byte-identical results as compared to the first decompressed version.] + + [ ...to be written... - type `upx --help' for now ] + +COMPRESSION LEVELS & TUNING + UPX offers ten different compression levels from -1 to -9, and --best. + The default compression level is -8 for files smaller than 512 KiB, and + -7 otherwise. + + * Compression levels 1, 2 and 3 are pretty fast. + + * Compression levels 4, 5 and 6 achieve a good time/ratio performance. + + * Compression levels 7, 8 and 9 favor compression ratio over speed. + + * Compression level --best may take a long time. + + Note that compression level --best can be somewhat slow for large files, + but you definitely should use it when releasing a final version of your + program. + + Quick info for achieving the best compression ratio: + + * Try upx --brute myfile.exe or even upx --ultra-brute myfile.exe. + + * Try if --overlay=strip works. + + * For win32/pe programs there's --strip-relocs=0. See notes below. + +OVERLAY HANDLING OPTIONS + Info: An "overlay" means auxiliary data attached after the logical end + of an executable, and it often contains application specific data (this + is a common practice to avoid an extra data file, though it would be + better to use resource sections). + + UPX handles overlays like many other executable packers do: it simply + copies the overlay after the compressed image. This works with some + files, but doesn't work with others, depending on how an application + actually accesses this overlayed data. + + --overlay=copy Copy any extra data attached to the file. [DEFAULT] + + --overlay=strip Strip any overlay from the program instead of + copying it. Be warned, this may make the compressed + program crash or otherwise unusable. + + --overlay=skip Refuse to compress any program which has an overlay. + +ENVIRONMENT + The environment variable UPX can hold a set of default options for UPX. + These options are interpreted first and can be overwritten by explicit + command line parameters. For example: + + for DOS/Windows: set UPX=-9 --compress-icons#0 + for sh/ksh/zsh: UPX="-9 --compress-icons=0"; export UPX + for csh/tcsh: setenv UPX "-9 --compress-icons=0" + + Under DOS/Windows you must use '#' instead of '=' when setting the + environment variable because of a COMMAND.COM limitation. + + Not all of the options are valid in the environment variable - UPX will + tell you. + + You can explicitly use the --no-env option to ignore the environment + variable. + +NOTES FOR THE SUPPORTED EXECUTABLE FORMATS + NOTES FOR ATARI/TOS + This is the executable format used by the Atari ST/TT, a Motorola 68000 + based personal computer which was popular in the late '80s. Support of + this format is only because of nostalgic feelings of one of the authors + and serves no practical purpose :-). See http://www.freemint.de for more + info. + + Packed programs will be byte-identical to the original after + uncompression. All debug information will be stripped, though. + + Extra options available for this executable format: + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + NOTES FOR BVMLINUZ/I386 + Same as vmlinuz/i386. + + NOTES FOR DOS/COM + Obviously UPX won't work with executables that want to read data from + themselves (like some commandline utilities that ship with Win95/98/ME). + + Compressed programs only work on a 286+. + + Packed programs will be byte-identical to the original after + uncompression. + + Maximum uncompressed size: ~65100 bytes. + + Extra options available for this executable format: + + --8086 Create an executable that works on any 8086 CPU. + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + + NOTES FOR DOS/EXE + dos/exe stands for all "normal" 16-bit DOS executables. + + Obviously UPX won't work with executables that want to read data from + themselves (like some command line utilities that ship with + Win95/98/ME). + + Compressed programs only work on a 286+. + + Extra options available for this executable format: + + --8086 Create an executable that works on any 8086 CPU. + + --no-reloc Use no relocation records in the exe header. + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + NOTES FOR DOS/SYS + Compressed programs only work on a 286+. + + Packed programs will be byte-identical to the original after + uncompression. + + Maximum uncompressed size: ~65350 bytes. + + Extra options available for this executable format: + + --8086 Create an executable that works on any 8086 CPU. + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + + NOTES FOR DJGPP2/COFF + First of all, it is recommended to use UPX *instead* of strip. strip has + the very bad habit of replacing your stub with its own (outdated) + version. Additionally UPX corrects a bug/feature in strip v2.8.x: it + will fix the 4 KiB alignment of the stub. + + UPX includes the full functionality of stubify. This means it will + automatically stubify your COFF files. Use the option --coff to disable + this functionality (see below). + + UPX automatically handles Allegro packfiles. + + The DLM format (a rather exotic shared library extension) is not + supported. + + Packed programs will be byte-identical to the original after + uncompression. All debug information and trailing garbage will be + stripped, though. + + Extra options available for this executable format: + + --coff Produce COFF output instead of EXE. By default + UPX keeps your current stub. + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + + NOTES FOR LINUX [general] + Introduction + + Linux/386 support in UPX consists of 3 different executable formats, + one optimized for ELF executables ("linux/elf386"), one optimized + for shell scripts ("linux/sh386"), and one generic format + ("linux/386"). + + We will start with a general discussion first, but please + also read the relevant docs for each of the individual formats. + + Also, there is special support for bootable kernels - see the + description of the vmlinuz/386 format. + + General user's overview + + Running a compressed executable program trades less space on a + ``permanent'' storage medium (such as a hard disk, floppy disk, + CD-ROM, flash memory, EPROM, etc.) for more space in one or more + ``temporary'' storage media (such as RAM, swap space, /tmp, etc.). + Running a compressed executable also requires some additional CPU + cycles to generate the compressed executable in the first place, + and to decompress it at each invocation. + + How much space is traded? It depends on the executable, but many + programs save 30% to 50% of permanent disk space. How much CPU + overhead is there? Again, it depends on the executable, but + decompression speed generally is at least many megabytes per second, + and frequently is limited by the speed of the underlying disk + or network I/O. + + Depending on the statistics of usage and access, and the relative + speeds of CPU, RAM, swap space, /tmp, and file system storage, then + invoking and running a compressed executable can be faster than + directly running the corresponding uncompressed program. + The operating system might perform fewer expensive I/O operations + to invoke the compressed program. Paging to or from swap space + or /tmp might be faster than paging from the general file system. + ``Medium-sized'' programs which access about 1/3 to 1/2 of their + stored program bytes can do particularly well with compression. + Small programs tend not to benefit as much because the absolute + savings is less. Big programs tend not to benefit proportionally + because each invocation may use only a small fraction of the program, + yet UPX decompresses the entire program before invoking it. + But in environments where disk or flash memory storage is limited, + then compression may win anyway. + + Currently, executables compressed by UPX do not share RAM at runtime + in the way that executables mapped from a file system do. As a + result, if the same program is run simultaneously by more than one + process, then using the compressed version will require more RAM and/or + swap space. So, shell programs (bash, csh, etc.) and ``make'' + might not be good candidates for compression. + + UPX recognizes three executable formats for Linux: Linux/elf386, + Linux/sh386, and Linux/386. Linux/386 is the most generic format; + it accommodates any file that can be executed. At runtime, the UPX + decompression stub re-creates in /tmp a copy of the original file, + and then the copy is (re-)executed with the same arguments. + ELF binary executables prefer the Linux/elf386 format by default, + because UPX decompresses them directly into RAM, uses only one + exec, does not use space in /tmp, and does not use /proc. + Shell scripts where the underlying shell accepts a ``-c'' argument + can use the Linux/sh386 format. UPX decompresses the shell script + into low memory, then maps the shell and passes the entire text of the + script as an argument with a leading ``-c''. + + General benefits: + + - UPX can compress all executables, be it AOUT, ELF, libc4, libc5, + libc6, Shell/Perl/Python/... scripts, standalone Java .class + binaries, or whatever... + All scripts and programs will work just as before. + + - Compressed programs are completely self-contained. No need for + any external program. + + - UPX keeps your original program untouched. This means that + after decompression you will have a byte-identical version, + and you can use UPX as a file compressor just like gzip. + [ Note that UPX maintains a checksum of the file internally, + so it is indeed a reliable alternative. ] + + - As the stub only uses syscalls and isn't linked against libc it + should run under any Linux configuration that can run ELF + binaries. + + - For the same reason compressed executables should run under + FreeBSD and other systems which can run Linux binaries. + [ Please send feedback on this topic ] + + General drawbacks: + + - It is not advisable to compress programs which usually have many + instances running (like `sh' or `make') because the common segments of + compressed programs won't be shared any longer between different + processes. + + - `ldd' and `size' won't show anything useful because all they + see is the statically linked stub. Since version 0.82 the section + headers are stripped from the UPX stub and `size' doesn't even + recognize the file format. The file patches/patch-elfcode.h has a + patch to fix this bug in `size' and other programs which use GNU BFD. + + General notes: + + - As UPX leaves your original program untouched it is advantageous + to strip it before compression. + + - If you compress a script you will lose platform independence - + this could be a problem if you are using NFS mounted disks. + + - Compression of suid, guid and sticky-bit programs is rejected + because of possible security implications. + + - For the same reason there is no sense in making any compressed + program suid. + + - Obviously UPX won't work with executables that want to read data + from themselves. E.g., this might be a problem for Perl scripts + which access their __DATA__ lines. + + - In case of internal errors the stub will abort with exitcode 127. + Typical reasons for this to happen are that the program has somehow + been modified after compression. + Running `strace -o strace.log compressed_file' will tell you more. + + NOTES FOR LINUX/ELF386 + Please read the general Linux description first. + + The linux/elf386 format decompresses directly into RAM, uses only one + exec, does not use space in /tmp, and does not use /proc. + + Linux/elf386 is automatically selected for Linux ELF executables. + + Packed programs will be byte-identical to the original after + uncompression. + + How it works: + + For ELF executables, UPX decompresses directly to memory, simulating + the mapping that the operating system kernel uses during exec(), + including the PT_INTERP program interpreter (if any). + The brk() is set by a special PT_LOAD segment in the compressed + executable itself. UPX then wipes the stack clean except for + arguments, environment variables, and Elf_auxv entries (this is + required by bugs in the startup code of /lib/ld-linux.so as of + May 2000), and transfers control to the program interpreter or + the e_entry address of the original executable. + + The UPX stub is about 1700 bytes long, partly written in assembler + and only uses kernel syscalls. It is not linked against any libc. + + Specific drawbacks: + + - For linux/elf386 and linux/sh386 formats, you will be relying on + RAM and swap space to hold all of the decompressed program during + the lifetime of the process. If you already use most of your swap + space, then you may run out. A system that is "out of memory" + can become fragile. Many programs do not react gracefully when + malloc() returns 0. With newer Linux kernels, the kernel + may decide to kill some processes to regain memory, and you + may not like the kernel's choice of which to kill. Running + /usr/bin/top is one way to check on the usage of swap space. + + Extra options available for this executable format: + + (none) + + NOTES FOR LINUX/SH386 + Please read the general Linux description first. + + Shell scripts where the underling shell accepts a ``-c'' argument can + use the Linux/sh386 format. UPX decompresses the shell script into low + memory, then maps the shell and passes the entire text of the script as + an argument with a leading ``-c''. It does not use space in /tmp, and + does not use /proc. + + Linux/sh386 is automatically selected for shell scripts that use a known + shell. + + Packed programs will be byte-identical to the original after + uncompression. + + How it works: + + For shell script executables (files beginning with "#!/" or "#! /") + where the shell is known to accept "-c ", UPX decompresses + the file into low memory, then maps the shell (and its PT_INTERP), + and passes control to the shell with the entire decompressed file + as the argument after "-c". Known shells are sh, ash, bash, bsh, csh, + ksh, tcsh, pdksh. Restriction: UPX cannot use this method + for shell scripts which use the one optional string argument after + the shell name in the script (example: "#! /bin/sh option3\n".) + + The UPX stub is about 1700 bytes long, partly written in assembler + and only uses kernel syscalls. It is not linked against any libc. + + Specific drawbacks: + + - For linux/elf386 and linux/sh386 formats, you will be relying on + RAM and swap space to hold all of the decompressed program during + the lifetime of the process. If you already use most of your swap + space, then you may run out. A system that is "out of memory" + can become fragile. Many programs do not react gracefully when + malloc() returns 0. With newer Linux kernels, the kernel + may decide to kill some processes to regain memory, and you + may not like the kernel's choice of which to kill. Running + /usr/bin/top is one way to check on the usage of swap space. + + Extra options available for this executable format: + + (none) + + NOTES FOR LINUX/386 + Please read the general Linux description first. + + The generic linux/386 format decompresses to /tmp and needs /proc file + system support. It starts the decompressed program via the execve() + syscall. + + Linux/386 is only selected if the specialized linux/elf386 and + linux/sh386 won't recognize a file. + + Packed programs will be byte-identical to the original after + uncompression. + + How it works: + + For files which are not ELF and not a script for a known "-c" shell, + UPX uses kernel execve(), which first requires decompressing to a + temporary file in the file system. Interestingly - + because of the good memory management of the Linux kernel - this + often does not introduce a noticeable delay, and in fact there + will be no disk access at all if you have enough free memory as + the entire process takes places within the file system buffers. + + A compressed executable consists of the UPX stub and an overlay + which contains the original program in a compressed form. + + The UPX stub is a statically linked ELF executable and does + the following at program startup: + + 1) decompress the overlay to a temporary location in /tmp + 2) open the temporary file for reading + 3) try to delete the temporary file and start (execve) + the uncompressed program in /tmp using /proc//fd/X as + attained by step 2) + 4) if that fails, fork off a subprocess to clean up and + start the program in /tmp in the meantime + + The UPX stub is about 1700 bytes long, partly written in assembler + and only uses kernel syscalls. It is not linked against any libc. + + Specific drawbacks: + + - You need additional free disk space for the uncompressed program + in your /tmp directory. This program is deleted immediately after + decompression, but you still need it for the full execution time + of the program. + + - You must have /proc file system support as the stub wants to open + /proc//exe and needs /proc//fd/X. This also means that you + cannot compress programs that are used during the boot sequence + before /proc is mounted. + + - Utilities like `top' will display numerical values in the process + name field. This is because Linux computes the process name from + the first argument of the last execve syscall (which is typically + something like /proc//fd/3). + + - Because of temporary decompression to disk the decompression speed + is not as fast as with the other executable formats. Still, I can see + no noticeable delay when starting programs like my ~3 MiB emacs (which + is less than 1 MiB when compressed :-). + + Extra options available for this executable format: + + --force-execve Force the use of the generic linux/386 "execve" + format, i.e. do not try the linux/elf386 and + linux/sh386 formats. + + NOTES FOR PS1/EXE + This is the executable format used by the Sony PlayStation (PSone), a + Mips R3000 based gaming console which is popular since the late '90s. + Support of this format is very similar to the Atari one, because of + nostalgic feelings of one of the authors. + + Packed programs will be byte-identical to the original after + uncompression, until further notice. + + Maximum uncompressed size: ~1.89 / ~7.60 MiB. + + Notes: + + - UPX creates as default a suitable executable for CD-Mastering + and console transfer. For a CD-Master main executable you could also try + the special option "--boot-only" as described below. + It has been reported that upx packed executables are fully compatible with + the Sony PlayStation 2 (PS2, PStwo) and Sony PlayStation Portable (PSP) in + Sony PlayStation (PSone) emulation mode. + + - Normally the packed files use the same memory areas like the uncompressed + versions, so they will not override other memory areas while unpacking. + If this isn't possible UPX will abort showing a 'packed data overlap' + error. With the "--force" option UPX will relocate the loading address + for the packed file, but this isn't a real problem if it is a single or + the main executable. + + Extra options available for this executable format: + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --8-bit Uses 8 bit size compression [default: 32 bit] + + --8mib-ram PSone has 8 MiB ram available [default: 2 MiB] + + --boot-only This format is for main exes and CD-Mastering only ! + It may slightly improve the compression ratio, + decompression routines are faster than default ones. + But it cannot be used for console transfer ! + + --no-align This option disables CD mode 2 data sector format + alignment. May slightly improves the compression ratio, + but the compressed executable will not boot from a CD. + Use it for console transfer only ! + + NOTES FOR RTM32/PE and ARM/PE + Same as win32/pe. + + NOTES FOR TMT/ADAM + This format is used by the TMT Pascal compiler - see http://www.tmt.com/ + . + + Extra options available for this executable format: + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + + NOTES FOR VMLINUZ/386 + The vmlinuz/386 and bvmlinuz/386 formats take a gzip-compressed bootable + Linux kernel image ("vmlinuz", "zImage", "bzImage"), gzip-decompress it + and re-compress it with the UPX compression method. + + vmlinuz/386 is completely unrelated to the other Linux executable + formats, and it does not share any of their drawbacks. + + Notes: + + - Be sure that "vmlinuz/386" or "bvmlinuz/386" is displayed + during compression - otherwise a wrong executable format + may have been used, and the kernel won't boot. + + Benefits: + + - Better compression (but note that the kernel was already compressed, + so the improvement is not as large as with other formats). + Still, the bytes saved may be essential for special needs like + boot disks. + + For example, this is what I get for my 2.2.16 kernel: + 1589708 vmlinux + 641073 bzImage [original] + 560755 bzImage.upx [compressed by "upx -9"] + + - Much faster decompression at kernel boot time (but kernel + decompression speed is not really an issue these days). + + Drawbacks: + + (none) + + Extra options available for this executable format: + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + + NOTES FOR WATCOM/LE + UPX has been successfully tested with the following extenders: DOS4G, + DOS4GW, PMODE/W, DOS32a, CauseWay. The WDOS/X extender is partly + supported (for details see the file bugs BUGS). + + DLLs and the LX format are not supported. + + Extra options available for this executable format: + + --le Produce an unbound LE output instead of + keeping the current stub. + + NOTES FOR WIN32/PE + The PE support in UPX is quite stable now, but probably there are still + some incompatibilities with some files. + + Because of the way UPX (and other packers for this format) works, you + can see increased memory usage of your compressed files because the + whole program is loaded into memory at startup. If you start several + instances of huge compressed programs you're wasting memory because the + common segments of the program won't get shared across the instances. On + the other hand if you're compressing only smaller programs, or running + only one instance of larger programs, then this penalty is smaller, but + it's still there. + + If you're running executables from network, then compressed programs + will load faster, and require less bandwidth during execution. + + DLLs are supported. But UPX compressed DLLs can not share common data + and code when they got used by multiple applications. So compressing + msvcrt.dll is a waste of memory, but compressing the dll plugins of a + particular application may be a better idea. + + Screensavers are supported, with the restriction that the filename must + end with ".scr" (as screensavers are handled slightly different than + normal exe files). + + UPX compressed PE files have some minor memory overhead (usually in the + 10 - 30 KiB range) which can be seen by specifying the "-i" command line + switch during compression. + + Extra options available for this executable format: + + --compress-exports=0 Don't compress the export section. + Use this if you plan to run the compressed + program under Wine. + --compress-exports=1 Compress the export section. [DEFAULT] + Compression of the export section can improve the + compression ratio quite a bit but may not work + with all programs (like winword.exe). + UPX never compresses the export section of a DLL + regardless of this option. + + --compress-icons=0 Don't compress any icons. + --compress-icons=1 Compress all but the first icon. + --compress-icons=2 Compress all icons which are not in the + first icon directory. [DEFAULT] + --compress-icons=3 Compress all icons. + + --compress-resources=0 Don't compress any resources at all. + + --keep-resource=list Don't compress resources specified by the list. + The members of the list are separated by commas. + A list member has the following format: I. + I is the type of the resource. Standard types + must be specified as decimal numbers, user types can be + specified by decimal IDs or strings. I is the + identifier of the resource. It can be a decimal number + or a string. For example: + + --keep-resource=2/MYBITMAP,5,6/12345 + + UPX won't compress the named bitmap resource "MYBITMAP", + it leaves every dialog (5) resource uncompressed, and + it won't touch the string table resource with identifier + 12345. + + --force Force compression even when there is an + unexpected value in a header field. + Use with care. + + --strip-relocs=0 Don't strip relocation records. + --strip-relocs=1 Strip relocation records. [DEFAULT] + This option only works on executables with base + address greater or equal to 0x400000. Usually the + compressed files becomes smaller, but some files + may become larger. Note that the resulting file will + not work under Windows 3.x (Win32s). + UPX never strips relocations from a DLL + regardless of this option. + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + +DIAGNOSTICS + Exit status is normally 0; if an error occurs, exit status is 1. If a + warning occurs, exit status is 2. + + UPX's diagnostics are intended to be self-explanatory. + +BUGS + Please report all bugs immediately to the authors. + +AUTHORS + Markus F.X.J. Oberhumer + http://www.oberhumer.com + + Laszlo Molnar + + John F. Reiser + + Jens Medoch + +COPYRIGHT + Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer + + Copyright (C) 1996-2013 Laszlo Molnar + + Copyright (C) 2000-2013 John F. Reiser + + Copyright (C) 2002-2013 Jens Medoch + + This program may be used freely, and you are welcome to redistribute it + under certain conditions. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the UPX License + Agreement for more details. + + You should have received a copy of the UPX License Agreement along with + this program; see the file LICENSE. If not, visit the UPX home page. + diff --git a/Tools/UPX/upx.exe b/Tools/UPX/upx.exe new file mode 100644 index 0000000000000000000000000000000000000000..e48db4fbd244ba466fa8d7dbd016ca5a3b71c4ca GIT binary patch literal 295936 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�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
!~7}K??W; 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

l6 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

#patWVD4H5z*ahy@U~HQ0L)1O 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 T*MqMILd + + + +upx - compress or expand executable files + + + + + + + + + + + +

+

+

NAME

+

upx - compress or expand executable files

+

+

+
+

SYNOPSIS

+

upxcommand ] [ options ] filename...

+

+

+
+

ABSTRACT

+
+                    The Ultimate Packer for eXecutables
+   Copyright (c) 1996-2013 Markus Oberhumer, Laszlo Molnar & John Reiser
+                        http://upx.sourceforge.net
+

UPX is a portable, extendable, high-performance executable packer for +several different executable formats. It achieves an excellent compression +ratio and offers *very* fast decompression. Your executables suffer +no memory overhead or other drawbacks for most of the formats supported, +because of in-place decompression.

+

While you may use UPX freely for both non-commercial and commercial +executables (for details see the file LICENSE), we would highly +appreciate if you credit UPX and ourselves in the documentation, +possibly including a reference to the UPX home page. Thanks.

+

[ Using UPX in non-OpenSource applications without proper credits +is considered not politically correct ;-) ]

+

+

+
+

DISCLAIMER

+

UPX comes with ABSOLUTELY NO WARRANTY; for details see the file LICENSE.

+

This is the first production quality release, and we plan that future 1.xx +releases will be backward compatible with this version.

+

Please report all problems or suggestions to the authors. Thanks.

+

+

+
+

DESCRIPTION

+

UPX is a versatile executable packer with the following features:

+
+  - excellent compression ratio: compresses better than zip/gzip,
+      use UPX to decrease the size of your distribution !
+
+  - very fast decompression: about 10 MiB/sec on an ancient Pentium 133,
+      about 200 MiB/sec on an Athlon XP 2000+.
+
+  - no memory overhead for your compressed executables for most of the
+      supported formats
+
+  - safe: you can list, test and unpack your executables
+      Also, a checksum of both the compressed and uncompressed file is
+      maintained internally.
+
+  - universal: UPX can pack a number of executable formats:
+      * atari/tos
+      * bvmlinuz/386    [bootable Linux kernel]
+      * djgpp2/coff
+      * dos/com
+      * dos/exe
+      * dos/sys
+      * linux/386
+      * linux/elf386
+      * linux/sh386
+      * ps1/exe
+      * rtm32/pe
+      * tmt/adam
+      * vmlinuz/386     [bootable Linux kernel]
+      * vmlinux/386
+      * watcom/le (supporting DOS4G, PMODE/W, DOS32a and CauseWay)
+      * win32/pe (exe and dll)
+      * arm/pe (exe and dll)
+      * linux/elfamd64
+      * linux/elfppc32
+      * mach/elfppc32
+
+  - portable: UPX is written in portable endian-neutral C++
+
+  - extendable: because of the class layout it's very easy to support
+      new executable formats or add new compression algorithms
+
+  - free: UPX can be distributed and used freely. And from version 0.99
+      the full source code of UPX is released under the GNU General Public
+      License (GPL) !
+

You probably understand now why we call UPX the "ultimate" +executable packer.

+

+

+
+

COMMANDS

+

+

+

Compress

+

This is the default operation, eg. upx yourfile.exe will compress the file +specified on the command line.

+

+

+

Decompress

+

All UPX supported file formats can be unpacked using the -d switch, eg. +upx -d yourfile.exe will uncompress the file you've just compressed.

+

+

+

Test

+

The -t command tests the integrity of the compressed and uncompressed +data, eg. upx -t yourfile.exe check whether your file can be safely +decompressed. Note, that this command doesn't check the whole file, only +the part that will be uncompressed during program execution. This means +that you should not use this command instead of a virus checker.

+

+

+

List

+

The -l command prints out some information about the compressed files +specified on the command line as parameters, eg upx -l yourfile.exe +shows the compressed / uncompressed size and the compression ratio of +yourfile.exe.

+

+

+
+

OPTIONS

+

-q: be quiet, suppress warnings

+

-q -q (or -qq): be very quiet, suppress errors

+

-q -q -q (or -qqq): produce no output at all

+

--help: prints the help

+

--version: print the version of UPX

+

--exact: when compressing, require to be able to get a byte-identical file +after decompression with option -d. [NOTE: this is work in progress and is +not supported for all formats yet. If you do care, as a workaround you can +compress and then decompress your program a first time - any further +compress-decompress steps should then yield byte-identical results +as compared to the first decompressed version.]

+

[ ...to be written... - type `upx --help' for now ]

+

+

+
+

COMPRESSION LEVELS & TUNING

+

UPX offers ten different compression levels from -1 to -9, +and --best. The default compression level is -8 for files +smaller than 512 KiB, and -7 otherwise.

+
    +
  • +

    Compression levels 1, 2 and 3 are pretty fast.

    +
  • +
  • +

    Compression levels 4, 5 and 6 achieve a good time/ratio performance.

    +
  • +
  • +

    Compression levels 7, 8 and 9 favor compression ratio over speed.

    +
  • +
  • +

    Compression level --best may take a long time.

    +
  • +
+

Note that compression level --best can be somewhat slow for large +files, but you definitely should use it when releasing a final version +of your program.

+

Quick info for achieving the best compression ratio:

+
    +
  • +

    Try upx --brute myfile.exe or even upx --ultra-brute myfile.exe.

    +
  • +
  • +

    Try if --overlay=strip works.

    +
  • +
  • +

    For win32/pe programs there's --strip-relocs=0. See notes below.

    +
  • +
+

+

+
+

OVERLAY HANDLING OPTIONS

+

Info: An "overlay" means auxiliary data attached after the logical end of +an executable, and it often contains application specific data +(this is a common practice to avoid an extra data file, though +it would be better to use resource sections).

+

UPX handles overlays like many other executable packers do: it simply +copies the overlay after the compressed image. This works with some +files, but doesn't work with others, depending on how an application +actually accesses this overlayed data.

+
+  --overlay=copy    Copy any extra data attached to the file. [DEFAULT]
+
+  --overlay=strip   Strip any overlay from the program instead of
+                    copying it. Be warned, this may make the compressed
+                    program crash or otherwise unusable.
+
+  --overlay=skip    Refuse to compress any program which has an overlay.
+

+

+
+

ENVIRONMENT

+

The environment variable UPX can hold a set of default +options for UPX. These options are interpreted first and +can be overwritten by explicit command line parameters. +For example:

+
+    for DOS/Windows:   set UPX=-9 --compress-icons#0
+    for sh/ksh/zsh:    UPX="-9 --compress-icons=0"; export UPX
+    for csh/tcsh:      setenv UPX "-9 --compress-icons=0"
+

Under DOS/Windows you must use '#' instead of '=' when setting the +environment variable because of a COMMAND.COM limitation.

+

Not all of the options are valid in the environment variable - +UPX will tell you.

+

You can explicitly use the --no-env option to ignore the +environment variable.

+

+

+
+

NOTES FOR THE SUPPORTED EXECUTABLE FORMATS

+

+

+

NOTES FOR ATARI/TOS

+

This is the executable format used by the Atari ST/TT, a Motorola 68000 +based personal computer which was popular in the late '80s. Support +of this format is only because of nostalgic feelings of one of +the authors and serves no practical purpose :-). +See http://www.freemint.de for more info.

+

Packed programs will be byte-identical to the original after uncompression. +All debug information will be stripped, though.

+

Extra options available for this executable format:

+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+

+

+

NOTES FOR BVMLINUZ/I386

+

Same as vmlinuz/i386.

+

+

+

NOTES FOR DOS/COM

+

Obviously UPX won't work with executables that want to read data from +themselves (like some commandline utilities that ship with Win95/98/ME).

+

Compressed programs only work on a 286+.

+

Packed programs will be byte-identical to the original after uncompression.

+

Maximum uncompressed size: ~65100 bytes.

+

Extra options available for this executable format:

+
+  --8086              Create an executable that works on any 8086 CPU.
+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+

NOTES FOR DOS/EXE

+

dos/exe stands for all "normal" 16-bit DOS executables.

+

Obviously UPX won't work with executables that want to read data from +themselves (like some command line utilities that ship with Win95/98/ME).

+

Compressed programs only work on a 286+.

+

Extra options available for this executable format:

+
+  --8086              Create an executable that works on any 8086 CPU.
+
+  --no-reloc          Use no relocation records in the exe header.
+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+

+

+

NOTES FOR DOS/SYS

+

Compressed programs only work on a 286+.

+

Packed programs will be byte-identical to the original after uncompression.

+

Maximum uncompressed size: ~65350 bytes.

+

Extra options available for this executable format:

+
+  --8086              Create an executable that works on any 8086 CPU.
+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+

NOTES FOR DJGPP2/COFF

+

First of all, it is recommended to use UPX *instead* of strip. strip has +the very bad habit of replacing your stub with its own (outdated) version. +Additionally UPX corrects a bug/feature in strip v2.8.x: it +will fix the 4 KiB alignment of the stub.

+

UPX includes the full functionality of stubify. This means it will +automatically stubify your COFF files. Use the option --coff to +disable this functionality (see below).

+

UPX automatically handles Allegro packfiles.

+

The DLM format (a rather exotic shared library extension) is not supported.

+

Packed programs will be byte-identical to the original after uncompression. +All debug information and trailing garbage will be stripped, though.

+

Extra options available for this executable format:

+
+  --coff              Produce COFF output instead of EXE. By default
+                      UPX keeps your current stub.
+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+

NOTES FOR LINUX [general]

+

Introduction

+
+  Linux/386 support in UPX consists of 3 different executable formats,
+  one optimized for ELF executables ("linux/elf386"), one optimized
+  for shell scripts ("linux/sh386"), and one generic format
+  ("linux/386").
+
+  We will start with a general discussion first, but please
+  also read the relevant docs for each of the individual formats.
+
+  Also, there is special support for bootable kernels - see the
+  description of the vmlinuz/386 format.
+

General user's overview

+
+  Running a compressed executable program trades less space on a
+  ``permanent'' storage medium (such as a hard disk, floppy disk,
+  CD-ROM, flash memory, EPROM, etc.) for more space in one or more
+  ``temporary'' storage media (such as RAM, swap space, /tmp, etc.).
+  Running a compressed executable also requires some additional CPU
+  cycles to generate the compressed executable in the first place,
+  and to decompress it at each invocation.
+
+  How much space is traded?  It depends on the executable, but many
+  programs save 30% to 50% of permanent disk space.  How much CPU
+  overhead is there?  Again, it depends on the executable, but
+  decompression speed generally is at least many megabytes per second,
+  and frequently is limited by the speed of the underlying disk
+  or network I/O.
+
+  Depending on the statistics of usage and access, and the relative
+  speeds of CPU, RAM, swap space, /tmp, and file system storage, then
+  invoking and running a compressed executable can be faster than
+  directly running the corresponding uncompressed program.
+  The operating system might perform fewer expensive I/O operations
+  to invoke the compressed program.  Paging to or from swap space
+  or /tmp might be faster than paging from the general file system.
+  ``Medium-sized'' programs which access about 1/3 to 1/2 of their
+  stored program bytes can do particularly well with compression.
+  Small programs tend not to benefit as much because the absolute
+  savings is less.  Big programs tend not to benefit proportionally
+  because each invocation may use only a small fraction of the program,
+  yet UPX decompresses the entire program before invoking it.
+  But in environments where disk or flash memory storage is limited,
+  then compression may win anyway.
+
+  Currently, executables compressed by UPX do not share RAM at runtime
+  in the way that executables mapped from a file system do.  As a
+  result, if the same program is run simultaneously by more than one
+  process, then using the compressed version will require more RAM and/or
+  swap space.  So, shell programs (bash, csh, etc.)  and ``make''
+  might not be good candidates for compression.
+
+  UPX recognizes three executable formats for Linux: Linux/elf386,
+  Linux/sh386, and Linux/386.  Linux/386 is the most generic format;
+  it accommodates any file that can be executed.  At runtime, the UPX
+  decompression stub re-creates in /tmp a copy of the original file,
+  and then the copy is (re-)executed with the same arguments.
+  ELF binary executables prefer the Linux/elf386 format by default,
+  because UPX decompresses them directly into RAM, uses only one
+  exec, does not use space in /tmp, and does not use /proc.
+  Shell scripts where the underlying shell accepts a ``-c'' argument
+  can use the Linux/sh386 format.  UPX decompresses the shell script
+  into low memory, then maps the shell and passes the entire text of the
+  script as an argument with a leading ``-c''.
+

General benefits:

+
+  - UPX can compress all executables, be it AOUT, ELF, libc4, libc5,
+    libc6, Shell/Perl/Python/... scripts, standalone Java .class
+    binaries, or whatever...
+    All scripts and programs will work just as before.
+
+  - Compressed programs are completely self-contained. No need for
+    any external program.
+
+  - UPX keeps your original program untouched. This means that
+    after decompression you will have a byte-identical version,
+    and you can use UPX as a file compressor just like gzip.
+    [ Note that UPX maintains a checksum of the file internally,
+      so it is indeed a reliable alternative. ]
+
+  - As the stub only uses syscalls and isn't linked against libc it
+    should run under any Linux configuration that can run ELF
+    binaries.
+
+  - For the same reason compressed executables should run under
+    FreeBSD and other systems which can run Linux binaries.
+    [ Please send feedback on this topic ]
+

General drawbacks:

+
+  - It is not advisable to compress programs which usually have many
+    instances running (like `sh' or `make') because the common segments of
+    compressed programs won't be shared any longer between different
+    processes.
+
+  - `ldd' and `size' won't show anything useful because all they
+    see is the statically linked stub.  Since version 0.82 the section
+    headers are stripped from the UPX stub and `size' doesn't even
+    recognize the file format.  The file patches/patch-elfcode.h has a
+    patch to fix this bug in `size' and other programs which use GNU BFD.
+

General notes:

+
+  - As UPX leaves your original program untouched it is advantageous
+    to strip it before compression.
+
+  - If you compress a script you will lose platform independence -
+    this could be a problem if you are using NFS mounted disks.
+
+  - Compression of suid, guid and sticky-bit programs is rejected
+    because of possible security implications.
+
+  - For the same reason there is no sense in making any compressed
+    program suid.
+
+  - Obviously UPX won't work with executables that want to read data
+    from themselves. E.g., this might be a problem for Perl scripts
+    which access their __DATA__ lines.
+
+  - In case of internal errors the stub will abort with exitcode 127.
+    Typical reasons for this to happen are that the program has somehow
+    been modified after compression.
+    Running `strace -o strace.log compressed_file' will tell you more.
+

+

+

NOTES FOR LINUX/ELF386

+

Please read the general Linux description first.

+

The linux/elf386 format decompresses directly into RAM, +uses only one exec, does not use space in /tmp, +and does not use /proc.

+

Linux/elf386 is automatically selected for Linux ELF executables.

+

Packed programs will be byte-identical to the original after uncompression.

+

How it works:

+
+  For ELF executables, UPX decompresses directly to memory, simulating
+  the mapping that the operating system kernel uses during exec(),
+  including the PT_INTERP program interpreter (if any).
+  The brk() is set by a special PT_LOAD segment in the compressed
+  executable itself.  UPX then wipes the stack clean except for
+  arguments, environment variables, and Elf_auxv entries (this is
+  required by bugs in the startup code of /lib/ld-linux.so as of
+  May 2000), and transfers control to the program interpreter or
+  the e_entry address of the original executable.
+
+  The UPX stub is about 1700 bytes long, partly written in assembler
+  and only uses kernel syscalls. It is not linked against any libc.
+

Specific drawbacks:

+
+  - For linux/elf386 and linux/sh386 formats, you will be relying on
+    RAM and swap space to hold all of the decompressed program during
+    the lifetime of the process.  If you already use most of your swap
+    space, then you may run out.  A system that is "out of memory"
+    can become fragile.  Many programs do not react gracefully when
+    malloc() returns 0.  With newer Linux kernels, the kernel
+    may decide to kill some processes to regain memory, and you
+    may not like the kernel's choice of which to kill.  Running
+    /usr/bin/top is one way to check on the usage of swap space.
+

Extra options available for this executable format:

+
+  (none)
+

+

+

NOTES FOR LINUX/SH386

+

Please read the general Linux description first.

+

Shell scripts where the underling shell accepts a ``-c'' argument +can use the Linux/sh386 format. UPX decompresses the shell script +into low memory, then maps the shell and passes the entire text of the +script as an argument with a leading ``-c''. +It does not use space in /tmp, and does not use /proc.

+

Linux/sh386 is automatically selected for shell scripts that +use a known shell.

+

Packed programs will be byte-identical to the original after uncompression.

+

How it works:

+
+  For shell script executables (files beginning with "#!/" or "#! /")
+  where the shell is known to accept "-c <command>", UPX decompresses
+  the file into low memory, then maps the shell (and its PT_INTERP),
+  and passes control to the shell with the entire decompressed file
+  as the argument after "-c".  Known shells are sh, ash, bash, bsh, csh,
+  ksh, tcsh, pdksh.  Restriction: UPX cannot use this method
+  for shell scripts which use the one optional string argument after
+  the shell name in the script (example: "#! /bin/sh option3\n".)
+
+  The UPX stub is about 1700 bytes long, partly written in assembler
+  and only uses kernel syscalls. It is not linked against any libc.
+

Specific drawbacks:

+
+  - For linux/elf386 and linux/sh386 formats, you will be relying on
+    RAM and swap space to hold all of the decompressed program during
+    the lifetime of the process.  If you already use most of your swap
+    space, then you may run out.  A system that is "out of memory"
+    can become fragile.  Many programs do not react gracefully when
+    malloc() returns 0.  With newer Linux kernels, the kernel
+    may decide to kill some processes to regain memory, and you
+    may not like the kernel's choice of which to kill.  Running
+    /usr/bin/top is one way to check on the usage of swap space.
+

Extra options available for this executable format:

+
+  (none)
+

+

+

NOTES FOR LINUX/386

+

Please read the general Linux description first.

+

The generic linux/386 format decompresses to /tmp and needs +/proc file system support. It starts the decompressed program +via the execve() syscall.

+

Linux/386 is only selected if the specialized linux/elf386 +and linux/sh386 won't recognize a file.

+

Packed programs will be byte-identical to the original after uncompression.

+

How it works:

+
+  For files which are not ELF and not a script for a known "-c" shell,
+  UPX uses kernel execve(), which first requires decompressing to a
+  temporary file in the file system.  Interestingly -
+  because of the good memory management of the Linux kernel - this
+  often does not introduce a noticeable delay, and in fact there
+  will be no disk access at all if you have enough free memory as
+  the entire process takes places within the file system buffers.
+
+  A compressed executable consists of the UPX stub and an overlay
+  which contains the original program in a compressed form.
+
+  The UPX stub is a statically linked ELF executable and does
+  the following at program startup:
+
+    1) decompress the overlay to a temporary location in /tmp
+    2) open the temporary file for reading
+    3) try to delete the temporary file and start (execve)
+       the uncompressed program in /tmp using /proc/<pid>/fd/X as
+       attained by step 2)
+    4) if that fails, fork off a subprocess to clean up and
+       start the program in /tmp in the meantime
+
+  The UPX stub is about 1700 bytes long, partly written in assembler
+  and only uses kernel syscalls. It is not linked against any libc.
+

Specific drawbacks:

+
+  - You need additional free disk space for the uncompressed program
+    in your /tmp directory. This program is deleted immediately after
+    decompression, but you still need it for the full execution time
+    of the program.
+
+  - You must have /proc file system support as the stub wants to open
+    /proc/<pid>/exe and needs /proc/<pid>/fd/X. This also means that you
+    cannot compress programs that are used during the boot sequence
+    before /proc is mounted.
+
+  - Utilities like `top' will display numerical values in the process
+    name field. This is because Linux computes the process name from
+    the first argument of the last execve syscall (which is typically
+    something like /proc/<pid>/fd/3).
+
+  - Because of temporary decompression to disk the decompression speed
+    is not as fast as with the other executable formats. Still, I can see
+    no noticeable delay when starting programs like my ~3 MiB emacs (which
+    is less than 1 MiB when compressed :-).
+

Extra options available for this executable format:

+
+  --force-execve      Force the use of the generic linux/386 "execve"
+                      format, i.e. do not try the linux/elf386 and
+                      linux/sh386 formats.
+

+

+

NOTES FOR PS1/EXE

+

This is the executable format used by the Sony PlayStation (PSone), +a Mips R3000 based gaming console which is popular since the late '90s. +Support of this format is very similar to the Atari one, because of +nostalgic feelings of one of the authors.

+

Packed programs will be byte-identical to the original after uncompression, +until further notice.

+

Maximum uncompressed size: ~1.89 / ~7.60 MiB.

+

Notes:

+
+  - UPX creates as default a suitable executable for CD-Mastering
+    and console transfer. For a CD-Master main executable you could also try
+    the special option "--boot-only" as described below.
+    It has been reported that upx packed executables are fully compatible with
+    the Sony PlayStation 2 (PS2, PStwo) and Sony PlayStation Portable (PSP) in
+    Sony PlayStation (PSone) emulation mode.
+
+  - Normally the packed files use the same memory areas like the uncompressed
+    versions, so they will not override other memory areas while unpacking.
+    If this isn't possible UPX will abort showing a 'packed data overlap'
+    error. With the "--force" option UPX will relocate the loading address
+    for the packed file, but this isn't a real problem if it is a single or
+    the main executable.
+

Extra options available for this executable format:

+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --8-bit             Uses 8 bit size compression [default: 32 bit]
+
+  --8mib-ram          PSone has 8 MiB ram available [default: 2 MiB]
+
+  --boot-only         This format is for main exes and CD-Mastering only !
+                      It may slightly improve the compression ratio,
+                      decompression routines are faster than default ones.
+                      But it cannot be used for console transfer !
+
+  --no-align          This option disables CD mode 2 data sector format
+                      alignment. May slightly improves the compression ratio,
+                      but the compressed executable will not boot from a CD.
+                      Use it for console transfer only !
+

+

+

NOTES FOR RTM32/PE and ARM/PE

+

Same as win32/pe.

+

+

+

NOTES FOR TMT/ADAM

+

This format is used by the TMT Pascal compiler - see http://www.tmt.com/ .

+

Extra options available for this executable format:

+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+

NOTES FOR VMLINUZ/386

+

The vmlinuz/386 and bvmlinuz/386 formats take a gzip-compressed +bootable Linux kernel image ("vmlinuz", "zImage", "bzImage"), +gzip-decompress it and re-compress it with the UPX compression method.

+

vmlinuz/386 is completely unrelated to the other Linux executable +formats, and it does not share any of their drawbacks.

+

Notes:

+
+  - Be sure that "vmlinuz/386" or "bvmlinuz/386" is displayed
+  during compression - otherwise a wrong executable format
+  may have been used, and the kernel won't boot.
+

Benefits:

+
+  - Better compression (but note that the kernel was already compressed,
+  so the improvement is not as large as with other formats).
+  Still, the bytes saved may be essential for special needs like
+  boot disks.
+
+     For example, this is what I get for my 2.2.16 kernel:
+        1589708  vmlinux
+         641073  bzImage        [original]
+         560755  bzImage.upx    [compressed by "upx -9"]
+
+  - Much faster decompression at kernel boot time (but kernel
+    decompression speed is not really an issue these days).
+

Drawbacks:

+
+  (none)
+

Extra options available for this executable format:

+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+

NOTES FOR WATCOM/LE

+

UPX has been successfully tested with the following extenders: + DOS4G, DOS4GW, PMODE/W, DOS32a, CauseWay. + The WDOS/X extender is partly supported (for details + see the file bugs BUGS).

+

DLLs and the LX format are not supported.

+

Extra options available for this executable format:

+
+  --le                Produce an unbound LE output instead of
+                      keeping the current stub.
+

+

+

NOTES FOR WIN32/PE

+

The PE support in UPX is quite stable now, but probably there are +still some incompatibilities with some files.

+

Because of the way UPX (and other packers for this format) works, you +can see increased memory usage of your compressed files because the whole +program is loaded into memory at startup. +If you start several instances of huge compressed programs you're +wasting memory because the common segments of the program won't +get shared across the instances. +On the other hand if you're compressing only smaller programs, or +running only one instance of larger programs, then this penalty is +smaller, but it's still there.

+

If you're running executables from network, then compressed programs +will load faster, and require less bandwidth during execution.

+

DLLs are supported. But UPX compressed DLLs can not share common data and +code when they got used by multiple applications. So compressing msvcrt.dll +is a waste of memory, but compressing the dll plugins of a particular +application may be a better idea.

+

Screensavers are supported, with the restriction that the filename +must end with ".scr" (as screensavers are handled slightly different +than normal exe files).

+

UPX compressed PE files have some minor memory overhead (usually in the +10 - 30 KiB range) which can be seen by specifying the "-i" command +line switch during compression.

+

Extra options available for this executable format:

+
+ --compress-exports=0 Don't compress the export section.
+                      Use this if you plan to run the compressed
+                      program under Wine.
+ --compress-exports=1 Compress the export section. [DEFAULT]
+                      Compression of the export section can improve the
+                      compression ratio quite a bit but may not work
+                      with all programs (like winword.exe).
+                      UPX never compresses the export section of a DLL
+                      regardless of this option.
+
+  --compress-icons=0  Don't compress any icons.
+  --compress-icons=1  Compress all but the first icon.
+  --compress-icons=2  Compress all icons which are not in the
+                      first icon directory. [DEFAULT]
+  --compress-icons=3  Compress all icons.
+
+  --compress-resources=0  Don't compress any resources at all.
+
+  --keep-resource=list Don't compress resources specified by the list.
+                      The members of the list are separated by commas.
+                      A list member has the following format: I<type[/name]>.
+                      I<Type> is the type of the resource. Standard types
+                      must be specified as decimal numbers, user types can be
+                      specified by decimal IDs or strings. I<Name> is the
+                      identifier of the resource. It can be a decimal number
+                      or a string. For example:
+
+                      --keep-resource=2/MYBITMAP,5,6/12345
+
+                      UPX won't compress the named bitmap resource "MYBITMAP",
+                      it leaves every dialog (5) resource uncompressed, and
+                      it won't touch the string table resource with identifier
+                      12345.
+
+  --force             Force compression even when there is an
+                      unexpected value in a header field.
+                      Use with care.
+
+  --strip-relocs=0    Don't strip relocation records.
+  --strip-relocs=1    Strip relocation records. [DEFAULT]
+                      This option only works on executables with base
+                      address greater or equal to 0x400000. Usually the
+                      compressed files becomes smaller, but some files
+                      may become larger. Note that the resulting file will
+                      not work under Windows 3.x (Win32s).
+                      UPX never strips relocations from a DLL
+                      regardless of this option.
+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+
+

DIAGNOSTICS

+

Exit status is normally 0; if an error occurs, exit status +is 1. If a warning occurs, exit status is 2.

+

UPX's diagnostics are intended to be self-explanatory.

+

+

+
+

BUGS

+

Please report all bugs immediately to the authors.

+

+

+
+

AUTHORS

+
+ Markus F.X.J. Oberhumer <markus@oberhumer.com>
+ http://www.oberhumer.com
+
+ Laszlo Molnar <ml1050@users.sourceforge.net>
+
+ John F. Reiser <jreiser@BitWagon.com>
+
+ Jens Medoch <jssg@users.sourceforge.net>
+

+

+
+

COPYRIGHT

+

Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer

+

Copyright (C) 1996-2013 Laszlo Molnar

+

Copyright (C) 2000-2013 John F. Reiser

+

Copyright (C) 2002-2013 Jens Medoch

+

This program may be used freely, and you are welcome to +redistribute it under certain conditions.

+

This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +UPX License Agreement for more details.

+

You should have received a copy of the UPX License Agreement along +with this program; see the file LICENSE. If not, visit the UPX home page.

+ + + +
+

+ + + +