From e69c5ff43c7bbf3fa1d26d808adaf242c7ebea1d Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Mon, 8 Nov 2021 02:03:21 +0100 Subject: [PATCH] Patch level : 12.0 nopatch Files correlati : Commento : Implementazioone invio regolarizzazioni al 07/11/2021 --- build/AgaLib.vcxproj | 6 +- build/AgaLib.vcxproj.filters | 6 + build/Cb6.vcxproj | 4 +- build/PATCHDEF.EXE | Bin 30808 -> 114176 bytes build/Uno.vcxproj | 4 +- build/agalib_alx.vcxproj | 4 +- build/agalib_bagn.vcxproj | 4 +- build/agalib_bagn.vcxproj.filters | 10 - build/agalib_rep.vcxproj | 4 +- build/ca.sln | 6 + build/cglib.vcxproj | 4 +- build/fastrip.exe | Bin 23040 -> 114176 bytes build/fp0.vcxproj | 1 + build/fp1.vcxproj | 1 + build/gfm.vcxproj | 4 +- build/lilib.vcxproj | 5 +- build/pdflib_dll.vcxproj | 4 +- build/pdflibwrap.vcxproj | 4 +- build/vedoc.vcxproj | 4 +- build/vedocext.vcxproj | 4 +- build/xi.vcxproj | 4 +- build/xvaga.vcxproj | 4 +- build/xvapp.vcxproj | 4 +- build/xvtdb.vcxproj | 4 +- cd/Setup.exe | Bin 363008 -> 1186816 bytes src/ba/ba0100.cpp | 14 +- src/ba/ba1100.cpp | 84 +- src/ba/ba1100.h | 70 ++ src/ba/ba1101.cpp | 10 +- src/ba/ba2900.cpp | 6 +- src/ba/ba7100.cpp | 5 +- src/ba/batbiva.uml | 15 +- src/ca/ca2100.cpp | 3 +- src/ca/ca2300.cpp | 5 +- src/ca/ca3200.cpp | 283 +++--- src/ca/ca3300.cpp | 242 ++---- src/ca/ca3700.cpp | 14 +- src/ca/ca3800.cpp | 218 +++-- src/ca/ca3800.uml | 74 +- src/ca/ca3883.cpp | 19 +- src/ca/ca3883.h | 3 +- src/ca/ca3883a.h | 4 +- src/ca/calib01.cpp | 16 +- src/ca/calib01.h | 2 +- src/ca/calib02.cpp | 39 +- src/ca/calib02.h | 8 +- src/ca/f151.dir | 2 +- src/ca/f151.trr | 7 +- src/ca/saldana.h | 1 + src/ce/ce1300.cpp | 4 +- src/ce/ce2100.cpp | 1 + src/ce/ce3900.cpp | 31 +- src/cg/cg0800a.uml | 1 + src/cg/cg2100.cpp | 47 +- src/cg/cg2100t.uml | 2 + src/cg/cg2102.cpp | 521 ++++++----- src/cg/cg2102.h | 180 ++-- src/cg/cg2104.cpp | 11 +- src/cg/cg2105.cpp | 9 +- src/cg/cg2300.cpp | 234 ++--- src/cg/cg2300a.uml | 2 +- src/cg/cg3100.cpp | 71 +- src/cg/cg3300.cpp | 16 +- src/cg/cg3700.cpp | 22 +- src/cg/cg4100.cpp | 21 +- src/cg/cg4300.cpp | 2 - src/cg/cg4300.h | 4 +- src/cg/cg4301.cpp | 88 +- src/cg/cg4302.cpp | 8 +- src/cg/cg4303.cpp | 44 +- src/cg/cg4304.cpp | 51 +- src/cg/cg5300.cpp | 2 +- src/cg/cg7600.cpp | 47 +- src/cg/cg7700.cpp | 4 +- src/cg/cglib.h | 74 +- src/cg/cglib01.h | 1 + src/cg/cgpim.cpp | 6 +- src/cm/cm1100.cpp | 2 +- src/crpa/crpa0.cpp | 2 +- src/db/db0500.cpp | 60 +- src/db/db0500b.uml | 14 +- src/db/db1100.cpp | 2 +- src/db/db1300.cpp | 8 +- src/db/dbtblav.h | 44 +- src/ef/ef0100.cpp | 17 + src/f1/f1lib.cpp | 283 +++--- src/f1/f1lib.h | 64 +- src/f9/f9lib02.cpp | 4 +- ...del_tracciato_FatturaPA_versione_1.2.1.xls | Bin 186880 -> 186880 bytes src/fp/fp0300.cpp | 13 +- src/fp/fp0400.cpp | 5 +- src/fp/fp0700.cpp | 378 ++++---- src/fp/fp0700a.h | 6 +- src/fp/fp0700a.uml | 13 +- src/fp/fplib.h | 12 +- src/fp/fplib01.cpp | 78 +- src/fp/fplib03.cpp | 2 +- src/fp/fplib05.cpp | 3 +- src/gfm/median.c | 2 +- src/gv/gvlib.cpp | 1 - src/ha/ha1300.cpp | 2 +- src/ha/hacnv300.cpp | 2 +- src/ic/ic0100f.rep | 4 +- src/ic/ic0200.cpp | 2 +- src/ic/ic0200p.rep | 145 ++-- src/include/applicat.cpp | 63 +- src/include/applicat.h | 8 +- src/include/assoc.cpp | 356 ++++++++ src/include/assoc.h | 160 +++- src/include/filebar.h | 10 +- src/include/files.cpp | 105 +++ src/include/files.h | 24 +- src/include/isam.cpp | 412 ++++++++- src/include/isam.h | 31 +- src/include/msksheet.cpp | 6 +- src/include/msksheet.h | 9 +- src/include/relapp.cpp | 394 ++++++++- src/include/relapp.h | 30 + src/include/report.cpp | 58 ++ src/include/report.h | 8 +- src/include/reprint.cpp | 116 ++- src/include/reprint.h | 4 +- src/include/strings.h | 4 +- src/include/tabapp.cpp | 2 + src/include/tsdb.cpp | 30 +- src/include/tsdb.h | 33 +- src/include/winsock.h | 4 + src/lv/lv2500.cpp | 47 +- src/lv/lv3100.cpp | 2 +- src/lv/lv4200.cpp | 5 +- src/lv/lv4500.cpp | 3 +- src/mg/mg0100.cpp | 1 + src/np/np0200.cpp | 27 +- src/or/orlib01.cpp | 2 +- src/ps/CRPA/00004a/custom/crpftacq.msk | 14 + src/ps/CRPA/00004a/custom/crpparc.msk | 14 + src/ps/CRPA/00004a/custom/crprim.msk | 14 + src/ps/CRPA/00004a/custom/fatacq.msk | 14 + src/ps/CRPA/00005a/custom/crpftacq.msk | 14 + src/ps/CRPA/00005a/custom/crpparc.msk | 14 + src/ps/CRPA/00005a/custom/crprim.msk | 14 + src/ps/CRPA/00005a/custom/fatacq.msk | 14 + src/ps/CRPA/00006a/custom/crpftacq.msk | 14 + src/ps/CRPA/00006a/custom/crpparc.msk | 14 + src/ps/CRPA/00006a/custom/crprim.msk | 14 + src/ps/CRPA/00006a/custom/fatacq.msk | 14 + src/ps/CRPA/CUSTOM/VERIGA3.MSK | 18 + src/ps/CRPA/CUSTOM/VERIGI1.MSK | 18 + src/ps/CRPA/CUSTOM/VERIGI5.MSK | 18 + src/ps/CRPA/CUSTOM/crpaordc.msk | 2 +- src/ps/CRPA/CUSTOM/crpparc.msk | 2 +- src/ps/CRPA/CUSTOM/crprim.ini | 2 - src/ps/CRPA/CUSTOM/crprim.msk | 2 +- src/ps/CRPA/CUSTOM/fatacq.msk | 2 +- src/ps/CRPA/CUSTOM/fatturac.msk | 2 +- src/ps/CRPA/CUSTOM/incf.msk | 14 + src/ps/CRPA/CUSTOM/orfm.msk | 14 + src/ps/CRPA/CUSTOM/parc.msk | 14 + src/ps/CRPA/CUSTOM/rim.msk | 14 + src/ps/CRPA/CUSTOM/verig01.msk | 7 +- src/ps/CRPA/CUSTOM/verig06.msk | 7 +- src/ps/CRPA/CUSTOM/verigA3.ini | 4 - src/ps/CRPA/CUSTOM/verigI6.msk | 18 + src/ps/CRPA/CUSTOM/veriga4.msk | 18 + src/ps/Dinamica/CUSTOM/crpaorcv.msk | 14 + src/ps/Dinamica/CUSTOM/crpaordc.msk | 14 + src/ps/Dinamica/CUSTOM/crpaordf.msk | 18 +- src/ps/Dinamica/CUSTOM/crpaorfv.msk | 18 +- src/ps/Dinamica/CUSTOM/crpbol.msk | 14 + src/ps/Dinamica/CUSTOM/crpftacq.msk | 14 + src/ps/Dinamica/CUSTOM/crporfm.msk | 16 +- src/ps/Dinamica/CUSTOM/crpparc.msk | 14 + src/ps/Dinamica/CUSTOM/crprim.msk | 14 + src/ps/Dinamica/CUSTOM/dinfdrv.msk | 14 + src/ps/Dinamica/CUSTOM/fatacq.msk | 14 + src/ps/Dinamica/CUSTOM/fatclval.msk | 14 + src/ps/Dinamica/CUSTOM/fatturac.msk | 14 + src/ps/Dinamica/CUSTOM/ftacqv.msk | 14 + src/ps/Dinamica/CUSTOM/incf.msk | 14 + src/ps/Dinamica/CUSTOM/orfm.msk | 14 + src/ps/Dinamica/CUSTOM/parc.msk | 14 + src/ps/Dinamica/CUSTOM/rim.msk | 14 + src/ps/Dinamica/CUSTOM/verig06.msk | 7 +- src/ps/Dinamica/CUSTOM/verigI2.msk | 7 +- src/ps/Dinamica/CUSTOM/verigI3.msk | 7 +- src/ps/Dinamica/CUSTOM/verigI4.msk | 7 +- src/ps/Dinamica/CUSTOM/verigI5.msk | 7 +- src/ps/Dinamica/CUSTOM/verigI6.msk | 7 +- src/ps/Dinamica/CUSTOM/veriga4.msk | 7 +- src/ps/Dinamica/CUSTOM/verigi1.msk | 7 +- src/ps/ps0330100.cpp | 4 - src/ps/ps0330200.cpp | 3 - src/ps/ps0398100.cpp | 3 - src/ri/rilib01.cpp | 22 +- src/sc/sc0100.cpp | 2 + src/sc/sc1400.cpp | 3 +- src/sc/scselect.cpp | 2 - src/sc/scselect.h | 4 +- src/sv/sv0100.cpp | 11 +- src/sv/sv1200.cpp | 814 +++++++++--------- src/sv/sv1200a.h | 2 +- src/sv/sv1200a.uml | 6 - src/sv/sv1200b.uml | 4 +- src/tc/tc9100.cpp | 1 + src/ve/ve1300.cpp | 2 +- src/xi/xi.h | 8 + src/xvaga/xvaga.cpp | 2 +- src/xvtdb/xvtdb.cpp | 8 +- 208 files changed, 4770 insertions(+), 2658 deletions(-) diff --git a/build/AgaLib.vcxproj b/build/AgaLib.vcxproj index 30a458a36..7ed602a3b 100644 --- a/build/AgaLib.vcxproj +++ b/build/AgaLib.vcxproj @@ -41,9 +41,9 @@ <_ProjectFileVersion>10.0.30319.1 ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ $(ProjectName) $(ProjectName) @@ -216,6 +216,7 @@ + @@ -566,6 +567,7 @@ %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) diff --git a/build/AgaLib.vcxproj.filters b/build/AgaLib.vcxproj.filters index e7dd7b67e..958661ae8 100644 --- a/build/AgaLib.vcxproj.filters +++ b/build/AgaLib.vcxproj.filters @@ -526,6 +526,9 @@ Headers + + Headers + @@ -780,6 +783,9 @@ Sources + + Sources + diff --git a/build/Cb6.vcxproj b/build/Cb6.vcxproj index 97aebe8ea..16e37313a 100644 --- a/build/Cb6.vcxproj +++ b/build/Cb6.vcxproj @@ -40,14 +40,14 @@ <_ProjectFileVersion>10.0.30319.1 ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false true false false $(ProjectName) ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false false $(ProjectName) diff --git a/build/PATCHDEF.EXE b/build/PATCHDEF.EXE index a0d30711b77146e8d1d9d1e9e6dcf8054f050148..b4cf135fd971fccb5bbc2e3c5067a454e90bc463 100644 GIT binary patch literal 114176 zcmeEv3t&{$(f>`d;DUifO%xUDs-%J-jRqBYXh4=mB)SO%P*I2^u!$jw$u18IN?cM| zmbKVQrL7N8YVpyQwmyOd80>AC57eX6)xK?#kMMUxviw!HsiWEw&fK?#p8z!8#>A$?fLCp zTN~0LF!-!VOH4R1VR))`X@aJ0P`Ou)Ksps^{-YFlP1Ll( zyv1Mes-;3|6dL}LwCox|lrjKv4P6As`IAJgh^e+jZHiG&9)v)Ww(~?y+gz2XO$_CA zO*G<3 zTvh?ZmBaCzJ%zgcK^MH~eEPrf?;!u0->ucO<{O>^n0**v7E|m03UE_4fVBz010ggY ze+yvQ2LP=EKimN@lBr)c0yx$H_;~y7LV$#80Tz+e8_dh!58y8Wu#(Do+X1fn3Bc~( z0L*~nX}+J;1BK1^D$H0NWwt=FWQo=6?lXCW-pz16T_I&SMkW$n)iV z(Eclc4<-R@eIH;BA2gBPO5U!x2H?+3t$7sSgjWFaUj}&pet^*=Fo&RtC|9ol_~03U z3g*3X9YF0H0NL;|&9|~KGiL)_gs#w>d;nlR@wPk*Fsur|$tIk~ydSU$&yv*JtpKmH zF*@s5%DhaX_}&CK^{W7XB+sRM`XrG*gjF~DDX>O9_=F|iAQ(d}>{tbm$|{F?0E%w_ z$fmGwWaaPj_KjZx9Q-4|Z*BrOjb+a|AE5CbfUJE0H&b9WtWvc9a0ODY+zl|5c^Z`* z5O%La>Y{vre6qGO2VfLa7hVsLLk@=U_6rvRJWgHCT?}yDZh+g50Q`Itz|Worc#;qP z#?;MZsDs5$qe9=@0Pv{~;E1%1PuH;W)BOPLu9U1N@UH=NO$A6}mAPL6 zNM{4@BDm){fN!xgJ;>WD>j7pt0e)2ukU9h4$twUJW9mk7wTB}422<~_e+;8Scjf@N zNT3{}YIF0=023Yo_}PAd8`uNvl*`ih0Dej^k0?JOm8Y@*PGF1jUjVp?nz@e;o+REw zWdPTIAE5o00E=k5XZ#4@Z_NO0H1GE)#Am6-KT;6M_XCV)-d)Q9UYh{0foz;dE+F#J*#O^TZI9#u)G@D)9Qiic05?R}Y&jVb`7X6YwaWzYv{%e4bbbu6+FTD!D zP6ed0y{}S2Lx}f%I_Z&Q<1eEDjg!cKRbEgEwpz+9F%dn>@VR{&f@(!Kd#6tRwgd zDc|e`_!jNp@OJ~+qGS0q^+JI6XpX;T6K<;mnEg|Lzsv*>e{~^Q%i#mha{wBP ztz|`tOdVs{p?Lt`rBW92_RL2CE)^5y?Jo%~Bg(tv>S2Os{|xXA()%k@w-9Cjbbzy2 zY$HW?{0V@}DuBCL+c&Aududk>5CmB4!+LturkDPY31FbP0}>dJz<>k>BrqU> z0SOF9U_b%`5*U!cfCL64Fd%^e2@FVJKmr327?8k!OafS+tZ6-{Y1*85^Yi?BCj

$L`Y)Vf}K$+kt>Dw?m)&dv*Q$?{KwuEV}u|n*A(4xmEWQ<(BrDy`jBiTX+d&UIc`0edQ*hkkiZ*J@EGueDEn{99P<+c}jhw;hv(sCS#V9US3r@gdXsaV?2 zQcB*!!KJu0%lm9rI07X7cB>=hS^t;7W*%j~SC~*TH)=k;mzq`kclD?J!jAVS+i!LF za$A)NbSsOyi5ZtHC=tb<9_BBvrqz)k;_>g@b{y6?H!Pj5>M3s9J(kjX57yXV$C(IC zBbWZ%Bl@#2jRt!svv}M1>p&po+4|c0l=YL61j}dj6p?2qpHA6gmnVqn5SjznRr75S>lDn4is4ga4<4|0CUl`OMKLo)m>~ncTEdKaNXFBVowEM-XjRL}K6@jo@Z}!# z{8sbY8$r#pR@YK$e}<=?wFkA7O*ki|-8s~=woyy@>f=avsp;r0Y4)4wWE*OK$eN_bltS?fiZoNT&fkg0`qzKMl5I%(w=g5$FEF z<=MvCmt8}AcHPrx@!Iv~4A5jl+;?`z%z09i2nNi+OZfb}32~AXW>#4A`j3$lt8j8e zIAI1j;f+Io?6>qWT{!tXC0vOrdY16D!01K7V+F-5;e%{fCT!bVTQBWm2HM3NhyIHr zG20~)Zuz3Gy)>cJVwN%b!69W3`%tp()hW}omyABta)OaSDXlcZkWgxZvH%}S@i}w} zPhs_)1due#5~6x5pWCh8+NZ%D=s{%xcFs}1qKPvz-}jospT2nNG);dH$O~?W_PC4D z1>kYdA*Dax^b+ngC$MoFup;e3deL>ab~hX-C;WdH%J@?cL1Fyy@6CqPcH^vFaQIQq z^g(fz>{YqeJbmIX#fD_KV?hXi2M{Ry7;@}|zKo?)QM_iYl}G)nhQk~jdY05-X*tz{ zY?sQr^-b1mX-UkgH`hJ7`?_PW!||o2^;odIBiY`|P3;wazEA73TRrvXd+i+vFeclr zD`D*&Kt_ItLvMORSn=9hJ!@MvS7OUNU%PX`!s(i`3;^As*m>k;BoYJZ2Y)pNL^>ie-6Ans`DRwScgaU__0aT(?ApNkQrU7*>P_ydYPvGA}2r|Hkr>V(nZ>qC^ z)ms|_zJexXdo4qajN`~?unheKe?EJYNQX^?W`?pUu{9G*I=$z`qtE4ssn2B5XR04| zq#+@#@~J%Z145h1+=Qe;?LUib2$<=o~SeWOGG-2SzUy8KRK-jCi!?!J)baWm^e z6qTFoOPzdD^@%VPZ!OEV3_(Zm`kC}?A@pt;$8@d0sF}r4rH{+wWjt)Z;6J-R{6BPv z{3nCg&w>BdB-U4Z;!9|1e$gKc z#@d_U$EyeF*BoSXnvxK9*bfWZ2ybqq&wdzgsRJ)VviKe*Uj{|5eV5O^$5Wqxhr9IM zuQ6u_=RDtIb)54Y_U5EXVvjdxgwMXip$`ou)ir z!KQrue1+!l*|)+$ChKcN%#Et9O_<;9(tjY9gGzRIb1W@WOyyfWFIw`0C8wjLA2ow7 z&pu0@zVsKufWud?D_{Q#81?K=#<-TeLUsalkx-U?V%B)5fA$`V%$$^u|yR!xKRGJ z((Iq=VR90UPJsQHqtUMZRn&F-RZ)NR#K0I`t$kw0Sbx~oAAZVv0 zNRH-B6fa~jb7QZ}NPi=C*g{OplPVr~|7A89^;`8NUF!b>98S==9f?r7*qJ{$P7ukv}q%+F{Q{rLBC zDQEXAXs_FN^Bn5yudsPeG5xu%f%GD^5R(WljP;uBGrl_=tAkDO_`|Gt8c1KLaNb5a z35gg9S@oaFZKJFe*6u{Dp0!Py3(+fPqK(b>BZFfG*H)V_#h3va=;)YY+|MqDInNjT z{-a=6pZfDazgT)|GBDo0@={p* zU3UhKL6Go+%R!?LT|?prv;XgIe@YnC!2zTA*Xwb`G7e^1ImY5chhDT#GR;oEiTDVB zyWKfb;Y-~0J4w%2f*>Ei>00ITII4`hz78mW^&DY6xgD4Y=(hsw>xb3YC+M&f<+M~y#fzR99lYtw}*hHdnZ+!*r8{^|ab9?&OKO1Uo zPy_X>R;T`e4&Ygvrnx3S-VNHQLikQj6f1r0f%K+bvfcA1-~`($#XXG)UP%O3_pu1c zxhureu8QnZML1Wa9<4rXoPoY2btEe=ay;)A3lG zlDrys!5`}H%3oH!3{t#4r>)~My%94R;LKt2jJR%B;kih%Q>P0K@ zv{%lcS$)o9TG@4jzD}LMQZC^xhxh3`W-;`s?yHBNz`OQMbgP0C^ zMvQzlv-%c7MC&WGUeisytU{U&{jsM-0u9>Jh;*VX_(i(8c-T<(k=Y;nIE(IW3@R*5 zaMqI*xY@IRLf&BBins3k?3s$quFJj=GBMvMei!$L-&FFu`Z1whH#&0lJ(9bCsi1b3DuDVKP|(}2?e6)* zc#a(=*M;37+(DMweT{+iHbrqcGoouV7|P?b+|~`#EZv7pMsV>(qJCzB35z~v3i{~P ze_+=63Vero#QQpZNvzRD>9?&v`jz-=2rGbN_!Auiu4Cmsa)r{6&*1KOiPhjZ+xvUS z+}z$r$VNBqjYocGVC~3EFTa2EIQxI{$B`rhxR1$Vgcy{5Y-jXie3$uj32URn=Cm0J z&#Kv)3v0-&`t4MQy*1_8oE#kUldK2PdSmiEPW8up7LOfEUlvz8A{u47QSEc|yM5jt zNh^Fgn~jO@jMUA+nXlv-Q(vTmbKgy9y{CDxzJNuUT)yGMMO=|i>^ZrbB8nju+C!X=Q85%T?zi+a;$Lb$S-rLOb?(6(l z<_lM|0*;TIFCf7wfE!LV-jwIZ=1xl z57|`w))T_7XO%^BEv4o$6E0}=C1BW|W$`(zfj6-~_W+Q*wP{qcK&5uiUMgF2WuSj0 z_<}Z|u8Cp*MN*F3@Gv5;;0g1-NcYf=Jj{qMBPX#`6RY`M@{~NZk^S&r(qFufV{7xN z9mcG|od!9uI|R~O)%bQVp3`@{0+i^682T(HN?#kI_|G)+Uk|y&xt~Ai5T>fXpgZGv zzDV)Xj3M45d>TJj;HS6#wOiIJ7f7vGuf%IxNqJUZrR9{{l6^1wer@h{H}+b2JoSl! zbo3=GVr|ZW6`=`E+Hxl2Dk>=pwn2aWVLaz)Nk)z2Li6aoE$Td|)p;J-RE2Bspqe(NQ#OC$% zj%rW#5{Ld}lcQ3X7I9-39n zpz2hU)1144^*bH9-BiERT>tXVt$uy5>Mly&JnW5k{k8?0ZLafUX5ESbPApdp^zy^RbZ(p!$eWG6B!K?dUx@xIR9E z{lNckHv9i@G-U}yMN={78?rw*<{@YTFaNnSqi5xp;R!>N`QO4dVpe_@p0wO#7zZL0 z#N(5554)~W6tM1Y9ESV{Jq0MFlLF(H!&uXj4eG;`8)i0=iG6jDM=@j4{{o7sNq_rF zO!|kTwyu+YzF&@@A8!k)WqP z3`~R(9r|0y^=T}fr|(Ca@0}p~>yVT~Uj-N{ze_N^nM$4$RzsdIpq2&dofPs5A?6~7 zHp??BQ-JaTDq}ha=|zsJidCx@6_(-Gq6%FVpWAyWBCmQ>A~ULN)M$PKLHQ#;BmpaP z=u^;eG)ep`%Yf%^@mcrboI0;yMJv<{yyG}3z)vl7onMS5AqcM#b?|*AB!9h?Nd)6o zPh*NYsXN);x?&K_wIv$?xi3e($<+9U4m%#(czJH4dUzf_4Dg1Ygf9Zr@`Zc9yoaCX zFF2g9r$`g5K22$&{&r|$0;)DNK~B-Cm%c5n!YEDoHv;J}Btu(1jP#=1!s=U#i?rAl z*tgs`#ve8RvXUiEOVTFi^0h7}gkv7)QbR2F$bj-!^=5w+j<#vt5z%%`ebe}eKwTzOK_Uc7hv_PV9Ja^x-4oKi-fnZIQ&JQcT7cIe1}WfQB+K4^D|nX z9O2dv0Ye?JR%g8P{9Ab5I$tjb4w|WUQct+JzIh)^1mEGX;R0uBe_Bq9`wQyv?pnL2 zJ{w-6-FNlGKzfea_PJ5&U?V(x2{l)mN+h^WR*59ntu4z@_(1kl475-CbL+?M^V)a1 z#&H3r-Ip^Plb@aW@LTqJyp7u_uQ8=!X(|DfF9)6lZ{mIlm`0=V9xUsjRdcc+bt1h{ zQZ0jbCA1`73}*Qaf@5pZHBJW^=^DP=&aBt;!S~}$=lv8vI>|%0Vb|ZB2nwyhu7?rW zkRE!+H0^1lzgUo7G^4oMr7fECKmRtJ5x<8my!-j&&TpbMa5^vHD&xVMY#uVGBVOO9 z$r{dnJo0GXbW*15sjw3x`)9~jhm({vN8br)z6#ogqcLWiH?UU9kQ&JZPSEF1LHhIX z`KrISnfrTqHY3t7pC0SJzkAt95JPOdm)FRZG@~u|5T%EqK>U*8$97gf)+5FLe0-nc zXP9UyCO^lC5+6T~{_rF5TL~-UuoaV)>UdZ&$!A@^`T6ZPdgA9#eA=66O#JNXH$PYR z$j_WU^3&9Bes+JoC;7a@r+tu5>KFQ9&no`!k)NzS@{`?fe!j(i-mN`9%BOvhPi4RP z8PX#^r}UAZZT;a##Xp-N0rnEtlyt!M03Vny?BzIVZU~jbE>sj#$C!OWWWT z5)nj&yhQTGG;k(4`>ac}(tgfbl*TkLygM7b2Q|j|uN+va^CMPSo18%P5GxoGGA)h8 zUXq_T8**~cQi(tDzEDRXeUDnoeOL%!H>k3XWpPw+8NNNjqF5JF7w*hU9DLY_gIf^? zTM?%=hT_!gK?UEUz$=yvXd4kA^K%iz<6D_Vnzh!eTE_@J)?D#=+iYrJ*hIeGnUn2H zpTdM=1~MD6C$eT0dF|MM$SV)UjL3_^LG;?hjv_MMl$VFCP#zEG~d`=eO z;6p1#$b!`nA@cJ=-(cb1L=%iBG$X!-fkww|*Hvj#fzR7A4USe;9$25#r!=n14vHtkZdZme|(YF7$GX8}hMi>AQi@EdG`(Jikb(LOaHZu@OqM>!+jjEeVKL-F1(fMGVb7g(Yif|?se&aiAl%q%74gu2|4z`~M*3IY5lR1Fc+ztddZ9o15UBb= z#mx10d!QN*y{S?33VNg0i$9eQZ0KmZOl|TYQv`($y%uDVFsrnMNIlMFg#UQzTNSLY zV~tT?de{2C5>I`I_iQ%PdP~TfWbnv@r5MhsOSGd-n*J58g-aH>$s14FkQyC)vMsQ* zzY(c7V-Ce%4l_S}jTgk`uV;OjzkC%!ap+}AG-_Q04zWqU`*!Bn0a90(w(9Q%n-Lj2 z8=m1J#ecWwrn+1n4JE2DS2XSTMCEP=d<&2g|^m7xwVmN&_Kd}m- zA`X;!5hsoNLr%mCGFS=;;*=)x10WsxX{$&*;*+e4SYaF*iEJ6#1AAF#)=xcn5$_YH zy}W>yM4X)bkytQ}E<{S+u$8us@^Ckt?sF$qZZ6trx zDlGf7zVcVo8j@Ic0K>njhpF=p55g)TAbeOChMAnF`$Rr!tYuMD`Up|t5lY(^D&dvbA4#yI2b$_c8iy%|cEmYVf-jagrO4@E`G8oSF> z+yhX!Li|~@d~)#pNt#5 zk$qo%oGHpAjiual)b-i48(eQ#XKrs_{gqn(5eL<(x1bSSPrVqfs*Ff|GegyXcJ-UT zmtkX6#Hrmo(q9mzH}0fAge4>{#q7~T`wI(5jfch_M?#J99r{I(jyWE?QB~Q)sIJ=I zWNv>S{Ml&?Uw?rvSO-J8Guk;A9_`ocqP?{{*j*Gqspp#fSs(b3Nc9TT*S&wu=?gbO z`^`4<6ZTfE$I)NSr|r7$uaDDiVIS9^dWU{>rRWUtT0^ZBqDw`e_e)APa&%e~XS1nZ zESh1xOvl&Lc+yUP9uJJ)x-kyjZQ&2!c#V|*$|ibQuR?)gD|HK-*1Rt0-k(4K#1ZeJTHs_};- zN5tD{G3{Bx`QO5VF?@2m?>;L+8!wg75;43s@dK}JOICf$a{hWolMGblc!~wy+Ei4< zj6nKmwK}&81ijJ)e13KbuZ&~C5o`-t%h&e;N%^`~-3~#91~QVTQci<6v zamurYYTtC7#3%aww@Q%%7xMkt998B?LTk-1Lf;!Jg?U~c28V5dG8d6V0! zFA##86v2&0jB-z_mBUQnY`_l=Sesp}iRU??+M)UcFxp(mtlV~exJX!zdb+=CoR9Rg z3tpy(V%5%}?-L~%KX!E@tlztZVre;1*Ma4&<&95Z^AONAj&llcZKcxK4ff}Fy7Ph1 z=}y0WC(?B|V*Fh6Nzd6z7`MS16lu?1R)F6o`ySMwZW8Vot`bSEh0U9h?Xy2%ob=r6 z`V!}v#!1i3F;04(2FjP)H@i;I$AJBo>w%2TdK?ISj^{sdSlZfR*N5}b6$YJ@XThfa zJOnDb#BajkGsir|Ylz{GXr);UErax5AWQ9Xbbb$>I}vp*;MsL`Ec65Dpk_a<3_btu z<;spN8hy28XZT#`RY*UFjsQIEN~CupO`J(cKVYOMARRm}TD3%5bd~czba1r)T~8=T z|7$zZ@X)F4=zg6zFB|Eh(ffAGO51t#KA7rYGb;Sce8v}&zJzD8>YTFv>yY4q+CTjh zW^|zTH@skrOLJ;gj?x{thv&jMfKJtOK7#I5wzsww4_i`va>aB)WvJVfXYu|A)-n!- z)-v{@AZ#PC<@N51)V`du{?E{%;v*qM%JcC#?u&wVISITyw-o2{aW?!f%f#@am}ves zs00gGJs+RvUJ$y&Fq)jNuYqAPgot9^&o<##9DMEg9fvUUT8Me00Amzs{)7-+&&QM9 zsikiZa@fKH83cbQ0+m6U(3{{M3_;}99K=U( zR+fO`#->Ri=|zYBQ&E&feW5`S;Y>46f6_$6HQFGuL-m|JcqV@T$3?8k()<#bX?}tH z8#@UZ`qRZ^EiJ?vQ+axUnQDsuH6S&Am4$19g>f+MQlb5TqP;;jdLS=f-t2s1*GIn{ z<-|wx7b0=Q%-S-eWqM>oN1!H@l3hdBIYM!kqKMoL)20CGR}u$>Pk<-4fTT>pjIiSf z1jDf7v%U}!hp>Rj$T*W>3wTfNiL zIJY?ka>4!_WrUr#B%ChO|D^hFp{n|hvUz8PN49tm6P{e2x-pLiK+rwoQJp$xcBu0ORn_=;ZSfavci3afZ?6gj*Mx50Qbv_3GAlq3AZwZfvY|9uWV;ho?< zQ~DXY3XUKp%TK+g%1^x}d+`##(FK=L1>Z!o)Rrt>zD_>Tp6VV<073FkPfQ|YY4&SV7{Fs$hAExlss4)6R7!?kJl8g#9`zaxa_eSKe9+(G5G_foh?>C(?@&=q-d)mh0i zlk$u{|0v_*MDk>qutVPbO*1UlSm0)4%&9j?Ac^@+GU7A!eO^p5=)(+K?GRg~F`o#c zknmv4X-{oQ*qemdOhwaOdP zYS)JZATWAN3ap2*QtH!zuJk{G^+msbtn{zylk*7GdO5WtXJPo8!SEyM9mL7(Y!dhA zvw>kmFY*oLJmYms{k=s-jDUHZoBl3n7Rl1_c#^dpD7E!#VOZpce?6Z--@i!O*#|L) z#IEe2(rgd)N*czmXJz6pa`qGcwRxq9FR*s}awuo?MdlxyH?;7@zHq1b+14L^?x9KA zv0l&}LtBUt=OC&0Ib!Cg624zq%lhN6mW5#f1n z%GLG9L`8Unp&1A6bq=cjfo^~PVRe&m2j1FcZc@tnA0fAyi=lq|{g>M}q^xK7PvR%C#x|z@ax*a7 z#=4*KKC>nOx$Py??zqfXE4Q4mG9fzRtiWe~DoJuuUf{3XhJUj#Z6PFEkBS`nFVRxW zRJ^r2z=laO6*q#AWVWng-L(sFpZnC<#ytLTR-OI@lxvyA)agj2yr6k&w?3x6!+F{io`fkFqqkr)_i&7vkyR3jnO&JWAxnz)aa#uUv3*-F@6+?HT%~KqAb6&2L%I&>kw||B>8Ft9i1|&V?>BJ1j`Rj2e-qNix{@p@aczk& zBy)i&Sl4xa*L!Kz(k*nA^O~E&$__nD8m!v>LWjhxDS{Vprk6 z!7@bty~Ky|!ORilj`1NrKsj8-bcGJ-W69}Xup>Bfe96yNK-&TO5jkUlgSg3KrQDghM{yoQ=9AcQU{D=M z->P`qi_+w3&9$sQSzCeQzUlz!RG{hGDQdJ`h1gi3WW3F{+nx@^<6i-Vte3HRIrb1( zKXacKUvsi!=Bkgy5s-q`GYe8%Y%O2tUVxKPUbIUM!5@yrJp<7GMC|ceMr^#e?PUQ3 z9bGQ1tz%%w~K_=0Cnj)i~=IKsFrX@#cBnpi;nmF4Q66+Ah=-+@m z`E#BATHZQ>MK4rE@kI0c1@UYk2BR)j`wO{zK}8Kj6JNqWbO4qW9r|GN3_?K%pM{4q zCgE1g2Kq#dNp(oygfwf|h4ccXmsYr4+R}gHWUk?jp@HMAEMwvjTz{P+e=K%fY zd2>5`c5LWk&g?5dGTA#FpA_q)0e1PmkFtlwVSDhjj+_^3SpcKA@y+Eb3qHG?gYVzL zAz%ihHDTQQMW8_EGG;-Ox1i0lwoP+=(PwYN!qG_>N$7{+)Q|acj~VE>ZGnPga2qW+ zm&>IDSV(AUc{Al5YEN$o@b78G!M#?`)Y*97SaVI?&MS8Cuoa5h(|L!+d$DDk+m2|; zv$jKXrKpAC&DYU+wULW9a?$d9uXRg(_@bUwTY)jlih5YO6FyQaJ=dA(N~Swe4V~)#QCLNUNa?; zHDd2##^siz7qLB1GbNQduGE0*aEqcT{`+B(zIkUTkS&3>QTnicRJ0B^VYcZ?DX z&bE9RlITFz0)Npct>y}$d1lQWX_7d(=8h4P7*cb`NG32@uv_NObLe}&Ofe?=W+vCH z$?S}H^oa3jh2^^1kK9k8p%7|MtC}nw-=9f7^RhmIh#;CAh-N+{gQf-gBpv-~HX$S( z#b?jH`a^f(hc5{enj_^*izOeC1_V;7IrP_+tU=|51u19DuyBC-Fq)d;UyW$s9NN30EIBAD_Wb3P=3aJ(f02Gci&3 z@JSK(>!#*$m~o$7$`}Vf$Xlu%7{sgu{WX}lL;sG*XoQJG1bq}Tis=tZmq?4mM0<_# zyFpur(ImP#!RPS*N6{}0|IcsWV$jiVPzvh7)1$n;8QoVeM(uiFCcm+%J0J)2ec7;c zpHO;&o&eSS?j8Lc*roH}sR)v?gs?>)grZn;AkObe;4cI^iX(HF^S;x7`iU5`MgQ4V zc(mLO@EQv1Uqe;sUnq~7^mmb;@+^1J2kGbYae&w(LCv6kCz4t9UED>4EMwiUeZL3y z!Lqzxi+lZJu;tKCQ_O|w^7&CRa0+^NI6Fid&r6RxS8c|t&RW|vt!O))fWx!@AnaJi z#f$76SwF{Wa9h!%eB>?GA<)~=ya<8rLKO$>f5G9kPGadZz|sc$yPm0YX*%v9kf$Fg zErlvabI)xUB#(gX962Agr_ROE=~0jpIv`|pYJcffwNSuRE&!MN8NgyaW>PvL!iAJ5P!6&x;^)SH2;}1XiTX8cJcjw7 zh|ZFOh(>#8{|WjxMG4WgiGt_z^e<z^;Q{vI#Qm?OG6Zox4!YQ+cpFdDbGzGd~4(Aq}(>n zhzi=g1)VLhu})9@Xf+F&oU3C|P9|cLrzcmP%85xHR=zru9M;PVlB*@uva}q;uXgr0 zH3;!+P6)rLoR7HqY0(1VoO7R)=T55mB=-i4kj$UTAtARjDQ5~k!-__EaW=x>f2I&gb%2z*%>0H&dK%;w*{X+wY2>1;-2IJ`ub@?90zWvPlXFTSznC4 z4j0MFPS9VTj!Ak#Ox;tCC|`=jXcP?jYnDT!V;5n4`B%_UaeJ4jr|Ex(uQD8&J`266 zxAIM>O+N>SF)9K5JbflA0QGa_dtf8En#;FVu`q_;*@hkEb_TsKCif#@=_B&=bnt+# z(W|D&|6fo)VtI znvu|_9u^Ws%mn0vcx7vsc;!g<@rt;NLk)JEfyxdBD8AgIdHS}08NGtT<|#(_!Xa^^ z{V&Z=Ky*I)p|M=qIq1th2;)487cM>#GsMykHwfIR2kh?#LzIp7cUx9rz2BEJs^*U< zyv~KEe-1zWbIT0}?8g#}5qP8hSj(*75I-$6#5dNgZN%1NJzoYt3=gGonC7l7csb1B z{(${YVUmCPpC828zwVwS-8Zr26ofMj))HHWWW6ko?(U(H-G%-K#>}n)yktZq$q2gW z_+aCFQDW8Qh7LGKp9jL|b}`&W$QGo3ByXo>I`qpiE(0G!nP+W#z>O1f80W`f2@{#{ zFFe)G(TWRLN`##)V_MFKJvdZn8Loy;LB(ofZU<326lyQ)SV4w_AM18nKVCf)dUX6) zV+goYg`aJzm$jVUa+>hNfytpdu6 z?+oJK*gZauxzggsih)N2zd?Ek5fHEHemfUi{q|#y1NH#C;IV{MOf@eUjL~twW!+kw zjoH#uC?zrx{tSAu>xb|-6|1~L8)IJ@#y(RGiL8MhIo=vTzowOMCK-#$99->Kzq=`U zzHjO%MCry$S%?qTKL$@z`#bkJPFp#a)h+WK`rDYt;+XIv<2|Pn;L0du-&M);Jo+eq zwaqb4KJt%~!+IicovToiInFhb&>cW^u0tB$2PK@FkaRff0p~dn0y>)rCRU(SZ9RrM zXFGUs=%wO?XRAC1SP4ACceC_s6+bt_d>3WCcB8(6-7nf@glsLI1mpv;dpayD&+{eM zra>USwAv%+OrDPeuJQSfynx%P{|54d7|`(aRy?YM{Iz`bK__|sT=04CHHtng7PCH} z4C_3fn+h3;`aOYwt9soPnrq=a{R$GUzYxlv%D2f@UhTA&P*k0W6r9X)==VV<^CEJ7 zG64@qMdLk)T+jYd3bSQUoxU8JC{3I{NB9jn?e-FS|b;`(jRHS<%Oo z;bwiH1EK|K!v8${?8V=(-typnz=qm`fZ$ZqcVvOX4vv2Tcgj3{D-J2+#w!T2N*S1g z7t)$P)$p;t&_gSOyC)o^Vdp=fIHck8vUmE zo2Y@h0@zT4X<}% zi>2H3P9xlcV=5gC>1;S93??_@>$nU**Qu3|!SWI?)B{Cz)K;#Ap}P45>%DDl7VpGbbAF!!Jd;ss$Jx9Nff6 z!jNrvh+>$RJ8*G2u)WZgPM$|i4u_Uhy+;2sfhr(x8h9l5Q6N=qP9zgZX?SzEt4 z$uNQ!$*vO`WSTt($kP~4zb|JWYR|>i5wd) zu?vHU=w}pqTbeFI|$RL|7qzSgLL~UQwFIb zRwXWS-+yt5JZwrHACCEt$)l-PdB}l9EKsFt{9s)&EDLK^$-`F+LG0maPVnMNyr6QWM*+G5b1HDG>=E)6D3lhGmEEPRGBuVFn>X3)+^ntEJTPobOV0! zYNm4g;@Wq!f9e`3)20lBaRFDVPxi9^`G!{^k-0|Jc^wihBVi*o z@34^jBs5{zNnh5qeNCw+3j2t&y+Q~`|9sP%PNx>X(SSd*dg=e=lxa|Tv7T$$Vdchn z9!<}=016JIPk>N^R72uneezsC<%<&XMq}W4#Bv$&H7yByq!<;j_MD0?f>Rk>55^ws zkdU7Z)&Tqnk}>YiGW$wJiA*&0)E}rNPg-zMc&u6j#K{f#Ze}IS(>Cj zsYK{Jn8?T(Qv*0PhauQxykvuz-0NRQxMdCDgR2OiaS`sV1YEjl%L8)pZZ$P>f0gS(3TfY9) z3{h8ueOo$Ks~hY)C=Y~UUi(vOYQeyIFqS{CbHqiEjk$phxyMly#}ZY8(6NI7jz6~z zos|I&^dX1zPR63^aV&NZg)|1;J=R;<4!d1pA}}rbxTxw3qB-6@g;PbJm)V zLz{-!dZqVDnm$F@Yt7}M?ZV5{#^;FeHem)g5Ldf~ujKy8i0Apv^sO)QMG4QEgjH&D zvTr+yO1O}Z(|yV`BP0#>vasOsJi2{c4_529@OqP$R4;FGBx zLEkvtHHu#G_Ox@D#*S}i&8oC>ndVU%;Aq+3O2A&&)^m861fq_)d>CfLNP(Y*K`wMS z{&i*d;Jg>Mt$}|%Fm=Zr)3xfe=KHR|%yy{n_29JCbHGw_oX@KMyy#}rI2o*H-V0CN zDdl(7bYGs&x+xF-B45Dg?@(if+Q}hCf8%_b-v|@m!1uIfhZpPS%xf65%4pv9OqB67 zCOpb(=}^7OMt|ZyA*;T516+u4sJ6k*H8kAG#(^p=y>^%se>u@B3BS83t3K=Hlt;XS zy*FFD*IK>vlAo7o{6)<-dr%XOcgXF&cQoIO^rlO`TwLxpqV*)-?DVFZzm=31Uwz^} zL3-mIl~wL4E<15w*Uh4h1&22j`~g+USQS-kDE68=45yioU=QaH7#?oJp_iIJwp|%W zsrk5maDwK-hS!mrcO>JJ#e)+yS2i}cGI&3=lD8L`3OEKQX*^0}Du9d>Q-LJSo#Gp| z29ou>oZyv&(fXv|oWwT+Qkaq6CiidrF)R(RiEPi>Lno}cj%_*t;*M&Ql-c)3EhwEC zs!TB3ho&MxfYMyUwhI%DiI4JXLTCemhF5~tbLUT~5%`*61Qs!ZXmri$x>Ll->C)^$ zZL;x~>be!&B^<(UOnD0q;>)QxkmGr0u%}7$79j50?^#K z3&KPuLJdK~n{2Mr6(ScxgNQbTm{lMAD%Nk&lViEeVAuLzaYcVbJTL(gh;LH~_%*F* z=tto$yl(0ScHorSRCL1wgLspm7a`4Mx#N(a^QlVsg71BSz5x4#u2pJL&d>F)Jcs`6 zkupZ%!J>%OI<=0c4@G4vqRMt^L%8(Dr8yq>^qgxHOsTye)dbSBF$8%!=DSZTwT7{7 z3Szn4P7OmHmXsD&fggJ)|E6%s;Ci94G^ZawGsxSev3M(oB`Mw_s(cTYA=&OkxO(|z z-KWm}_ZW-lV zeqQ*wtH`+kMdk<67eL0oHmr%|JDsMSBRD9X?OYSi@z&~46O?*^zqSo2-!B|Isp{Me z6esvyXN*w42Fe+rI~R1ZK3{Ka#jJs~uybK?7KIxGT2Tz^x>UdKRV0offk4hV66y>* z!%7UAzf^a=2gw3HJoRcY->3(NqVMzUW$^^J&*x_iAMHzUuY04}_lD==#FV?LLF#H% z)6&Z)kNkxXh-(RxblFx>Ib;#eH( zTRqtGqAlxpS@j4yM<%`EzgokuGfn=m%IbT2>|2vBscC zQ@tE4Fl%y;_Do%`29D?PM1KTAe3Th{0eL5K4h$k{Ld&4-%yqh;4XhRi{ZGpJ^}xY5 zo#aD_5pR1bvHVzm3#x0H$v(_6d$sIKC5nnRvlWy=eA&;MY^9-FtCDO05GX z10+1H9O<_=Ih-3%ABi5Vd>G>e6^LtLV;Z*3FvCPwDzzSDeF<0A6xM~xRf@J1h6#`8LXv#YDc76Q|`K$1#{b^7fx8JSwnB;4y)^z*d260^0>1 z{xRwBL!o%>O(1`b7O%qzbf&Z)od~-)x{nL|u8*$JrkkzQqz@gN- zW1FUH&Ch>&Jo;lyU^N;)jrb$K2KYZ~O%TD(Gjc~Tw?pObL9S$`Hh+W3U|%xY*a3~yZD!5oF=`IBAoAJ+ zKTZ=r(?k5=N9pisO2yB(AU~Goq!|1-$g3C5#Q!$cot}3EjH2uTG+sS?~D*`XbQ8fMz;-^uEXT*i?BK{uQ z;Cug!r@b?X-$eS)$AzCp{Kd3~jd9^0gO=)c+ynd@;=+HL_zueFf}Zh>KDVCu6KOx6 zKr2BhhOZ%c;?SJekUdOMAvQ=(_d|dcx#IGm*#<=j0K}&UW z#s1^Mf13Dfh<`y``0I(Ulb=ui9#4Dc5whweFyOm(f^#$GrmFJMf?ra?|XmivAqWU8N^>l`p@@_Z^%E5_)X&f zd&W2DAA^?awo*Pf^o)-;za;)Aeh%?3h>7p_Q}E6EffjP@2vJycHH+4fwGY~2HC+aU zP@!P|XQ6}C_wz9eMdPOt|7qIO#-8zm?T6Ot7Er!7#D)Jf@iiI$ddAmPqt_EZQ|3P( z#Ax8RCp=%D zbri*xv6y2siv9lmSi(U;oGEnZ=K$~emx7hfYD3X+EIOJ+AL*{Bx!QsBfCL64Fd%^e z2@FVJKmr327?8k#1O_B9Ab|l13`k%=0s|8GuaN-Wr`nzKU3?56{SU`ufAR6Zrl|uB z8IZt$1O_B9Ab|l13`k%=0s|5lkidWh1|%>bfdL5&NFXEuoFX6i>yrf94o>S6{(mL% zxdSrzuhi>6qxvp^0e_%14alJHb~8|7Kmr327?8k!u>_8~@YAUHeTd`{DqbuozqPz# zWx1_*)so^$S4l;=(e{$^6@_IbMYh7KW$xw0_m*NXAP1q}1w)pPCn)8<~6Z<~GfoVm8EuFKCaaLl#OI46j+WYWUQs)}V*h0ASA zOUjC?ZKGFBymZXM-s@;WUwrZEVsH9@y#hDjfwh-(TS5;P(R2MH? zv1FmEqN1#N;qq!EFPbp^qD#kLd|BqjSqn?bmz24SiWjbOyGqJRT&sf>MqQU^leC3e zCE8GdR#c%i%h9H#Xj>WDQ;qa!ZIw1ryHpzkyyeJWBDmGSUy9b+Ad3>wS_2Af&a>o#~P}Q+>5jc+IW<{6!2ou$OOy+ z2Iap5*sO&#@MA2XKz>Vb?XI0s%?{m?-y+ChlD0^@8fkJ^h-(F|i?myiCZ`vnZiRE5 zw7`k{ay+NbyZ)UEN^>>4mak32^*UT_+HB;_!JSRJN^dda}OU{3TT~IsAMU$&xJ$?H#+Xa3$6dz}H!xCJgbLw8%dl~F)5$v@X78$e| z;iPHW+wf1*fcG=_s(VwX zX_dGijr$4s?VwG#zX9o0xUM;Mnl=U3AETW4?+|Ex0-WGqrI9$ca=MlQ8o@vOZkYW2 z`|YjTRaH{HELd;!^}oU1Xdm=#wo4Cb_Ha|glhVi0(|1opjdxQ7 zqYAc9Ymde+L0_wsQDYIFu11>U2Wz0WtkSMP3H6Vjv_hVTeXUKqAi7CC-k%G)?1$x` zL|!-+RN>!JF1nUBVGJo?Fa;8AbXNEvj=I;bJqtWEBhpw246DbmJCUKL=l{z$%6-O3u&lL}ZO zYaA0}jExdikGFl$bBW7VQf;enyKEIpZB>Qk%Zd%{79z|nFACW}Ox69n^hG^UTkPi* zkSOmM!BP6`N6R23#(H6`FxQ6ra_J+{dX86~!8qEm-O7q;xHKcmHu4a_+R7@7p@CWp z#$(eWY@)c|V=on4G-+YsG6c{I7p<(Qx^-dJ!s><9RZ9>@t1x;=m1`mXt<1W3VYRDh zNoD0icE_^f%<)J^8%PJn@-k!Gb*!GQJ%VvHIIrNi9`4Jk6@^tL zg}0Oy+s@a{7jLtqqN>VW312gwB<4n<00%aEOEHHS_^Kk?$`Y58Cakhd1Cf+AnCRi6 z=wlFLC$P_P2n!tLFx#mtt}0t?t1euDdI~wuskRl`mb%NAh}(m>%f{PmbDdxa|GPQ; z0eT^vW3{_XIu%jKsi{;^@shGaI7?yNR#9Gzs7fI%sVH9oh0~+5QRYIG6(yWX!JC>3 z7ut$SmdZfvia})j&|y6^yW2<8B+9e7Do}s*aJxOyq{2|=h4!=;*1ST@eKy25R%hLXyPY|9I)Z&gD?g}Vyj14`2d7+9)C^RBRx zvWHc;ify-)xL5|{XJT+EURAifvaEQL%{Fw{kR{H-D%%pL@F-QM-i@+!B`{-3Gm3-WlXYX^#{tFwb5tG0hUt`Hb=m z3R>B{n#)9*d00==AW~RExJyu!V&%6KFRiHJsBB0#6mEqJqoRm9j4rkaDg@E)s?>t( z3i)oB-tuDGRnB7cPkU8WMO6gteE4Fn8ZdgI2fj+i)g{`kNZV!H<4klsemHIzateT3 zh_RS+bB=)(fShYrOXO9EvCgLDV^(<;uDQTrTvsT*y|-?w__z>dV{tMQR5-)tNX(kg z(=udKxDe?K)Dig?Z2L?sXp|Q&mnm{EFSnw|4X1Rik*z^K7tRd}Xl7wanHw58FQdqI zp^XbJ#-Gwb$cMpW!b;u7;!V)k1(9*h7=Q5s8?HgWSX>x%jzP^CHUqmXuA(QpWwo;B zkRw8$3)RP;sEznz#uYYA8#)8Mbdqff9}b-s4&KV$%Wpv!r^g9)lpx_rC>Ht~ItM+$ z$Qe4Vs0i#-PeQK?B79E#2g!x58P)i&68~;50^mR6KLcZ0xVJzKeIFP$<4k`O{_$^5 z#dPf`{-st<*T&)BV*KNuYFp3=8?p`t2Y7xJ-4{G&&|iwHq?@D{F?&g&rhuYp=r)Sv z>_{&V;Q@j(EeXB5(2MHyA+rc0-h%#7j@77KtnxUt8QOHL8BM^d!+4};<3Ik*L%-y@ z&$Z}fR|C^-;LHG4k;FP-dcjm7dUgrsE?gJ85V19Dxe!q@y#nVngv*etqTSWVDFf9D z3Y>8T1nFIe8UP)A|ftjE; z2QB84N~9^#?*AN+4r^2M)fu22o;HWIqIJ<(kYcnhgZYjb(q6A}f@g>X;Q`WTS z8t*7%ULyWY!@tb0Bx;$(3Cs#TOGY{k|6F+H!n18if7U<#)N$yq$&_ZMsy6g^Ao0Ib z0@>TAYwg&(F#l1tR;=^!FV(mbFZhQK2?dzW#=q#Y%;(>F;LkS7svKpvi;cW8TsIqO z;s(vhOxs-kU^n$Y9aRVG`hV?R3wTu3wceQ|lv*vw4G)#p6v9JAIPce-$4p3KLLmf5 zB6_KZNoJCaB$+rf31CrCkxRK0QU$fv2P&dh5l};liUlzsDr#D&`+`Bh`t% zxEH5k6plqeS2{t63$aoX#_b6-4LNDQ=mRxEB*>`3#)Lt^_omyPGyiTqWa=u)2N#Nrm< z80VSh?TY8l<>R!EA%9CJ+EnhlVsVFXOr%fq)4FL$dX?}?J*xTAEwt$z7emowEH*H2F9 z&06?Z?<)Me>WwQw7>rag~ioQGMbK;u+(mDc5o(Wdq6?}m0y z=(Y|yp^G}4s&^IQ?WTOR4n2{-`V{i_9TcUh<4EaD!Z9wRySph*dFe@88exxVcpzq% z9XRj3=;Upp`A@Zu?@B(}kDJar(T@WDexa)n@AvOYyOZtc*vtRlb1>y5{=SOpB)z8Z zMRW1}dpvkz`*e=tFZXDmW18S^6gI@J=_P$$PD3J%Pw-8AJgzZj+o?WhqHI^8r@D@R zrHJsmDt4sTJ6>~>!vGEO^z{kp&2PBLTR=SQ9vD5}9^;9&ZBIhm`r?{CSEm7F+U4`V zF`3Z#N!TAiL*HLT^U?V)3+IV+XgYmjkvm~ZlS!JG(zucyqS zsp%P|uK4j+L@D)zp)Tq4oJpO^s> z?wBXqM}dEmOaf;p6Z&1J?XRr}#B?r^SE_H3PpwbVo=6_LkHW@23Ol-wqEq&E9ZQ~k zw~mM;2q#N(C=jj83kkm#XuD>3z!Eq0uKOB0-Jy{ z37&G7eY>ya5c}=pbdloxm=j3FTL8a*#bhzvmrf z4$us=0n%m%Sq|(5vR(ikU@@=>_#DV-!8fHSF907sgZ2Owz{SAfryXQFunJfV)B(eR zKd*O?TY)^_eBj`39pq);Q9u9|0#!gEpo6DxD+Iy&LSO~(4A2T31wIEdw%|KjU>tB2 zuB(9439Gj{$Yx*<@FkG>B6I@KfNWqKFcqi(!oc;w0-zb#4(tKm2fhRrp}YhgECi+j zLEw5|A+Qo?1~vnK0Nw$vMgF7U{}AwJ;0<6iumV^LECj;9y~tMwc!5%29H0TCfFZyj z;D>+%I3IM6q0DyR+X~*M6SO7B{m!)xa`(Cuab>8x^$A=zpNKmQzJw>i*Hb6r{y@hS z%61i!V>vmNyV8r3#U;n`$)wYDS`D!*#>Q@#8UENhev&&EE5<9yLr7u2mNNB9LWZYX z*r4gDudE8&o$eE^aNC8*a=XK_r$!fFwvX;}i!Q;ga8E7D&H?Q^Xgao(+JOo?vMah% zx}0KJ*?zApvR5y*z6D7TtGO?dylvO8NHJ)VWyBMaw+o zusqc>J+ni0ZGi3pbLSgLg2)kTS zMv*z+?M{qGyI8jyzeVmG9w%t0Q@DgyzptK)r0T#$iOtD@Rd8Txv1KDs0?-J0q5 zhO54wYLBBmmirCq?p%AEJ&x8shH7s77U~pl4GW;#l=?5IZuhWkNv!NPwAvSjI3T|0 zz0)aH4#D8Yx?PTxkArDesIETTb5icye5zn2sg|z{o4tF=NmTXj6Q%lIi2E=A;VBz^q>`IBnI*U9hJ2( zN~gg`v@4HBD8SX%X;b)Xgo395`)+$o1J*M#ZVR9fXVM#!F*6j^o=GbvMkt(FE53jv z3a|~d$6|m^(NT5$49dgiLamD2`3%ES-TG;|H7f**L+7L(*_#Q}R)SWrO0qs`GZhrc#q6r3Wb(RRko0C@_QDbEkLE4A?@cM;aH{s2{d zEbVgg>6A#`!icR3%&hU$&hGJa5-~gIn%}2dSizrs9nF<8?du^odCXyzW9c2yL%x0d zb|)y-Bh(}QN*wxB(E1fB%S>#)83 zGI~}MXz;;Xqiv(k6L&#&d4T2^^0oMwlPvd7MvRa_Me%*;LEX0$KzBRUVRKYjV0 zS}#1p@bFs^qtgCN+>TMPt05FZ@+lu!yAUFh7z;LBv(VB47y*m5*voI*4e(+_Z<(V0 zHmD~K>T=_9te`umMeDvC9s^=2;{zV=cz;>Y6O8QrFC9C%q_DVPLTP3K%#c36haZSjQv7~M^B(Ua`hs?E3fKmyj-Xve@}}h5YoS6E8!&Jh{F!~swjB~1fAm}AJLew4bM9^ z?ND+f?Ok6Oo+pAe9(d9TLT-CNJy2WWuY}(dyVip{=b1LV&NdKoJC$?XB~3iZSKHtZ z25O@|Y0ILLjpgbp%dev}z)%gj>%_V3BMoW3S$^ozxhY^3C!a-mt*F60FoE9$+pe>1 z$_XS_cj5|sy$p_{Ww+ogTKZjw9rRT~MbYwb740G_Yfm*5gN@s0)DRIOy>lVt&3K!m zStB`piy80XqyYtp~$caHk{MsM$SFZZD=p;+c2E;#)hHY z5Q4L%+HeID_eI(ZkA2k@bu@29I_(gDEh-`}rP?sMGkn-?Sw+(h;5t+X*GaL68`5W% zhhp{BgFE{6&l|B@gB=*)W2uk8+AypOWM1GUWD zaDw$Yk~#s-wEWq#!@lCc<$kXZ4xWPK%k=nZaiBe&Jf2=s8?`asb_%d4XaXTM=~H~+ zZ%iJTz+q7^P!8udWKnu?yzTKQG9Nt0E&{(n8DztGqzv!RJK)Ul8|M2#OkBju@deIIqGIb}R_HJ@6N)=2)aCm61;E5J+0 z%gHPn6E&Q1<48O-ZaiLmM_f3e=TlL*&P{CuDTtis!FUkTMDxX(LUZ75JH6Bo+Meo2 zGYEMsh31SISh6~vKj!-fYyaHIg}LK-F4DzaKfp`ICMA%RKtuv5Jqt;xea9p)KKA|V zcdS{-=A4!UQpg~b1Lk%to)Y=?kLe=*`*7ltkIZ!+I>>eO1HoiCsRVRuRt-F9`hp=i z>N7^LqnQzKYK-@0@X2S4C@IdnR2h+p$9}b54}ALij1jYap%IpO&RM!A6!O)S!ILWp z)P{@^^}$*#R9@wSAJR+P|L)>aEcP`|sAhBnI|5!!YyA~)bX}TQ8%Skl>fvC0C`?yt zF=|7)p~er1ltal7mi@RzoE^JHOwe~tJ!A;gdroC|}u8)b! z4HqZvnPg&80{?~*$V`ds8A{{Ob|wX$Ckbhh1bM!^Mt(sSl=;dUO^puf!iotYk?+=~k&tipnKN*{_7vo$3J1(xzxzwIf=pbE$KSv(33e zKdARHh8klG7r5GJ>@eOoD$FJ3gXR=h+A1B9Qsq+l2KhGm zA$g=5h0U>q0Bbx|niY7wyYp<{;CD z9m@9RW^rT0nc^JrW^s|YRD4`)7M~S2iCZDFH0cLYhBR0bB@^7{ONG)wsgFEVcFHC4 zb#jxuMLs5{DSeftN`F;RbJUG$7C3FuTD2VK?aqzP9nNdO=|H2_c*ZycE{VCq>}`#* z6l=b<#(Kdbb5qFOklg^rVx}-Fnb(@_|%R+_J)$MURzb#qj= zmZ#vKoe0TeYMASpH<&M&AF>tf681rMAeYY-bIsga++nVizm8wbOM)$gpzrsKtHn0) zEa}Hmwv-}Im46@6sXJY3bdG|qr|Cb|IsF>FS-;XKj@3=p zM%$jjWHEOz>zVJdqgVxPc5t=aQf@hy!F&0Gd>>(`utLZXe=dHC(KT9{FFh{(P8uLv z(C7+zj@&4(l-9ole5LS+j$r@&(j~#n{>gr5}N#}ah^HT zTnBBHqix@mf~Ugx=87p`9%BwLgP|9_xJx;cE96SJW!yQu&gb*R{ImS?{EPgn{0@GA zFkG07QU9j!uJEC7m3X!Im^d7|>yws9?@1p>A4`9izLL`AAIRs*1LYqG-!DHbKQ2EdKaDZEMScY`{geEb{I2{L zSh!E*f5<7yE80$Nx8`vE#K}6doh8myPEP+BG|XvCFdB^qjK_>7<7tf51L);(CTUHH zEY4Rjzh!nZpE0*`+xT;Y8Ny4#KZO4fCy1ruRpM;%CUK$IC>|95CVn9fmVPeZF25&_ zRAxfAeQHpBMm?mSrCp%qYgO88SkooWg|MaT^dtH)JA%iM16 zAKXwrhrgd6A+Umu(Kko9Nmw8(7M2QkLGK?C)(FkQb3%*o3dSUr{So1q@P&{no+Azv zFA|-R_Usn-p(XE&ABo3cS9(e3z^+^%4UsN_RaPapG+vq{T`qZ~8PZ(o7U{3jQR!3Z zxa5#~%YEbl=&LOG5}A`#^i+X7NuDNqTBv7>OgIX)}%dyo+@@WJNHBP_vpQie#R=}EVIdc#`IY?S--IE zvL3QFTQ6buJ7AHcDP%n4l);?G$V?71fhl2bViqyWn0wiW*`bh80XLbul6!)CmTQ5e z_H!R_TlvrVbfKRxO!%d+PIysRDBdgnR(wVLllWKhL-DwnD*aIEk5=nafizEQ#9aA= zbb&lV<}q%5Dqk*_%K?m?mGZU9W@V4^u*zwsHW72CPrF*XM!QpcR(lgOcOR$ZoaSuA zY_-d|7h}nx56~~xC+k<}H^Z8YLtmGg)66on%B(fR=C$TrbH2IAyw$wZycah3QFE=? zY;G_&o7>FS%$=}&`^wOB7(t=1dX9_t;f9}Z(Qe@^E~g73EJ zf$7DZ&GcgiF+YZNxtL)XiP4#CCZ8!}ikT~!>9|29eX&OXhh@SRXwopTM7%{@Cms;{ zOSw|LbceK2`a&9pFMu%{uX{6{~7NTg2Ll)ckYO+#agIG>>_-l zjzbz|iVSfO8Y<`t^^!l`L8jxdmT7`@-OjYa3hZL`F#DMO%pvA|<|xy~9Al2-Zv#=1 z9mEc18CGEDD07ts$|9vvS*5JS{I(1Fu@7sQL(2Qgoz~sf3hNQ{!CI>cb3DG!r}grE z`9s3{0ug(QeZ`TYOUx0ciql1}SS`+jZFvOq{5Ek9#%3EdlSpY&Z|Q6ad_p^mrD`cG z&64I|L@tn)OY5agQj4@rYLyOQ1$8z?RlI!GIu=aOjG;Wf2$w%cjxi?k? z8Ok7Ku#%~aQgW0crK+9#rLbVDFgtI<{Jayqr>VWw!D^N|3M+_d>U7N5bJV%&0(H5% zUfrO!s=L%Z>ONRIqAfSjsJYm)g2O6i4)~(8{2ukFdJJ>?V9f<aMXX_byrmh${#wKg0wGaB)W*xIgW3;c+pp{wB$VE&evx-^E zY+zag+UV0+?8iy(c)hST8$|-Ogrk)3_C|0%`n6zK&nd@8pm1 ZWM5Ptdi>{mpqmUy2_z+ult6b9_&>k$iFp73 literal 30808 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 J#y$-D{{S~8eXjrj diff --git a/build/Uno.vcxproj b/build/Uno.vcxproj index a99d8dbad..05dfc3130 100644 --- a/build/Uno.vcxproj +++ b/build/Uno.vcxproj @@ -40,9 +40,9 @@ <_ProjectFileVersion>10.0.30319.1 ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ $(ProjectName) $(ProjectName) diff --git a/build/agalib_alx.vcxproj b/build/agalib_alx.vcxproj index 611fe9b1e..e9099e982 100644 --- a/build/agalib_alx.vcxproj +++ b/build/agalib_alx.vcxproj @@ -48,11 +48,11 @@ <_ProjectFileVersion>10.0.30319.1 ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false false ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false false diff --git a/build/agalib_bagn.vcxproj b/build/agalib_bagn.vcxproj index cc9cb55d8..56f3d934f 100644 --- a/build/agalib_bagn.vcxproj +++ b/build/agalib_bagn.vcxproj @@ -43,11 +43,11 @@ <_ProjectFileVersion>10.0.30319.1 ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false false ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false false diff --git a/build/agalib_bagn.vcxproj.filters b/build/agalib_bagn.vcxproj.filters index a025edf29..7f6b0e818 100644 --- a/build/agalib_bagn.vcxproj.filters +++ b/build/agalib_bagn.vcxproj.filters @@ -74,14 +74,4 @@ Headers - - - Trr - - - - - Dir - - \ No newline at end of file diff --git a/build/agalib_rep.vcxproj b/build/agalib_rep.vcxproj index da726ba20..71d687c48 100644 --- a/build/agalib_rep.vcxproj +++ b/build/agalib_rep.vcxproj @@ -44,11 +44,11 @@ <_ProjectFileVersion>10.0.30319.1 ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false false ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false false diff --git a/build/ca.sln b/build/ca.sln index 739b3c757..9d58b18f6 100644 --- a/build/ca.sln +++ b/build/ca.sln @@ -51,6 +51,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cglib", "cglib.vcxproj", "{ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vedocext", "vedocext.vcxproj", "{0042619A-6B7C-4D3D-9CD9-9BDD8D200C15}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lilib", "lilib.vcxproj", "{B61F0AD4-0CCE-4371-8E92-85A26CAF1A7C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -105,6 +107,10 @@ Global {0042619A-6B7C-4D3D-9CD9-9BDD8D200C15}.Debug|Win32.Build.0 = Debug|Win32 {0042619A-6B7C-4D3D-9CD9-9BDD8D200C15}.Release|Win32.ActiveCfg = Release|Win32 {0042619A-6B7C-4D3D-9CD9-9BDD8D200C15}.Release|Win32.Build.0 = Release|Win32 + {B61F0AD4-0CCE-4371-8E92-85A26CAF1A7C}.Debug|Win32.ActiveCfg = Debug|Win32 + {B61F0AD4-0CCE-4371-8E92-85A26CAF1A7C}.Debug|Win32.Build.0 = Debug|Win32 + {B61F0AD4-0CCE-4371-8E92-85A26CAF1A7C}.Release|Win32.ActiveCfg = Release|Win32 + {B61F0AD4-0CCE-4371-8E92-85A26CAF1A7C}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/build/cglib.vcxproj b/build/cglib.vcxproj index f7e206f32..2f78637ec 100644 --- a/build/cglib.vcxproj +++ b/build/cglib.vcxproj @@ -42,9 +42,9 @@ <_ProjectFileVersion>10.0.30319.1 ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ $(ProjectName) $(ProjectName) AllRules.ruleset diff --git a/build/fastrip.exe b/build/fastrip.exe index 8bc86e62701aabdee58d006cbe58476c15bace6a..0a766454cd19e1733ffd238c3dcfa65eddd29dfb 100644 GIT binary patch literal 114176 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 vK%;amLw|A*!u?8A`X7hU)9ZP<`<|6csIN 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 literal 23040 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 diff --git a/build/fp0.vcxproj b/build/fp0.vcxproj index 43596688e..d516e6f23 100644 --- a/build/fp0.vcxproj +++ b/build/fp0.vcxproj @@ -92,6 +92,7 @@ MachineX86 + false true diff --git a/build/fp1.vcxproj b/build/fp1.vcxproj index 283be2e26..474c948c3 100644 --- a/build/fp1.vcxproj +++ b/build/fp1.vcxproj @@ -92,6 +92,7 @@ MachineX86 + false true diff --git a/build/gfm.vcxproj b/build/gfm.vcxproj index 2d281319e..6e312ddfa 100644 --- a/build/gfm.vcxproj +++ b/build/gfm.vcxproj @@ -42,10 +42,10 @@ <_ProjectFileVersion>10.0.30319.1 ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ true ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false $(ProjectName) false diff --git a/build/lilib.vcxproj b/build/lilib.vcxproj index 6658c27be..12dee11c6 100644 --- a/build/lilib.vcxproj +++ b/build/lilib.vcxproj @@ -42,10 +42,10 @@ <_ProjectFileVersion>10.0.30319.1 ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false false false @@ -158,7 +158,6 @@ - diff --git a/build/pdflib_dll.vcxproj b/build/pdflib_dll.vcxproj index 4c656e159..e2e11d426 100644 --- a/build/pdflib_dll.vcxproj +++ b/build/pdflib_dll.vcxproj @@ -43,10 +43,10 @@ <_ProjectFileVersion>10.0.30319.1 ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ true ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ $(ProjectName) false false diff --git a/build/pdflibwrap.vcxproj b/build/pdflibwrap.vcxproj index b516580c1..84134f5da 100644 --- a/build/pdflibwrap.vcxproj +++ b/build/pdflibwrap.vcxproj @@ -40,9 +40,9 @@ <_ProjectFileVersion>10.0.30319.1 ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ $(ProjectName) $(ProjectName) diff --git a/build/vedoc.vcxproj b/build/vedoc.vcxproj index 162e98e58..6121d748e 100644 --- a/build/vedoc.vcxproj +++ b/build/vedoc.vcxproj @@ -42,9 +42,9 @@ <_ProjectFileVersion>10.0.30319.1 ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ $(ProjectName) $(ProjectName) AllRules.ruleset diff --git a/build/vedocext.vcxproj b/build/vedocext.vcxproj index d27d02848..dc229e2bb 100644 --- a/build/vedocext.vcxproj +++ b/build/vedocext.vcxproj @@ -43,9 +43,9 @@ <_ProjectFileVersion>10.0.30319.1 ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ $(ProjectName) $(ProjectName) diff --git a/build/xi.vcxproj b/build/xi.vcxproj index 8a8667a8b..921fc47eb 100644 --- a/build/xi.vcxproj +++ b/build/xi.vcxproj @@ -42,10 +42,10 @@ <_ProjectFileVersion>10.0.30319.1 ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ true ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false $(ProjectName) false diff --git a/build/xvaga.vcxproj b/build/xvaga.vcxproj index 5287f21c7..4acd78986 100644 --- a/build/xvaga.vcxproj +++ b/build/xvaga.vcxproj @@ -43,10 +43,10 @@ <_ProjectFileVersion>10.0.30319.1 ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ true $(ProjectName) false diff --git a/build/xvapp.vcxproj b/build/xvapp.vcxproj index 6ba9e33fe..9fbb6e666 100644 --- a/build/xvapp.vcxproj +++ b/build/xvapp.vcxproj @@ -42,9 +42,9 @@ <_ProjectFileVersion>10.0.30319.1 ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ ..\lib\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ $(ProjectName) $(ProjectName) diff --git a/build/xvtdb.vcxproj b/build/xvtdb.vcxproj index a8fa3f6b8..9c133349a 100644 --- a/build/xvtdb.vcxproj +++ b/build/xvtdb.vcxproj @@ -44,10 +44,10 @@ <_ProjectFileVersion>10.0.30319.1 ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ false ..\exe\ - ..\obj\$(SolutionName)\$(ProjectName)\ + ..\obj\common\$(ProjectName)\ true $(ProjectName) false diff --git a/cd/Setup.exe b/cd/Setup.exe index 07d92d59f62be1f21ca14b4731ba943e37940651..670d1ffd1c8b82e3c81fadb9d9c2f8219210501a 100644 GIT binary patch literal 1186816 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

K;8X9IKJJm+|BFp{e+ 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 delta 54936 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 HB&7ZyY_sKt diff --git a/src/ba/ba0100.cpp b/src/ba/ba0100.cpp index a068cb241..da5291b49 100755 --- a/src/ba/ba0100.cpp +++ b/src/ba/ba0100.cpp @@ -1512,6 +1512,18 @@ bool TMenu_application::dongle_update_needed() const bool TMenu_application::user_create() { + TFilename dir; + + if (xvt_sys_get_env("TEMP", dir.get_buffer(), dir.size())) + if (!dexist(dir)) + return error_box(FR("La cartella temporanea %s definita dalla variabile d'ambiente TEMP non esiste."), (const char *)dir); + if (xvt_sys_get_env("TMP", dir.get_buffer(), dir.size())) + if (!dexist(dir)) + return error_box(FR("La cartella temporanea %s definita dalla variabile d'ambiente TMP non esiste."), (const char *)dir); + dir.cut(0); + dir.tempdir(); + if (!dexist(dir)) + return error_box(FR("La cartella temporanea %s definita in campo.ini non esiste."), (const char *)dir); disable_menu_item(M_FILE_PRINT); // Questa voce di menu non serve per ora disable_menu_item(M_FILE_PREVIEW); // Figuriamoci questa @@ -1575,7 +1587,7 @@ bool TMenu_application::user_create() _menu.read(menu); update_preferred_tree(); } - + return true; } diff --git a/src/ba/ba1100.cpp b/src/ba/ba1100.cpp index 6c503a8a1..d336756b7 100755 --- a/src/ba/ba1100.cpp +++ b/src/ba/ba1100.cpp @@ -13,11 +13,9 @@ #include "ba1100.h" #include "ba1103.h" -#include #include -#include +#include #include -#include #include #include @@ -35,59 +33,6 @@ #define Dir_file "dir.gen" #define Trc_file "trc.gen" -class TManutenzione_app : public TSkeleton_application -{ - TDir_sheet* _browse; - TArray _dirs; - TArray _recs; - TMask* _mask; - long _firm; - long _level; - long _history_firm; - TRec_sheet* _rec; - TLog_report* _log; - bool _print_log; - - bool _superprassi; - -protected: - virtual void main_loop(); - virtual bool create () ; - virtual bool destroy(); - void insert_riga(long, TToken_string&); - void edit_riga(long, TToken_string&); - void edit_riga(const TString&); - void delete_riga(long); - virtual bool extended_firm() const { return true; } - - bool set_converting(); - bool reset_converting(); - - bool try_to_recover(TSystemisamfile& f, int err); - void update(); - void update_dir(); - void convert_dir(); - virtual void print(); - virtual void do_print(TPrinter & p, TRec_sheet & r); - const char* dumpfilename(const FileDes& dep) const; - void load_des(); - void open_history(); - void put_history(const char* firm); - void close_history(); - void dump_trc(const char * dir, const bool des_too, const long modules); - void repair_file(int i); - void save_file(const char * file); - - void open_log(); - void write_log(const char* line, const int severity = 0); - void close_log(); - - bool moveable_file(int file) const; -public: - - TManutenzione_app(); -}; - HIDDEN bool browse_file_handler(TMask_field& f, KEY k) { if (k == K_F9) @@ -318,12 +263,12 @@ void TManutenzione_app::print() bool TManutenzione_app::create() // initvar e arrmask { - _firm = get_firm(); - TString sw(argc()>2 ? argv(2) : ""); // Posso fare le operazione avanzate solo se sono ammistratore // e NON mi trovo su di una installazione di tipo client - _superprassi = user() == ::dongle().administrator() && !::dongle().demo(); + + xvt_vobj_show(TASK_WIN); + _superprassi = user() == ::dongle().administrator() && !::dongle().demo(); if (_superprassi) { const int type = ini_get_int(CONFIG_INSTALL, "Main", "Type"); @@ -361,7 +306,8 @@ bool TManutenzione_app::create() // initvar e arrmask else if (!::dongle().demo() && !set_firm()) return false; - load_des(); + _firm = atol(prefix().name()); + load_des(); _mask = new TMask("ba1100a"); _browse = new TDir_sheet(TR("Manutenzione file di sistema"), _superprassi); @@ -384,6 +330,24 @@ bool TManutenzione_app::destroy() return TApplication::destroy(); } +void TManutenzione_app::show_log() +{ + if (db_log()) + { + if (admin()) + { + TLog_mask m; + + m.run(); + } + else + message_box(TR("Il log delle transazioni è visualizzabile dall'amministratore")); + } + else + message_box(TR("Il log delle transazioni è disattivato")); +} + + void TManutenzione_app::open_log() { _print_log = false; diff --git a/src/ba/ba1100.h b/src/ba/ba1100.h index ff79ff996..443cc783a 100755 --- a/src/ba/ba1100.h +++ b/src/ba/ba1100.h @@ -1,6 +1,10 @@ #ifndef __BA1100_H #define __BA1100_H +#ifndef __APPLICAT_H +#include +#endif + #ifndef __CONFIG_H #include #endif @@ -17,6 +21,14 @@ class TMask_field; #endif +#ifndef __PRINTER_H +#include +#endif + +#ifndef __REPUTILS_H +#include +#endif + #include "ba1100a.h" /////////////////////////////////////////////////////////// @@ -92,4 +104,62 @@ public: virtual ~TEdit_file() {} }; +class TManutenzione_app : public TSkeleton_application +{ + TDir_sheet* _browse; + TArray _dirs; + TArray _recs; + TMask* _mask; + long _firm; + long _level; + long _history_firm; + TRec_sheet* _rec; + TLog_report* _log; + bool _print_log; + + bool _superprassi; + +protected: + virtual void main_loop(); + virtual bool create(); + virtual bool destroy(); + void insert_riga(long, TToken_string&); + void edit_riga(long, TToken_string&); + void edit_riga(const TString&); + void delete_riga(long); + virtual bool extended_firm() const { return true; } + + bool set_converting(); + bool reset_converting(); + + bool try_to_recover(TSystemisamfile& f, int err); + void update(); + void update_dir(); + void convert_dir(); + virtual void print(); + virtual void do_print(TPrinter & p, TRec_sheet & r); + const char* dumpfilename(const FileDes& dep) const; + void load_des(); + void open_history(); + void put_history(const char* firm); + void close_history(); + void dump_trc(const char * dir, const bool des_too, const long modules); + void repair_file(int i); + void save_file(const char * file); + + virtual void show_log(); + + void open_log(); + void write_log(const char* line, const int severity = 0); + void close_log(); + + bool moveable_file(int file) const; +public: + long get_firm() const { return _firm; } + + TManutenzione_app(); +}; + +inline TManutenzione_app & app() { return (TManutenzione_app &)main_app(); } + #endif diff --git a/src/ba/ba1101.cpp b/src/ba/ba1101.cpp index f413898ce..82863f895 100755 --- a/src/ba/ba1101.cpp +++ b/src/ba/ba1101.cpp @@ -275,9 +275,17 @@ void TRec_sheet::edit() } f2.set_notify(key_notify); f2.set_append(FALSE); + int nkeys = _rec.keys(); - for (i = 0; i < nkeys; i++) f2.row(i) = _rec.keydef(i); + + for (i = 0; i < nkeys; i++) + f2.row(i) = _rec.keydef(i); f2.disable_cell(0, 1); + + const bool enable_save = (_dir.is_com() && app().get_firm() == 0) || + (_dir.is_firm() && app().get_firm() > 0); + + _mask->enable(DLG_SAVEREC, enable_save); while (true) { f1.force_update(0); // Non togliere, serve per fare l'update della descrizione quando si fa l'import!! diff --git a/src/ba/ba2900.cpp b/src/ba/ba2900.cpp index faffa4b7b..ab54b52bc 100644 --- a/src/ba/ba2900.cpp +++ b/src/ba/ba2900.cpp @@ -136,7 +136,7 @@ protected: bool dir_gen() const; bool trc_gen() const; bool export_manager(const TString generalErrors) const; - bool show_log(); + bool show_export_log(); void log(int severity, const char* msg); public: @@ -980,7 +980,7 @@ bool TMSSQLExport_app::export_manager(TString generalErrors) const return true; } -bool TMSSQLExport_app::show_log() +bool TMSSQLExport_app::show_export_log() { if (_log) { @@ -1089,7 +1089,7 @@ void TMSSQLExport_app::main_loop() } message_box("Migrazione effettuata correttamente!"); } while (loop); - show_log(); + show_export_log(); } else message_box("Fallita connessione"); diff --git a/src/ba/ba7100.cpp b/src/ba/ba7100.cpp index a166a511e..ffd601aa6 100755 --- a/src/ba/ba7100.cpp +++ b/src/ba/ba7100.cpp @@ -1742,6 +1742,7 @@ class TMailer : public TSkeleton_application bool _start_full_screen; protected: + virtual bool task_win_iconized() const { return !_start_full_screen && xvt_win_is_taskbar_visible(); } virtual bool create(); virtual void main_loop(); }; @@ -1767,7 +1768,7 @@ void TMailer::main_loop() WINDOW tray = xvt_trayicon_create(TASK_WIN, 9013, appname); // CampoServer.ico open_files(LF_USER, 0); - if (!_start_full_screen && xvt_win_is_taskbar_visible()) +/* if (!_start_full_screen && xvt_win_is_taskbar_visible()) { if (tray != NULL_WIN) { @@ -1778,7 +1779,7 @@ void TMailer::main_loop() if (xvt_rect_get_width(&rct_postman) >= xvt_rect_get_width(&rct_screen) - 64) xvt_vobj_set_visible(TASK_WIN, FALSE); } - } + } */ TMailer_mask mm; diff --git a/src/ba/batbiva.uml b/src/ba/batbiva.uml index ddaacf0b2..1b74f4c28 100755 --- a/src/ba/batbiva.uml +++ b/src/ba/batbiva.uml @@ -46,7 +46,7 @@ BEGIN WARNING "Manca la descrizione" END -LIST LST_TABIVA_S1 2 20 +LIST LST_TABIVA_S1 2 28 BEGIN PROMPT 2 2 "Tipo " FIELD S1 @@ -70,11 +70,15 @@ BEGIN MESSAGE CLEAR,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0 MESSAGE ENABLE,FLD_TABIVA_I3|ENABLE,FLD_TABIVA_I4|SHOW,CHK_TABIVA_B5 MESSAGE ENABLE,FLD_TABIVA_S6 -END + ITEM "RC|Reverse Charge (vendite)" + MESSAGE CLEAR,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0 + MESSAGE CLEAR,FLD_TABIVA_I3|CLEAR,FLD_TABIVA_I4|HIDE,CHK_TABIVA_B5 + MESSAGE ENABLE,FLD_TABIVA_S6 + END STRING FLD_TABIVA_S6 4 BEGIN - PROMPT 39 2 "C.IVA a cui ventilare " + PROMPT 44 2 "C.IVA a cui ventilare " FLAGS "U" FIELD S6 COPY USE FLD_TABIVA_CODTAB @@ -146,7 +150,7 @@ END BOOLEAN CHK_TABIVA_B5 BEGIN - PROMPT 30 5 "Escluso dal calcolo dei bolli sufatture esenti" + PROMPT 30 5 "Escluso dal calcolo dei bolli su fatture esenti" FIELD B5 END @@ -188,6 +192,8 @@ BEGIN INPUT FLD_TABIVA_I3 OUTPUT FLD_TABIVA_I3 ITEM " |Nessuno" + ITEM "14|Passaggi interni" + ITEM "16|Cessioni beni ammortizzabili" ITEM "20|Operazioni non imponibili (comma 1, artt.8, 8bis e 9)" ITEM "21|Operazioni non imponibili a seguito di dich. d'intento" ITEM "22|Altre operazioni non imponibili" @@ -201,6 +207,7 @@ BEGIN ITEM "36|Cessione di microprocessori" ITEM "37|Prestazioni comparto edile e settori connessi" ITEM "38|Operazioni settore energetico" + ITEM "39|Reverse charge altri casi" ITEM "B1|Ammontare op. es. escluse da nr. 1 a 9 e 11 art. 10" ITEM "B2|Ammontare op. es. di cui al nr. 11 art. 10" ITEM "B3|Ammontare op. es. di cui ai nr. 1 a 9 art. 10" diff --git a/src/ca/ca2100.cpp b/src/ca/ca2100.cpp index feb491c68..9ccc1082e 100755 --- a/src/ca/ca2100.cpp +++ b/src/ca/ca2100.cpp @@ -1025,7 +1025,7 @@ bool TMovanal_msk::row2imp(int r, TImporto& imp) const return !imp.is_zero(); } -const TToken_string& TMovanal_msk::rec2key(const TRectype& rec) const +const TToken_string& TMovanal_msk::rec2key(const TRectype& rec) const //qui { TToken_string& key = get_tmp_string(); key = get(F_TIPO); @@ -1127,7 +1127,6 @@ void TMovanal_msk::aggiorna_saldo_riga(int r) sld += TImporto('D', dare); } } - sld.normalize(); set(F_DARE, sld.sezione() == 'D' ? sld.valore() : ZERO); set(F_AVERE, sld.sezione() == 'A' ? sld.valore() : ZERO); diff --git a/src/ca/ca2300.cpp b/src/ca/ca2300.cpp index 027f480e4..58a8e3c89 100755 --- a/src/ca/ca2300.cpp +++ b/src/ca/ca2300.cpp @@ -50,11 +50,8 @@ bool TRic_saldi_msk::on_field_event(TOperable_field& o, TField_event e, long jol const long recset_items = recset.items(); TProgind pi(recset_items, "Ricerca movimenti che interessano l'esercizio selezionato...", true, true); - for (bool ok = recset.move_first(); ok; ok = recset.move_next()) + for (bool ok = recset.move_first(); pi.addstatus(1) && ok; ok = recset.move_next()) { - if (!pi.addstatus(1)) - break; - const TDate curr_date = recset.get(MOVANA_DATACOMP).as_date(); const TDate fcomp_date = recset.get(MOVANA_DATAFCOMP).as_date(); diff --git a/src/ca/ca3200.cpp b/src/ca/ca3200.cpp index 9aa08aa24..bbf85f9c5 100755 --- a/src/ca/ca3200.cpp +++ b/src/ca/ca3200.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include "../cg/cglib.h" @@ -24,89 +25,16 @@ class TPrint_mastrini_ca_mask : public TAnal_report_mask { protected: bool on_field_event(TOperable_field& o, TField_event e, long jolly); - const TString& get_report_class() const; - bool test_compatible_report(); public: TPrint_mastrini_ca_mask(); virtual ~TPrint_mastrini_ca_mask() {} }; -const TString& TPrint_mastrini_ca_mask::get_report_class() const -{ - TString& classe = get_tmp_string(); - classe = "ca3200a"; -// const int stp = get_int(F_TIPOCONTI); -// classe << (stp == 1 ? 'a' : 'b'); // tipo di report da usare in caso di report multipli - return classe; -} - -bool TPrint_mastrini_ca_mask::test_compatible_report() -{ - TFilename lib = get_report_class(); - const TString& name = get(F_REPORT); - bool ok = name.not_empty(); - if (ok) - { - TReport rep; - ok = rep.load(name); - if (ok) - { - const TString& classe = rep.get_class(); - ok = classe == lib; - } - } - if (!ok) - { - set(F_REPORT, lib); - lib.ext("rep"); - ok = lib.custom_path(); - } - return ok; -} - bool TPrint_mastrini_ca_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { - case DLG_PRINT: - if (e == fe_button) - { - main_app().print(); - return false; - } - break; - case DLG_PREVIEW: - if (e == fe_button) - { - main_app().preview(); - return false; - } - break; - case F_TIPOCONTI: - if (e == fe_init || e == fe_modify) - { - test_compatible_report(); //in base al tipo di conti da stampare setta i report compatibili (solo nel caso di rep multipli) - } - break; - case F_REPORT: - if (e == fe_button) - { - const TString8 lib = get_report_class(); - TFilename path = o.get(); - if (select_custom_file(path, "rep", lib)) - { - path = path.name(); - path.ext(""); - o.set(path); - } - } else - if (e == fe_close) - { - if (!test_compatible_report()) - return error_box(TR("Impossibile trovare un report compatibile")); - } - break; case F_ANNO: if (e == fe_modify && !o.empty()) { @@ -180,7 +108,7 @@ protected: int _tipimov; TDate _dadata, _adata; long _danumreg, _anumreg; - TString _daconto, _aconto, _codcosto, _codcms, _codfas; + TString _daconto, _aconto, _codcosto, _codcms, _codfas, _contsep; protected: //da libreria virtual const TVariant& get(const char* column_name) const; @@ -288,7 +216,8 @@ void TPrint_mastrini_ca_recordset::set_custom_filter(TCursor& cur) const const TImporto& TPrint_mastrini_ca_recordset::saldo_iniziale(const char* conto) const { TAnal_bill bill(conto, _codcosto, _codcms, _codfas); - const TSaldanal& saldo = ca_saldo(bill, _dadata, _adata, _tipimov); + const TSaldanal& saldo = ca_saldo(bill, "", _dadata, _adata, _tipimov); // qui + return saldo._ini; } @@ -394,7 +323,8 @@ TPrint_mastrini_ca_alternative_recordset::TPrint_mastrini_ca_alternative_records const TImporto& TPrint_mastrini_ca_alternative_recordset::saldo_finale(const char* conto) const { TAnal_bill bill(conto, _codcosto, _codcms, _codfas); - const TSaldanal& saldo = ca_saldo(bill, _dadata, _adata, _tipimov); + const TSaldanal& saldo = ca_saldo(bill, "", _dadata, _adata, _tipimov); // qui + return saldo._fin; } @@ -470,7 +400,7 @@ void TPrint_mastrini_ca_alternative_recordset::set_filter(const TPrint_mastrini_ { TPconana_recordset pconana; - pconana.set_filter(' ', _daconto, _aconto, _codcosto, _codcms, _codfas, + pconana.set_filter(' ', _daconto, _aconto, _codcosto, _codcms, _codfas, _contsep, _dadata, _adata, _tipimov, _tipoconti==1, _tipoconti==2); const long pconana_items = pconana.items(); @@ -485,20 +415,26 @@ void TPrint_mastrini_ca_alternative_recordset::set_filter(const TPrint_mastrini_ a_rmovana.put(RMOVANA_DATACOMP, _adata); TString filtro; - if (_codcosto.not_empty()) + if (_codcosto.full()) filtro << "(" << RMOVANA_CODCCOSTO << "?=\"" << _codcosto << "*\")"; - if (_codcms.not_empty()) + if (_codcms.full()) { - if (filtro.not_empty()) + if (filtro.full()) filtro << "&&"; filtro << "(" << RMOVANA_CODCMS << "?=\"" << _codcms << "*\")"; } - if (_codfas.not_empty()) + if (_codfas.full()) { - if (filtro.not_empty()) + if (filtro.full()) filtro << "&&"; filtro << "(" << RMOVANA_CODFASE << "?=\"" << _codfas << "*\")"; } + if (_contsep.full()) + { + if (filtro.full()) + filtro << "&&"; + filtro << "(" << MOVANA_CONTSEP << "?=\"" << _contsep << "*\")"; + } //scandisce il piano dei conti.. for (bool pok = pconana.move_first(); pok; pok = pconana.move_next()) @@ -594,142 +530,137 @@ void TPrint_mastrini_ca_rep::set_filter(const TPrint_mastrini_ca_mask& msk, int //////////////////////////////////////////////////////// // APPLICAZIONE //////////////////////////////////////////////////////// -class TPrint_mastrini_ca : public TSkeleton_application +class TPrint_mastrini_ca : public TReport_application { TPrint_mastrini_ca_mask* _mask; + TPrint_mastrini_ca_rep * _rep; protected: virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM + virtual TReport & get_report(const TAutomask & m); + //virtual TTrec * get_dbase_recdesc(TReport & rep); + virtual TAutomask & get_mask(); + virtual void execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type = _export_printer); + virtual short output_id() const { return 0; } + virtual const char * output_name(const TReport & rep) const { return "listamov"; } + // @cmember Distruzione dei dati dell'utente + virtual bool user_destroy() { return true; } - void print_or_preview(const bool stampa); - virtual void print(); - virtual void preview(); - - virtual void main_loop(); +public: + TPrint_mastrini_ca() : _mask(nullptr), _rep(nullptr) {} + ~TPrint_mastrini_ca() {} }; -void TPrint_mastrini_ca::print() +TReport & TPrint_mastrini_ca::get_report(const TAutomask & m) { - print_or_preview(true); -} + if (_rep == nullptr) + _rep = new TPrint_mastrini_ca_rep; -void TPrint_mastrini_ca::preview() -{ - print_or_preview(false); -} + TString path = _mask->get(DLG_REPORT); -void TPrint_mastrini_ca::print_or_preview(const bool stampa) -{ - //report e book dei report - TReport_book book; - TString path = _mask->get(F_REPORT); if (path.empty()) - path = "ca3200a"; - TPrint_mastrini_ca_rep rep; - rep.load(path); + path = ((TPrint_mastrini_ca_mask *)_mask)->get_report_class(); + _rep->load(_mask->get(DLG_REPORT)); + return *_rep; +} +TAutomask & TPrint_mastrini_ca::get_mask() +{ + if (_mask == nullptr) + _mask = new TPrint_mastrini_ca_mask; + return *_mask; +} + + + +void TPrint_mastrini_ca::execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type) +{ TSheet_field& sheet = _mask->sfield(F_RIGHE); - TString video_string; //stringa che compare nella progind + TString msg; //stringa che compare nella progind + if (sheet.empty()) //se non ci sono righe sullo sheet (selezione su tutte le cms/cdc)... { if (_mask->get_bool(F_PERCONTO)) { - rep.set_filter(*_mask, -1); //fa la set filter sulla prima riga (che è quella usata) + ((TPrint_mastrini_ca_rep &)rep).set_filter((TPrint_mastrini_ca_mask &)mask, -1); book.add(rep); } else { - TToken_string& row = sheet.row(-1); //crea la prima riga dello sheet + TToken_string& row = sheet.row(-1); //crea la prima riga dello sheet - //stabilisce quale è il primo livello (tra CDC e CMS).. - const TMultilevel_code_info& liv1 = *ca_multilevel_code_info_by_index(0); - const int logic1 = liv1.logic(); + //stabilisce quale è il primo livello (tra CDC e CMS).. + const TMultilevel_code_info& liv1 = *ca_multilevel_code_info_by_index(0); + const int logic1 = liv1.logic(); - TAssoc_array codici_buoni; - TString query; - query << "USE RMOVANA KEY 2\n"; - query << "FROM CODCONTO=#DACONTO\n"; - query << "TO CODCONTO=#ACONTO"; - TISAM_recordset rmovana(query); - TString80 daconto, aconto; - for (int i = 0; _mask->id2pos(F_CDC1_INI+i) > 0; i++) - { - daconto << _mask->get(F_CDC1_INI+i); - aconto << _mask->get(F_CDC1_FIN+i); - } - rmovana.set_var("#DACONTO", daconto); - rmovana.set_var("#ACONTO", aconto); - const long items = rmovana.items(); - if (items > 0) - { - TProgind po(items, "Analisi righe movimento analitiche...", true, true); + TAssoc_array codici_buoni; + TString query; + query << "USE RMOVANA KEY 2\n"; + query << "FROM CODCONTO=#DACONTO\n"; + query << "TO CODCONTO=#ACONTO"; + TISAM_recordset rmovana(query); + TString80 daconto, aconto; + for (int i = 0; _mask->id2pos(F_CDC1_INI+i) > 0; i++) + { + daconto << _mask->get(F_CDC1_INI+i); + aconto << _mask->get(F_CDC1_FIN+i); + } + rmovana.set_var("#DACONTO", daconto); + rmovana.set_var("#ACONTO", aconto); + const long items = rmovana.items(); + if (items > 0) + { + TProgind po(items, "Analisi righe movimento analitiche...", true, true); - for (bool ok = rmovana.move_first(); ok; ok = rmovana.move_next()) - { - if (!po.addstatus(1)) - break; + for (bool ok = rmovana.move_first(); ok; ok = rmovana.move_next()) + { + if (!po.addstatus(1)) + break; - const TString& codice = rmovana.get(logic1 == LF_COMMESSE ? RMOVANA_CODCMS : RMOVANA_CODCCOSTO).as_string(); - codici_buoni.add(codice); - } - } + const TString& codice = rmovana.get(logic1 == LF_COMMESSE ? RMOVANA_CODCMS : RMOVANA_CODCCOSTO).as_string(); + codici_buoni.add(codice); + } + } - TISAM_recordset set(logic1 == LF_CDC ? "USE CDC" : "USE COMMESSE"); //..e di conseguenza scrive la use giusta + TISAM_recordset set(logic1 == LF_CDC ? "USE CDC" : "USE COMMESSE"); //..e di conseguenza scrive la use giusta - bool skip_closed = false; - if (logic1 == LF_COMMESSE) - skip_closed = !yesno_box(TR("E' stata richiesta la stampa di tutte le commesse:\n" - "Si desidera includere anche le commesse chiuse?")); + bool skip_closed = false; + if (logic1 == LF_COMMESSE) + skip_closed = !yesno_box(TR("E' stata richiesta la stampa di tutte le commesse:\n" + "Si desidera includere anche le commesse chiuse?")); - TProgind pi(set.items(), video_string, true, true); - for (bool sok = set.move_first(); sok; sok = set.move_next()) //fighissimo metodo per scandire un file in 1 riga! - { - if (!pi.addstatus(1)) - break; + TProgress_monitor pi(set.items(), msg, true); + for (bool sok = set.move_first(); pi.add_status() && sok; sok = set.move_next()) //fighissimo metodo per scandire un file in 1 riga! + { + if (skip_closed && set.get(COMMESSE_CHIUSA).as_bool()) + continue; - if (skip_closed && set.get(COMMESSE_CHIUSA).as_bool()) - continue; - - row = set.get(0u).as_string(); //prende il valore del primo campo del file (CDC o CMS code) - if (!codici_buoni.is_key(row)) - continue; + row = set.get_string(0u); //prende il valore del primo campo del file (CDC o CMS code) + if (!codici_buoni.is_key(row)) + continue; - //completa la stringa da visualizzare sulla progind - video_string.cut(0) << row << '\n' << set.get(1u); - pi.set_text(video_string); + //completa la stringa da visualizzare sulla progind + msg = row; + msg << '\n' << set.get(1u); + pi.set_text(msg); - for (int l = liv1.levels()-2; l >= 0; l--) //se la struttura è a più livelli costruisce la tokenstring - row.insert("|", liv1.total_len(l)); + for (int l = liv1.levels()-2; l >= 0; l--) //se la struttura è a più livelli costruisce la tokenstring + row.insert("|", liv1.total_len(l)); - rep.set_filter(*_mask, 0); //fa la set filter sulla prima riga (che è quella usata) - book.add(rep); - } - sheet.destroy(); //cancella le commesse aggiunte in automatico sullo sheet + ((TPrint_mastrini_ca_rep &)rep).set_filter((TPrint_mastrini_ca_mask &)mask, 0); //fa la set filter sulla prima riga (che è quella usata) + book.add(rep); + } + sheet.destroy(); //cancella le commesse aggiunte in automatico sullo sheet } } else { FOR_EACH_SHEET_ROW(sheet, r, row) { - rep.set_filter(*_mask, r); + ((TPrint_mastrini_ca_rep &)rep).set_filter((TPrint_mastrini_ca_mask &) mask, r); book.add(rep); } } - - if (stampa) - book.print(); //stampa il book dei report - else - book.preview(); //anteprima - -} - - -void TPrint_mastrini_ca::main_loop() -{ - _mask = new TPrint_mastrini_ca_mask; - _mask->run(); - delete _mask; - _mask = NULL; } int ca3200(int argc, char* argv[]) diff --git a/src/ca/ca3300.cpp b/src/ca/ca3300.cpp index 352367ed0..a20ac945d 100755 --- a/src/ca/ca3300.cpp +++ b/src/ca/ca3300.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -26,53 +27,26 @@ class TPrint_bilancio_ca_mask : public TAnal_report_mask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); - const TString& get_report_class() const; - bool test_compatible_report(); bool esistono_riclassificazioni() const; public: - TPrint_bilancio_ca_mask(); + const TString& get_report_class() const; + + TPrint_bilancio_ca_mask(); virtual ~TPrint_bilancio_ca_mask() {} }; const TString& TPrint_bilancio_ca_mask::get_report_class() const { - TString& lib = get_tmp_string(); - lib = "ca3300"; + TString& classe = get_tmp_string(); - const char bil = get(F_BILANCIO)[0]; // Verifica o sezioni Contrapposte - const char stp = get(F_TIPOSTAMPA)[0]; // Raffronto o No? - - if (bil == 'V') - lib << (stp == 'R' ? 'a' : 'b'); // Verifica + classe = TAnal_report_mask::get_report_class(); + classe.cut(5); + if (get(F_BILANCIO) == "V") // Verifica o sezioni Contrapposte + classe << (get(F_TIPOSTAMPA) == "R" ? 'a' : 'b'); // Verifica - Raffronto o No else - lib << (stp == 'R' ? 'c' : 'd'); // Sezioni contrapposte - return lib; -} - -bool TPrint_bilancio_ca_mask::test_compatible_report() -{ - const TString& cls = get_report_class(); - const TString& name = get(F_REPORT); - bool ok = name.full(); - if (ok && name != cls) - { - TReport rep; - ok = rep.load(name); - if (ok) - { - const TString& classe = rep.get_class(); - ok = classe == cls; - } - } - if (!ok) - { - set(F_REPORT, cls); - TFilename path = cls; - path.ext("rep"); - ok = path.custom_path(); - } - return ok; + classe << (get(F_TIPOSTAMPA) == "R" ? 'c' : 'd'); // Sezioni contrapposte - Raffronto o No + return classe; } bool TPrint_bilancio_ca_mask::esistono_riclassificazioni() const @@ -85,28 +59,13 @@ bool TPrint_bilancio_ca_mask::on_field_event(TOperable_field& o, TField_event e, { switch (o.dlg()) { - case DLG_PRINT: - if (e == fe_button) - { - main_app().print(); - return false; - } - break; - case DLG_PREVIEW: - if (e == fe_button) - { - main_app().preview(); - return false; - } - break; - case F_ANNO: case F_BILANCIO: case F_STAMPA: case F_TIPOSTAMPA: if (e == fe_modify || (e == fe_init && o.dlg() == F_ANNO)) { - test_compatible_report(); + set_report_class(); bool enable_from = false, enable_to = false; if (get_int(F_STAMPA) == 1) // Stampa per data limite @@ -153,24 +112,6 @@ bool TPrint_bilancio_ca_mask::on_field_event(TOperable_field& o, TField_event e, } } break; - case F_REPORT: - if (e == fe_button) - { - const TString8 lib = get_report_class(); - TFilename path = o.get(); - if (select_custom_file(path, "rep", lib)) - { - path = path.name(); - path.ext(""); - o.set(path); - } - } else - if (e == fe_close) - { - if (!test_compatible_report()) - return error_box("Impossibile trovare un report compatibile"); - } - break; case F_PRE1: case F_PRE2: case F_PRE3: @@ -291,7 +232,7 @@ protected: public: void set_filter(const TMask& msk, int row); - TReport_bilancio_verifica(const char* name); + TReport_bilancio_verifica() { } }; bool TReport_bilancio_verifica::set_recordset(const TString& /* sql */) @@ -372,14 +313,10 @@ void TReport_bilancio_verifica::set_filter(const TMask& m, int row) commessa = rel.curr().get(RMOVANA_CODCMS); fase = rel.curr().get(RMOVANA_CODFASE); + const TString & contsep = m.get(F_CONTSEP); TPconana_recordset* rset = (TPconana_recordset*)recordset(); if (rset != NULL) - rset->set_filter(tc, da_conto, a_conto, costo, commessa, fase, dal, al, tipimov, movimentati, nonnulli); -} - -TReport_bilancio_verifica::TReport_bilancio_verifica(const char* name) -{ - load(name); + rset->set_filter(tc, da_conto, a_conto, costo, commessa, fase, contsep, dal, al, tipimov, movimentati, nonnulli); } //////////////////////////////////////////////////////// @@ -418,7 +355,7 @@ class TRecordset_sezioni_contrapposte : public TRecordset TDate _da_data, _a_data; word _tipimov; bool _movimentati, _nonnulli; - TString _daconto, _aconto; + TString _daconto, _aconto, _contsep; TString4 _tipostampa; bool _print_ap; @@ -449,7 +386,7 @@ public: virtual const TVariant& get(unsigned int column) const { return NULL_VARIANT; } virtual const TVariant& get(const char* field) const; - void set_filter(char piano, const char* costo, const char* commessa, const char* fase, + void set_filter(char piano, const char* costo, const char* commessa, const char* fase, const char * contsep, const TDate& dal, const TDate& al, word tipimov, bool movimentati, bool nonnulli, bool print_ap, const TString& daconto, const TString& aconto); char tipo_piano() const { return _tipo_piano; } @@ -473,7 +410,7 @@ bool TRecordset_sezioni_contrapposte::move_to(TRecnotype pos) return _pos < items(); } -void TRecordset_sezioni_contrapposte::set_filter(char piano, const char* costo, const char* commessa, const char* fase, +void TRecordset_sezioni_contrapposte::set_filter(char piano, const char* costo, const char* commessa, const char* fase, const char * contsep, const TDate& dal, const TDate& al, word tipimov, bool movimentati, bool nonnulli, bool print_ap, const TString& daconto, const TString& aconto) { @@ -505,6 +442,7 @@ void TRecordset_sezioni_contrapposte::set_filter(char piano, const char* costo, _daconto = daconto; _aconto = aconto; + _contsep = contsep; } TArray& TRecordset_sezioni_contrapposte::conti(int indbil) @@ -536,7 +474,7 @@ void TRecordset_sezioni_contrapposte::add_conto(const TString& b, a.insert(sc, n); } -void TRecordset_sezioni_contrapposte::add_conto(int indbil, const TString& b) +void TRecordset_sezioni_contrapposte::add_conto(int indbil, const TString& b) // qui { if (indbil >= 1 && indbil <= 4) { @@ -646,8 +584,8 @@ void TRecordset_sezioni_contrapposte::add_conto(int indbil, const TString& b) bill.set_fase(c.blank() ? "~" : c); - const TSaldanal& wsp = ca_saldo(bill, _da_data, _a_data, _saldanal_preventivi); - const TSaldanal& wsc = ca_saldo(bill, _da_data, _a_data, _saldanal_consuntivo); + const TSaldanal& wsp = ca_saldo(bill, "", _da_data, _a_data, _saldanal_preventivi); // qui + const TSaldanal& wsc = ca_saldo(bill, "", _da_data, _a_data, _saldanal_consuntivo); sp += wsp; sc += wsc; @@ -675,7 +613,7 @@ void TRecordset_sezioni_contrapposte::add_conto(int indbil, const TString& b) c = code.get(); bill.set_fase(c.blank() ? "~" : c); - const TSaldanal& wsa = ca_saldo(bill, _da_data, _a_data, _tipimov); + const TSaldanal& wsa = ca_saldo(bill, "", _da_data, _a_data, _tipimov); // qui sa += wsa; } @@ -691,8 +629,8 @@ void TRecordset_sezioni_contrapposte::add_conto(int indbil, const TString& b) { if ((_tipimov & _saldanal_qualsiasi) == _saldanal_qualsiasi) // Bilancio a sezioni contrapposte di raffronto { - const TSaldanal sp = ca_saldo(bill, _da_data, _a_data, _saldanal_preventivi); - const TSaldanal sc = ca_saldo(bill, _da_data, _a_data, _saldanal_consuntivo); + const TSaldanal sp = ca_saldo(bill, "", _da_data, _a_data, _saldanal_preventivi);// qui + const TSaldanal sc = ca_saldo(bill, "", _da_data, _a_data, _saldanal_consuntivo); if (!sp._fin.is_zero() || !sc._fin.is_zero()) { @@ -704,7 +642,7 @@ void TRecordset_sezioni_contrapposte::add_conto(int indbil, const TString& b) } else { - const TSaldanal sa = ca_saldo(bill, _da_data, _a_data, _tipimov); + const TSaldanal sa = ca_saldo(bill, "", _da_data, _a_data, _tipimov); // qui if (!sa._fin.is_zero()) { @@ -771,6 +709,9 @@ void TRecordset_sezioni_contrapposte::requery() { // Crea recordset del piano dei conti appropriato TString query = "USE PCON"; + + if (_contsep.full()) + query << " SELECT (" << MOVANA_CONTSEP << "==" << _contsep << ")"; if (_tipo_piano == 'A') { query << "ANA"; @@ -979,6 +920,8 @@ const TVariant& TRecordset_sezioni_contrapposte::get(const char* field) const return get_tmp_var() = _filter.commessa(); if (fld == "#FASE") return get_tmp_var() = _filter.fase(); + if (fld == "#CONTSEP") + return get_tmp_var() = _contsep; if (fld == "#DATA_INIZIALE") return get_tmp_var() = _da_data; if (fld == "#DATA_FINALE") @@ -1035,7 +978,7 @@ protected: public: void set_filter(const TMask& msk, int row); - TReport_bilancio_sezioni_contrapposte(const char* name) { load(name); } + TReport_bilancio_sezioni_contrapposte() { } }; bool TReport_bilancio_sezioni_contrapposte::set_recordset(const TString& /* sql */) @@ -1109,7 +1052,9 @@ void TReport_bilancio_sezioni_contrapposte::set_filter(const TMask& m, int row) } TRecordset_sezioni_contrapposte* recset = new TRecordset_sezioni_contrapposte(tipo); - recset->set_filter(tipo, costo, commessa, fase, dal, al, tipimov, movimentati, nonnulli, print_ap, daconto, aconto); + const TString & contsep = m.get(F_CONTSEP); + + recset->set_filter(tipo, costo, commessa, fase, contsep, dal, al, tipimov, movimentati, nonnulli, print_ap, daconto, aconto); TAnal_report::set_recordset(recset); }; @@ -1117,9 +1062,10 @@ void TReport_bilancio_sezioni_contrapposte::set_filter(const TMask& m, int row) // APPLICAZIONE //////////////////////////////////////////////////////// -class TPrint_bilancio_ca : public TSkeleton_application +class TPrint_bilancio_ca : public TReport_application { - TPrint_bilancio_ca_mask* _mask; + TPrint_bilancio_ca_mask * _mask; + TArray _reps; protected: virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM @@ -1127,70 +1073,75 @@ protected: bool commessa_buona(const TRectype& cms, const TDate& dadata, const TDate& adata) const; bool buon_cdc(const TRectype& cdc, const TDate& dadata, const TDate& adata) const; void fill_sheet(int livello); - void bilancio_a_sezioni_contrapposte(const bool stampa); - void bilancio_di_verifica(const bool stampa); + void bilancio_a_sezioni_contrapposte(TReport & rep); + void bilancio_di_verifica(TReport & rep); + // @cmember ritorna la maschera + virtual TAutomask & get_mask(); + // @cmember Ritorna il report + virtual TReport & get_report(const TAutomask & m); + virtual void execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type = _export_printer); + virtual bool user_destroy(); - void print_or_preview(const bool stampa); - virtual void print(); - virtual void preview(); - - virtual void main_loop(); +public: + TPrint_bilancio_ca() : _mask(nullptr) {} + ~TPrint_bilancio_ca() {} }; -void TPrint_bilancio_ca::bilancio_a_sezioni_contrapposte(const bool stampa) +TReport & TPrint_bilancio_ca::get_report(const TAutomask & m) { - TReport_bilancio_sezioni_contrapposte rep(_mask->get(F_REPORT)); + TReport * r = nullptr; + if (m.get(F_BILANCIO) == "C") + { + if (_reps.objptr(0) == nullptr) + _reps.add(new TReport_bilancio_sezioni_contrapposte, 0); + r = (TReport_bilancio_sezioni_contrapposte *) _reps.objptr(0); + } + else + { + if (_reps.objptr(1) == nullptr) + _reps.add(new TReport_bilancio_verifica, 0); + r = (TReport_bilancio_verifica *)_reps.objptr(1); + } + TString path = _mask->get(DLG_REPORT); + + if (path.empty()) + path = ((TPrint_bilancio_ca_mask *)_mask)->get_report_class(); + r->load(path); + return *r; +} + +TAutomask & TPrint_bilancio_ca::get_mask() +{ + if (_mask == nullptr) + _mask = new TPrint_bilancio_ca_mask; + return *_mask; +} + +void TPrint_bilancio_ca::bilancio_a_sezioni_contrapposte(TReport & rep) +{ const int rows = _mask->sfield(F_RIGHE).items(); - TProgind* pi = rows > 1 ? new TProgind(rows, TR("Bilancio a sezioni contrapposte")) : NULL; - + TProgress_monitor pi(rows, TR("Bilancio a sezioni contrapposte")); TReport_book book; - for (int i = 0; i < rows; i++) + + for (int i = 0; pi.add_status() && i < rows; i++) { - if (pi && !pi->addstatus(1)) - break; - rep.set_filter(*_mask, i); + ((TReport_bilancio_sezioni_contrapposte &)rep).set_filter(*_mask, i); book.add(rep); } - if (pi) delete pi; - - if (stampa) - book.print(); //stampa il book dei report - else - book.preview(); //anteprima } -void TPrint_bilancio_ca::bilancio_di_verifica(const bool stampa) +void TPrint_bilancio_ca::bilancio_di_verifica(TReport & rep) { - TReport_bilancio_verifica rep(_mask->get(F_REPORT)); - const int rows = _mask->sfield(F_RIGHE).items(); - TProgind* pi = rows > 1 ? new TProgind(rows, TR("Bilancio di verifica")) : NULL; - + TProgress_monitor pi(rows, TR("Bilancio di verifica")); TReport_book book; - for (int i = 0; i < rows; i++) + + for (int i = 0; pi.add_status() && i < rows; i++) { - if (pi && !pi->addstatus(1)) - break; - rep.set_filter(*_mask, i); + ((TReport_bilancio_verifica &)rep).set_filter(*_mask, i); book.add(rep); } - if (pi) delete pi; - - if (stampa) - book.print(); //stampa il book dei report - else - book.preview(); //anteprima -} - -void TPrint_bilancio_ca::print() -{ - print_or_preview(true); -} - -void TPrint_bilancio_ca::preview() -{ - print_or_preview(false); } // Anche l'occhio vuole la sua parte @@ -1297,7 +1248,7 @@ void TPrint_bilancio_ca::fill_sheet(int livello) } } -void TPrint_bilancio_ca::print_or_preview(const bool stampa) +void TPrint_bilancio_ca::execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type) { TSheet_field& sf = _mask->sfield(F_RIGHE); @@ -1311,22 +1262,19 @@ void TPrint_bilancio_ca::print_or_preview(const bool stampa) } else fill_sheet(completa); - if (_mask->get(F_BILANCIO) == "C") - bilancio_a_sezioni_contrapposte(stampa); + bilancio_a_sezioni_contrapposte(rep); else - bilancio_di_verifica(stampa); + bilancio_di_verifica(rep); if (empty_sheet) sf.destroy(); } -void TPrint_bilancio_ca::main_loop() +bool TPrint_bilancio_ca::user_destroy() { - _mask = new TPrint_bilancio_ca_mask; - _mask->run(); - delete _mask; - _mask = NULL; + safe_delete(_mask); + return TReport_application::user_destroy(); } int ca3300(int argc, char* argv[]) diff --git a/src/ca/ca3700.cpp b/src/ca/ca3700.cpp index f15945c86..132680413 100755 --- a/src/ca/ca3700.cpp +++ b/src/ca/ca3700.cpp @@ -75,7 +75,7 @@ const TString& TPrint_rendiconto_ca_mask::get_report_class() const bool TPrint_rendiconto_ca_mask::test_compatible_report() { const TString& cls = get_report_class(); - const TString& name = get(F_REPORT); + const TString& name = get(DLG_REPORT); bool ok = name.not_empty(); if (ok) { @@ -89,7 +89,7 @@ bool TPrint_rendiconto_ca_mask::test_compatible_report() } if (!ok) { - set(F_REPORT, cls); + set(DLG_REPORT, cls); TFilename path = cls; path.ext("rep"); ok = path.custom_path(); @@ -144,7 +144,7 @@ bool TPrint_rendiconto_ca_mask::on_field_event(TOperable_field& o, TField_event }*/ } break; - case F_REPORT: + case DLG_REPORT: if (e == fe_button) { const TString8 lib = get_report_class(); @@ -563,7 +563,7 @@ real TPrint_rendiconto_ca_recordset::get_budget_batch(const TString& codcdc, con if (_riclassificato) tipo_movimento |= _saldanal_riclassify; //..ecco quindi il saldo.. - const TSaldanal& saldo = ca_saldo(zio, null_date, null_date, tipo_movimento); + const TSaldanal& saldo = ca_saldo(zio, "", null_date, null_date, tipo_movimento); // qui //..che deve essere normalizzato in base alla sua sezione ed all'indicatore di bilancio del conto TImporto imp = saldo._fin; switch (zio.indicatore_bilancio()) @@ -601,7 +601,7 @@ real TPrint_rendiconto_ca_recordset::get_budget_print(const TString& conto, char if (_riclassificato) tipo_movimento |= _saldanal_riclassify; //..ecco quindi il saldo.. - const TSaldanal& saldo = ca_saldo(zio, null_date, null_date, tipo_movimento); + const TSaldanal& saldo = ca_saldo(zio, "", null_date, null_date, tipo_movimento); // qui //..che deve essere normalizzato in base alla sua sezione ed all'indicatore di bilancio del conto TImporto imp = saldo._fin; switch (zio.indicatore_bilancio()) @@ -2378,7 +2378,7 @@ void TPrint_rendiconto_ca::export_rendiconto() TSheet_field& sheet = _msk->sfield(F_RIGHE); sheet.destroy(); TToken_string& row = sheet.row(-1); //crea la prima riga dello sheet - TString repname = _msk->get(F_REPORT); + TString repname = _msk->get(DLG_REPORT); if (repname.empty()) repname = "ca3700a"; @@ -2684,7 +2684,7 @@ void TPrint_rendiconto_ca::main_loop() //report e book dei report TReport_book book; - TString path = mask.get(F_REPORT); + TString path = mask.get(DLG_REPORT); if (path.empty()) path = "ca3700a"; TPrint_rendiconto_ca_rep rep; diff --git a/src/ca/ca3800.cpp b/src/ca/ca3800.cpp index ff008eceb..4de0add11 100755 --- a/src/ca/ca3800.cpp +++ b/src/ca/ca3800.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include "../cg/cglib.h" @@ -7,6 +7,7 @@ #include "ca3883a.h" #include "calib01.h" #include "calib02.h" +#include "commesse.h" #include "pconana.h" #include "cdc.h" #include "fasi.h" @@ -47,7 +48,7 @@ const TString& TPrint_bilancio_cms_mask::get_report_class() const bool TPrint_bilancio_cms_mask::test_compatible_report() { const TString& cls = get_report_class(); - const TString& name = get(F_REPORT); + const TString& name = get(DLG_REPORT); bool ok = name.not_empty(); if (ok) { @@ -61,7 +62,7 @@ bool TPrint_bilancio_cms_mask::test_compatible_report() } if (!ok) { - set(F_REPORT, cls); + set(DLG_REPORT, cls); TFilename path = cls; path.ext("rep"); ok = path.custom_path(); @@ -73,21 +74,7 @@ bool TPrint_bilancio_cms_mask::on_field_event(TOperable_field& o, TField_event e { switch (o.dlg()) { - case DLG_PRINT: - if (e == fe_button) - { - main_app().print(); - return false; - } - break; - case DLG_PREVIEW: - if (e == fe_button) - { - main_app().preview(); - return false; - } - break; - case F_REPORT: + case DLG_REPORT: if (e == fe_button) { const TString8 lib = get_report_class(); @@ -131,7 +118,6 @@ bool TPrint_bilancio_cms_mask::on_field_event(TOperable_field& o, TField_event e return TAnal_report_mask::on_field_event(o, e, jolly); } - TPrint_bilancio_cms_mask::TPrint_bilancio_cms_mask() :TAnal_report_mask("ca3800") { @@ -251,36 +237,35 @@ TPrint_bilancio_cms_rep::TPrint_bilancio_cms_rep(const char* rep_name, const TSt const bool intestazione_minima) :TCRPA_report(rep_name, prefix, depth, show_fasi, show_cdc, show_cms_descr, show_cms_date, sintetica, intestazione_minima) { - } //////////////////////////////////////////////////////// // APPLICAZIONE //////////////////////////////////////////////////////// -class TPrint_bilancio_cms : public TSkeleton_application +class TPrint_bilancio_cms : public TReport_application { - TPrint_bilancio_cms_mask* _mask; + TPrint_bilancio_cms_mask * _mask; + TReport * _rep; protected: void build_lista_fasi(TString_array & lista_fasi, const TString & fase); void build_lista_cdc(TString_array & lista_cdc, const TString & cdc); - void print_or_preview(const bool stampa); - virtual void print(); - virtual void preview(); + // @cmember Ritorna il report + virtual TReport & get_report(const TAutomask & m); + // @cmember ritorna la maschera + virtual TAutomask & get_mask(); + virtual void execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type = _export_printer); - virtual void main_loop(); +public: + virtual const char * title() const { return TR("Stampa bilancio di commessa"); } + virtual const char * output_name(const TReport & rep) const { return "bilcms"; } + virtual TTrec * get_dbase_recdesc(TReport & rep); + // @cmember Costruttore + TPrint_bilancio_cms() : _mask(nullptr), _rep(nullptr) { } + // @cmember Distruttore + virtual ~TPrint_bilancio_cms() { } }; -void TPrint_bilancio_cms::print() -{ - print_or_preview(true); -} - -void TPrint_bilancio_cms::preview() -{ - print_or_preview(false); -} - void TPrint_bilancio_cms::build_lista_fasi(TString_array & lista_fasi, const TString & fase) { TString query("USE FASI"); @@ -331,25 +316,14 @@ void TPrint_bilancio_cms::build_lista_cdc(TString_array & lista_cdc, const TStri } } -void TPrint_bilancio_cms::print_or_preview(const bool stampa) +void TPrint_bilancio_cms::execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type) { - //report e book dei report - TReport_book book; - - TString80 prefix; - for (short id = F_PRE1; id <= F_PRE3 && _mask->id2pos(id) > 0; id++) - prefix << _mask->get(id); - - const int depth = _mask->get_int(F_DEPTH); - TString path = _mask->get(F_REPORT); - const int tipostampa = _mask->get_int(F_TIPOSTAMPA); //fasi const bool dett_fasi = (tipostampa == 1) || (tipostampa == 3); const TString& fase = _mask->get(F_FASE); const bool group_fasi = tipostampa == 4; const bool show_fasi = dett_fasi && fase.empty(); - const bool sintetica = _mask->get_bool(F_STAMPA_SINTETICA); const bool intestazione_minima = _mask->get_bool(F_INTESTAZIONE_MINIMA); //cdc @@ -363,12 +337,6 @@ void TPrint_bilancio_cms::print_or_preview(const bool stampa) const bool show_cms_descr = _mask->get_bool(F_SHOW_CMS_DESCR); const bool show_cms_date = _mask->get_bool(F_SHOW_CMS_DATE); - if (path.empty()) - path = _mask->get_report_class(); - - //crea il report in base ai parametri (tipo report,struttura,profondita' di stampa) - TPrint_bilancio_cms_rep rep(path, prefix, depth, show_fasi, show_cdc, show_cms_descr, show_cms_date, sintetica, intestazione_minima); - //se e' una stampa di tipo fasi riassunte (crpa special edition) deve fare lo scanning di tutte le fasi.. //..singolarmente e stampare un report per ogni fase.Senno' stampa un solo report @@ -379,12 +347,8 @@ void TPrint_bilancio_cms::print_or_preview(const bool stampa) if (fase.blank() && cdc.blank()) { - rep.set_filter(*_mask); - book.add(rep); - if (stampa) - book.print(); - else - book.preview(); + ((TPrint_bilancio_cms_rep & ) rep).set_filter(*_mask); + book.add(rep, type); } else { @@ -401,8 +365,8 @@ void TPrint_bilancio_cms::print_or_preview(const bool stampa) { const TString& cdc = lista_cdc.row(j); - rep.set_filter(*_mask, fase, cdc); - book.add(rep); + ((TPrint_bilancio_cms_rep &)rep).set_filter(*_mask, fase, cdc); + book.add(rep, type); if (rep.page() > 0) { if (intestazione_minima) @@ -413,10 +377,6 @@ void TPrint_bilancio_cms::print_or_preview(const bool stampa) } } } - if (stampa) - book.print(); - else - book.preview(); } } } //if(group_fasi... @@ -434,8 +394,8 @@ void TPrint_bilancio_cms::print_or_preview(const bool stampa) { TString16 fase = lista_fasi.row(i); - rep.set_filter(*_mask, fase); - book.add(rep); + ((TPrint_bilancio_cms_rep &)rep).set_filter(*_mask, fase); + book.add(rep, type); if (rep.page() > 0) { if (intestazione_minima) @@ -445,13 +405,7 @@ void TPrint_bilancio_cms::print_or_preview(const bool stampa) } } } - if (stampa) - book.print(); - else - book.preview(); - } - } //if(group_fasi... else if (group_cdc || dett_cdc) @@ -465,8 +419,8 @@ void TPrint_bilancio_cms::print_or_preview(const bool stampa) { const TString& cdc = lista_cdc.row(j); - rep.set_filter(*_mask, fase, cdc); - book.add(rep); + ((TPrint_bilancio_cms_rep &)rep).set_filter(*_mask, fase, cdc); + book.add(rep, type); if (rep.page() > 0) { if (intestazione_minima) @@ -477,35 +431,115 @@ void TPrint_bilancio_cms::print_or_preview(const bool stampa) } } } - if (stampa) - book.print(); - else - book.preview(); } //if(group_cdc... else //...senno' stampa standard in un giro solo { - rep.set_filter(*_mask); - book.add(rep); - if (stampa) - book.print(); - else - book.preview(); + ((TPrint_bilancio_cms_rep &)rep).set_filter(*_mask); + book.add(rep, type); } } -void TPrint_bilancio_cms::main_loop() +TReport & TPrint_bilancio_cms::get_report(const TAutomask & m) { - _mask = new TPrint_bilancio_cms_mask; - _mask->run(); - delete _mask; - _mask = NULL; + + TString80 prefix; + + for (short id = F_PRE1; id <= F_PRE3 && m.id2pos(id) > 0; id++) + prefix << m.get(id); + + const int depth = m.get_int(F_DEPTH); + TString path = m.get(DLG_REPORT); + + const int tipostampa = m.get_int(F_TIPOSTAMPA); + //fasi + const bool dett_fasi = (tipostampa == 1) || (tipostampa == 3); + const TString& fase = m.get(F_FASE); + const bool group_fasi = tipostampa == 4; + const bool show_fasi = dett_fasi && fase.empty(); + const bool sintetica = m.get_bool(F_STAMPA_SINTETICA); + const bool intestazione_minima = m.get_bool(F_INTESTAZIONE_MINIMA); + + //cdc + const bool dett_cdc = (tipostampa == 2) || (tipostampa == 3); + const TString& cdc = m.get(F_CDC); + const bool group_cdc = tipostampa == 8; + const bool show_cdc = dett_cdc && cdc.empty(); + + + //descrizioni + const bool show_cms_descr = m.get_bool(F_SHOW_CMS_DESCR); + const bool show_cms_date = m.get_bool(F_SHOW_CMS_DATE); + + if (path.empty()) + path = ((TPrint_bilancio_cms_mask &)m).get_report_class(); + //crea il report in base ai parametri (tipo report,struttura,profondita' di stampa) + safe_delete(_rep); + _rep = new TPrint_bilancio_cms_rep(path, prefix, depth, show_fasi, show_cdc, show_cms_descr, show_cms_date, sintetica, intestazione_minima); + return *_rep; +} + +TAutomask & TPrint_bilancio_cms::get_mask() +{ + if (_mask == nullptr) + _mask = new TPrint_bilancio_cms_mask; + return *_mask; +} + +TTrec * TPrint_bilancio_cms::get_dbase_recdesc(TReport & rep) +{ + TTrec * desc = new TTrec; + TToken_string def; + TRectype cms(LF_COMMESSE); + TRectype fasi(LF_FASI); + TRectype cdc(LF_CDC); + TMask & m = get_mask(); + const int tipostampa = m.get_int(F_TIPOSTAMPA); + const bool show_cms_descr = _mask->get_bool(F_SHOW_CMS_DESCR); + const bool show_cms_date = _mask->get_bool(F_SHOW_CMS_DATE); + const bool dett_fasi = (tipostampa == 1) || (tipostampa == 3); + const bool dett_cdc = (tipostampa == 2) || (tipostampa == 3); + + desc->add_fielddef(cms.rec_des(), COMMESSE_CODCMS); + if (show_cms_descr) + desc->add_fielddef(cms.rec_des(), COMMESSE_DESCRIZ); + if (show_cms_date) + { + desc->add_fielddef("INIZIO", _datefld); + desc->add_fielddef("FINE", _datefld); + } + if (dett_fasi) + desc->add_fielddef(fasi.rec_des(), FASI_CODFASE); + if (dett_cdc) + desc->add_fielddef(cdc.rec_des(), CDC_CODCOSTO); + desc->add_fielddef("AVRIC", _realfld, 6, 2); + desc->add_fielddef("RICAVI", _realfld, 18, 2); + desc->add_fielddef("INCAR", _realfld, 18, 2); + desc->add_fielddef("CONSUL", _realfld, 18, 2); + desc->add_fielddef("ALTRI", _realfld, 18, 2); + desc->add_fielddef("MATER", _realfld, 18, 2); + desc->add_fielddef("INDIST", _realfld, 18, 2); + desc->add_fielddef("DIPEND", _realfld, 18, 2); + desc->add_fielddef("COSTI", _realfld, 18, 2); + desc->add_fielddef("DIFF", _realfld, 18, 2); + desc->add_fielddef("DIFFPERC", _realfld, 6, 2); + + TString keydef = COMMESSE_CODCMS; + + if (dett_fasi) + keydef << '+' << FASI_CODFASE; + if (dett_cdc) + keydef << '+' << CDC_CODCOSTO; + desc->add_keydef(keydef, true); + if (show_cms_descr) + desc->add_keydef(COMMESSE_DESCRIZ, true); + return desc; } int ca3800(int argc, char* argv[]) { TPrint_bilancio_cms a; - a.run(argc, argv, TR("Stampa bilancio di commessa")); + a.run(argc, argv, a.title()); return 0; } diff --git a/src/ca/ca3800.uml b/src/ca/ca3800.uml index 4bd00e7ad..8e084b427 100755 --- a/src/ca/ca3800.uml +++ b/src/ca/ca3800.uml @@ -1,9 +1,16 @@ #include "ca3883a.h" +#define ALL_EXPORT +#define CLASS_NAME "ca3800" + TOOLBAR "topbar" 0 0 0 2 #include ENDPAGE +TOOLBAR "bottombar" 0 -3 0 1 +#include +ENDPAGE + PAGE "Stampa bilancio commessa" 0 2 0 0 GROUPBOX DLG_NULL 76 5 @@ -71,18 +78,12 @@ END LISTBOX F_TIPOSTAMPA 1 30 BEGIN PROMPT 1 8 "Stampa " - ITEM "0|Normale" - MESSAGE CLEAR,F_FASE|CLEAR,F_CDC - ITEM "1|Dettaglia per Fase" - MESSAGE ENABLE,F_FASE|CLEAR,F_CDC - ITEM "2|Dettaglia per CdC" - MESSAGE CLEAR,F_FASE|ENABLE,F_CDC - ITEM "3|Dettaglia per Fase e CdC" - MESSAGE ENABLE,F_FASE|ENABLE,F_CDC - ITEM "4|Riassuntiva per Fase" - MESSAGE CLEAR,F_FASE|CLEAR,F_CDC - ITEM "8|Riassuntiva per CdC" - MESSAGE CLEAR,F_FASE|CLEAR,F_CDC + ITEM "0|Normale" MESSAGE CLEAR,F_FASE|CLEAR,F_CDC + ITEM "1|Dettaglia per Fase" MESSAGE ENABLE,F_FASE|CLEAR,F_CDC + ITEM "2|Dettaglia per CdC" MESSAGE CLEAR,F_FASE|ENABLE,F_CDC + ITEM "3|Dettaglia per Fase e CdC" MESSAGE ENABLE,F_FASE|ENABLE,F_CDC + ITEM "4|Riassuntiva per Fase" MESSAGE CLEAR,F_FASE|CLEAR,F_CDC + ITEM "8|Riassuntiva per CdC" MESSAGE CLEAR,F_FASE|CLEAR,F_CDC END BOOLEAN F_STAMPA_SINTETICA @@ -115,12 +116,9 @@ END LISTBOX F_TIPOSTIMA 1 30 BEGIN PROMPT 1 11 "Tipo di stima Costi\Ricavi" - ITEM "T|C prev.\R prev. (Tempo)" - MESSAGE SHOW,F_DETR_CONS|ENABLE,F_DETR_CONS|CLEAR,F_INCLUDE_DOCUMENTI - ITEM "C|C cons.\R prev." - MESSAGE SHOW,F_DETR_CONS|ENABLE,F_DETR_CONS|ENABLE,F_INCLUDE_DOCUMENTI - ITEM "R|C cons.\R cons." - MESSAGE CLEAR,F_DETR_CONS|HIDE,F_DETR_CONS|ENABLE,F_INCLUDE_DOCUMENTI + ITEM "T|C prev.\R prev. (Tempo)" MESSAGE SHOW,F_DETR_CONS|ENABLE,F_DETR_CONS|CLEAR,F_INCLUDE_DOCUMENTI + ITEM "C|C cons.\R prev." MESSAGE SHOW,F_DETR_CONS|ENABLE,F_DETR_CONS|ENABLE,F_INCLUDE_DOCUMENTI + ITEM "R|C cons.\R cons." MESSAGE CLEAR,F_DETR_CONS|HIDE,F_DETR_CONS|ENABLE,F_INCLUDE_DOCUMENTI END BOOLEAN F_DETR_CONS @@ -134,25 +132,39 @@ BEGIN GROUP 6 END +STRING F_CONTSEP 6 +BEGIN + PROMPT 1 19 "Cont.separata " + USE &NPENT + INPUT CODTAB F_CONTSEP + DISPLAY "Codice@6" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CONTSEP CODTAB + OUTPUT F_DESCONTSEP S0 + CHECKTYPE NORMAL + FIELD CONTSEP + MODULE NP +END + +STRING F_DESCONTSEP 50 48 +BEGIN + PROMPT 25 19 "" + USE &NPENT KEY 2 + INPUT S0 F_DESCONTSEP + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice@6" CODTAB + COPY OUTPUT F_CONTSEP + CHECKTYPE SEARCH + MODULE NP +END + LISTBOX F_DEPTH 1 20 BEGIN - PROMPT 1 19 "Profondita' del piano dei conti da considerare " + PROMPT 1 20 "Profondita' del piano dei conti da considerare " ITEM "1|Gruppo" ITEM "2|Conto" END -STRING F_REPORT 256 64 -BEGIN - PROMPT 1 20 "Report " - FLAGS "B" -END - -STRING DLG_PROFILE 50 -BEGIN - PROMPT 1 -1 "Profilo " - PSELECT -END - ENDPAGE PAGE "Istruzioni" -1 -1 78 20 diff --git a/src/ca/ca3883.cpp b/src/ca/ca3883.cpp index efaa24902..f73e7671a 100755 --- a/src/ca/ca3883.cpp +++ b/src/ca/ca3883.cpp @@ -609,7 +609,13 @@ const TString& TPrint_saldana_recordset::crea_select(const int logicnum) } break; } + if (_contsep.full()) + { + TString clause = SALDANA_CONTSEP; + clause << "=\"" << _contsep << "\""; + ca_append_and(select, clause); + } return get_tmp_string() = select; } @@ -877,8 +883,8 @@ void TPrint_saldana_recordset::elabora_rmovana(TAssoc_array* cms, const TDate& d const TRectype& rec_commesse = cache().get(LF_COMMESSE, codcms); const int indice = ricava_sezione_di_stampa(rec_commesse, datainiesc, datafinesc); - //solo le righe con commessa buona (indice >= 0) vengono considerate - if (indice >= 0) + //solo le righe con commessa buona (indice >= 0) vengono considerate ed eventualmente i movimenti con un codice di contabilità separata specifico + if (indice >= 0 && (movana.get(MOVANA_CONTSEP) == _contsep)) { //ci sono filtri o raggruppamenti per fase o centro di costo? const TString& fase = rmovana.get(RMOVANA_CODFASE); @@ -969,11 +975,13 @@ void TPrint_saldana_recordset::elabora_rmovana(TAssoc_array* cms, const TDate& d rec_commesse.get_date(COMMESSE_PROROGA)); TRectype saldana(LF_SALDANA); + saldana.put(SALDANA_ANNO, _anno); saldana.put(SALDANA_CONTO, conto_anale); saldana.put(SALDANA_COSTO, cdc); saldana.put(SALDANA_COMMESSA, codcms); saldana.put(SALDANA_FASE, fase); + saldana.put(SALDANA_CONTSEP, _contsep); switch(tipomov) { @@ -1712,4 +1720,11 @@ void TPrint_saldana_recordset::set_filter(const TMask& msk, const char * curr_fa break; } */ } + + TEdit_field * csep = (TEdit_field *)msk.find_by_id(F_CONTSEP); + + if (csep != nullptr) + _contsep = csep->get(); + else + _contsep = ""; } diff --git a/src/ca/ca3883.h b/src/ca/ca3883.h index e8a4e370d..0d9b24e43 100755 --- a/src/ca/ca3883.h +++ b/src/ca/ca3883.h @@ -72,6 +72,7 @@ class TPrint_saldana_recordset : public TRecordset TDate _datacalcolo; TString16 _fase; TString80 _cdc; + TString16 _contsep; int _tipo; int _anno; @@ -140,7 +141,7 @@ protected: public: virtual void set_filter(const TMask& msk, const char * curr_fase = "", const char * curr_cdc =""); - TPrint_saldana_recordset(int tipo) : _tipo(tipo) { } + TPrint_saldana_recordset(int tipo, const char * curr_contsep = "") : _tipo(tipo), _contsep(curr_contsep) { } }; #endif diff --git a/src/ca/ca3883a.h b/src/ca/ca3883a.h index b597e9246..33ede49f1 100755 --- a/src/ca/ca3883a.h +++ b/src/ca/ca3883a.h @@ -5,7 +5,6 @@ #define F_RAGSOC 102 #define F_DATASTAMPA 103 #define F_ESERCIZIO 104 -#define F_REPORT 105 #define F_INIZIO_ES 106 #define F_FINE_ES 107 #define F_TIPOSTIMA 108 @@ -23,6 +22,9 @@ #define F_STAMPA_SINTETICA 119 #define F_INTESTAZIONE_MINIMA 120 +#define F_CONTSEP 122 +#define F_DESCONTSEP 123 + /* campi per la generazione automatica #define F_FASE1 112 #define F_FASE2 113 diff --git a/src/ca/calib01.cpp b/src/ca/calib01.cpp index da1d2b990..ed58b7906 100755 --- a/src/ca/calib01.cpp +++ b/src/ca/calib01.cpp @@ -2276,7 +2276,7 @@ const char * TAnal_mov::row_code(int row) const } return get_tmp_string() = code; } -void TAnal_mov::saldo_set_reset(const TRectype& row, bool reset) +void TAnal_mov::saldo_set_reset(const TRectype& row, const char * contsep, bool reset) { const int dec = TCurrency::get_firm_dec(); const TImporto imp_row(row.get_char(RMOVANA_SEZIONE), row.get_real(RMOVANA_IMPORTO)); @@ -2288,6 +2288,8 @@ void TAnal_mov::saldo_set_reset(const TRectype& row, bool reset) annies.add(esc_iniziale); const char tipomov = get_char(MOVANA_TIPOMOV); + if (*contsep != '\0' && tipomov != '\0') + int i = 1; // i movimenti analitici possono avere una data di scadenza come la mozzarella const TDate datacomp = get_date(MOVANA_DATACOMP); TDate datafcomp = get_date(MOVANA_DATAFCOMP); @@ -2315,12 +2317,14 @@ void TAnal_mov::saldo_set_reset(const TRectype& row, bool reset) } TToken_string key; + key.add(tipomov); key.add(esc_iniziale); key.add(row.get(RMOVANA_CODCCOSTO)); key.add(row.get(RMOVANA_CODCMS)); key.add(row.get(RMOVANA_CODFASE)); key.add(row.get(RMOVANA_CODCONTO)); + key.add(contsep); if (annies.items() > 1) //saldi spammati su piu' anni { @@ -2418,10 +2422,14 @@ void TAnal_mov::load_saldi(bool reset) } const TRecord_array& a = body(LF_RMOVANA); + TString contsep = get(MOVANA_CONTSEP); + for (int i = a.last_row(); i > 0; i--) { const TRectype& row = a[i]; - saldo_set_reset(row, reset); //aggiunge o toglie la riga corrente ai saldi in memoria + saldo_set_reset(row, "", reset); //aggiunge o toglie la riga corrente ai saldi in memoria + if (contsep.full()) + saldo_set_reset(row, contsep, reset); //aggiunge o toglie la riga corrente ai saldi in memoria con contabilità separata } } @@ -2469,6 +2477,7 @@ bool TAnal_mov::save_saldi(const int annoes) saldi.put(SALDANA_COMMESSA, key.get(3)); saldi.put(SALDANA_FASE, key.get(4)); saldi.put(SALDANA_CONTO, key.get(5)); + saldi.put(SALDANA_CONTSEP, key.get(6)); int err = saldi.read(_isequal, _lock); if (err != NOERR) @@ -2484,6 +2493,7 @@ bool TAnal_mov::save_saldi(const int annoes) saldi.put(SALDANA_COMMESSA, key.get(3)); saldi.put(SALDANA_FASE, key.get(4)); saldi.put(SALDANA_CONTO, key.get(5)); + saldi.put(SALDANA_CONTSEP, key.get(6)); err = saldi.write(); if (err != NOERR) cantwrite_box(saldi.name()); @@ -3068,7 +3078,7 @@ TObject* TCache_ripartizioni::key2obj(const char* key) TRectype & rec = (*rip)[i]; const TAnal_bill bill(rec); //calcola il saldo usando come parametri (cms/cdc/fsc/conto) quelli che trova sulla riga di ripartizione - const TSaldanal& s = ca_saldo(bill, _dal, _al, _saldanal_consuntivo); + const TSaldanal& s = ca_saldo(bill, "", _dal, _al, _saldanal_consuntivo); // qui //in base a C/R stabilisce quali saldi considerare e in quale sezione normalizzare real val; if (sezione_di_riferimento == 'R') //in Ricavi normalizza in Avere diff --git a/src/ca/calib01.h b/src/ca/calib01.h index 5a152cbdb..cd2b87f4a 100755 --- a/src/ca/calib01.h +++ b/src/ca/calib01.h @@ -188,7 +188,7 @@ class TAnal_mov : public TMultiple_rectype TAssoc_array _saldind; protected: - void saldo_set_reset(const TRectype& row, bool reset); + void saldo_set_reset(const TRectype& row, const char * contsep, bool reset); void load_saldi(bool reset); void kill_saldi() { _saldi.destroy(); } void update_saldi(bool kill); diff --git a/src/ca/calib02.cpp b/src/ca/calib02.cpp index c016c1933..348a4c6ab 100755 --- a/src/ca/calib02.cpp +++ b/src/ca/calib02.cpp @@ -163,7 +163,7 @@ const TVariant& TPconana_recordset::get(const char* field) const } ((TAnal_bill&)_bill).set_conto(get(PCONANA_CODCONTO).as_string()); - const TSaldanal& s = ca_saldo(_bill, _dal, _al, tipimov); + const TSaldanal& s = ca_saldo(_bill, "", _dal, _al, tipimov); //qui TVariant& var = get_tmp_var(); if (sub_field == "INI_DARE") @@ -250,12 +250,15 @@ bool TPconana_recordset::valid_record(const TRelation& rel) const conto = curr.get(PCONANA_CODCONTO); if (conto.len() <= _conto_minlen) return false; - } + if (_contsep.full() && _contsep != cache().get(LF_MOVANA, curr.get(RMOVANA_NUMREG), MOVANA_CONTSEP)) + return false; + } - if (_movimentati || _nonnulli) + + if (_movimentati || _nonnulli) { ((TAnal_bill&)_bill).set_conto(conto); - const TSaldanal& s = ca_saldo(_bill, _dal, _al, _tipimov); + const TSaldanal& s = ca_saldo(_bill, _contsep, _dal, _al, _tipimov); if (_movimentati && !s._movimentato) return false; if (_nonnulli && s._fin.is_zero()) @@ -324,7 +327,7 @@ void TPconana_recordset::set_tipo(char tipo) void TPconana_recordset::set_filter(char tipo, const char* da_conto, const char* a_conto, const char* costo, const char* commessa, const char* fase, - const TDate& dal, const TDate& al, + const char * contsep, const TDate& dal, const TDate& al, word tipimov, bool movimentati, bool nonnulli) { set_tipo(tipo); @@ -343,6 +346,7 @@ void TPconana_recordset::set_filter(char tipo, const char* da_conto, const char* _bill.set_costo(costo); _bill.set_commessa(commessa); _bill.set_fase(fase); + _contsep = contsep; } TPconana_recordset::TPconana_recordset(char tipo) : TISAM_recordset("USE PCONANA") @@ -771,7 +775,7 @@ protected: bool saldi(const TAnal_bill& bill, const TDate& dal, const TDate& al, word tipo, TSaldanal& s); public: - const TSaldanal& saldo(const TAnal_bill& bill, const TDate& dal, const TDate& al, word tipi = 0x1); + const TSaldanal& saldo(const TAnal_bill& bill, const char * contsep, const TDate& dal, const TDate& al, word tipi = 0x1); TSaldi_cache(); }; @@ -1108,7 +1112,7 @@ TObject* TSaldi_cache::key2obj(const char* key) return s; } -const TSaldanal& TSaldi_cache::saldo(const TAnal_bill& bill, const TDate& dal, const TDate& al, word tipi) +const TSaldanal& TSaldi_cache::saldo(const TAnal_bill& bill, const char * contsep, const TDate& dal, const TDate& al, word tipi) { TToken_string key; key.add(bill.conto(), 0); @@ -1118,6 +1122,7 @@ const TSaldanal& TSaldi_cache::saldo(const TAnal_bill& bill, const TDate& dal, c key.add(dal, 4); key.add(al, 5); key.add(tipi, 6); + key.add(contsep, 7); return *(const TSaldanal*)objptr(key); } @@ -1125,7 +1130,7 @@ const TSaldanal& TSaldi_cache::saldo(const TAnal_bill& bill, const TDate& dal, c TSaldi_cache::TSaldi_cache() : TCache(3881) // Numero primo { } -const TSaldanal& ca_saldo(const TAnal_bill& bill, const TDate& dal, const TDate& al, word tipi) +const TSaldanal& ca_saldo(const TAnal_bill& bill, const char * contsep, const TDate& dal, const TDate& al, word tipi) { static TSaldi_cache* cache = nullptr; @@ -1133,7 +1138,7 @@ const TSaldanal& ca_saldo(const TAnal_bill& bill, const TDate& dal, const TDate& SAFE_DELETE(cache); if (cache == nullptr) cache = new TSaldi_cache; - return cache->saldo(bill, dal, al, tipi); + return cache->saldo(bill, contsep, dal, al, tipi); } @@ -1247,6 +1252,22 @@ void TAnal_report_mask::create_sheet(short sheet_id) } } +const TString& TAnal_report_mask::get_report_class() const +{ + TReport_select * rs = (TReport_select *)efield(DLG_REPORT).browse(); + + return rs->get_report_class(); +} + +void TAnal_report_mask::set_report_class() const +{ + TReport_select * rs = (TReport_select *)efield(DLG_REPORT).browse(); + + if (rs != nullptr) + rs->set_report_class(get_report_class()); + +} + int TAnal_report_mask::get_row_bill(TSheet_field& sf, int r, TAnal_bill& bill) { int flag = 0; diff --git a/src/ca/calib02.h b/src/ca/calib02.h index 1e535312c..be866e681 100755 --- a/src/ca/calib02.h +++ b/src/ca/calib02.h @@ -91,7 +91,7 @@ public: /////////////////////////////////////////////////////// // Metodi sciolti ma decisivi /////////////////////////////////////////////////////// -const TSaldanal& ca_saldo(const TAnal_bill& bill, const TDate& dal, const TDate& al, word tipi = _saldanal_consuntivo); +const TSaldanal& ca_saldo(const TAnal_bill& bill, const char * contsep, const TDate& dal, const TDate& al, word tipi = _saldanal_consuntivo); TImporto ca_get_imp(const TRecordset& rs, const char* sez, const char* imp); @@ -103,7 +103,7 @@ class TPconana_recordset : public TISAM_recordset { char _tipo; word _tipimov; - TString _da_conto, _a_conto; + TString _da_conto, _a_conto, _contsep; int _conto_minlen; TAnal_bill _bill; TDate _dal, _al; @@ -124,7 +124,7 @@ public: void set_tipo(char tipo); void set_filter(char tipo, const char* da_conto, const char* a_conto, const char* costo, const char* commessa, const char* fase, - const TDate& dal, const TDate& al, + const char * contsep, const TDate& dal, const TDate& al, word tipimov, bool movimentati, bool nonnulli); TPconana_recordset(char tipo = ' '); }; @@ -165,10 +165,12 @@ class TAnal_report_mask : public TAutomask protected: void create_sheet(short sheet_id); int create_sheet_fields(short sheet_id, int lf, int& y, short& dlg); + virtual void set_report_class() const; virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: + virtual const TString& get_report_class() const; int get_row_bill(TSheet_field& sf, int r, TAnal_bill& bill); int set_row_bill(TSheet_field& sf, int r, const TAnal_bill& bill); bool esistono_riclassificazioni() const; diff --git a/src/ca/f151.dir b/src/ca/f151.dir index 73d90d980..9cbcb5896 100755 --- a/src/ca/f151.dir +++ b/src/ca/f151.dir @@ -1,3 +1,3 @@ 151 0 -$saldana|0|0|189|0|Saldi contabilita' analitica||| +$saldana|0|0|195|0|Saldi contabilita' analitica||| diff --git a/src/ca/f151.trr b/src/ca/f151.trr index c6ee66297..a08ebb9df 100755 --- a/src/ca/f151.trr +++ b/src/ca/f151.trr @@ -1,10 +1,11 @@ 151 -17 +18 ANNO|9|4|0|Codice esercizio COSTO|1|20|0|Centro Di costo COMMESSA|1|20|0|Commessa FASE|1|10|0|Fase CONTO|1|20|0|Conto +CONTSEP|1|6|0|Contabilità separata SEZIONE|7|1|0|Sezione (Normale) SALDO|4|18|3|Saldo (Normale) SEZIONEP|7|1|0|Sezione (Preventivo) @@ -18,5 +19,5 @@ SALDOIV|4|18|3|Saldo Indiretto (Preventivo) SEZIONEIP|7|1|0|Sezione Indiretto (Variazione Preventivo) SALDOIP|4|18|3|Saldo Indiretto (Variazione Preventivo) 2 -ANNO+CONTO+COSTO+COMMESSA+FASE| -CONTO+ANNO+COSTO+COMMESSA+FASE| +ANNO+CONTO+COSTO+COMMESSA+FASE+CONTSEP| +CONTO+ANNO+COSTO+COMMESSA+FASE+CONTSEP|X diff --git a/src/ca/saldana.h b/src/ca/saldana.h index dd1d740f4..568944bcf 100755 --- a/src/ca/saldana.h +++ b/src/ca/saldana.h @@ -6,6 +6,7 @@ #define SALDANA_COMMESSA "COMMESSA" #define SALDANA_FASE "FASE" #define SALDANA_CONTO "CONTO" +#define SALDANA_CONTSEP "CONTSEP" #define SALDANA_SEZIONE "SEZIONE" #define SALDANA_SALDO "SALDO" diff --git a/src/ce/ce1300.cpp b/src/ce/ce1300.cpp index 6013eb60f..43bd53d71 100755 --- a/src/ce/ce1300.cpp +++ b/src/ce/ce1300.cpp @@ -230,9 +230,9 @@ bool TSelam_qmask::on_field_event(TOperable_field& o, TField_event e, long jolly const TRectype & ammce = cache().get(LF_AMMCE, key); if (!ammce.empty()) { - if (ammce.get_bool(AMMCE_FZPER) == TRUE) + if (ammce.get_bool(AMMCE_FZPER)) return error_box(TR("Sul cespite sono state forzate le Percentuali:\nprocedere dalla forzatura ammortamenti su cespite")); - if (ammce.get_bool(AMMCE_FZQUO) == TRUE) + if (ammce.get_bool(AMMCE_FZQUO)) return error_box(TR("Sul cespite sono state forzate le Quote:\nprocedere dalla forzatura ammortamenti su cespite")); } diff --git a/src/ce/ce2100.cpp b/src/ce/ce2100.cpp index 8e92d11f9..0f628d881 100755 --- a/src/ce/ce2100.cpp +++ b/src/ce/ce2100.cpp @@ -120,6 +120,7 @@ bool TCalcamm::calcola_ammortamenti() break; TCespite cespite(cur.curr()); + for (int tipo_sit = 1; tipo_sit <= 3; tipo_sit++) cespite.calc_amm(tipo_sit, data_limite, true); } diff --git a/src/ce/ce3900.cpp b/src/ce/ce3900.cpp index fafd6d453..30ef0d184 100755 --- a/src/ce/ce3900.cpp +++ b/src/ce/ce3900.cpp @@ -31,14 +31,15 @@ //////////////////////////////////////////////////////// class TStampa_sintetica_mask : public TAutomask { - bool _preview; +// bool _preview; bool _excel; protected: bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: - bool preview() const { return _preview; } - bool excel() const { return _excel; } +// bool preview() const { return _preview; } + bool excel() const { return _excel; } + void set_excel(bool on) { _excel = on; } TStampa_sintetica_mask(); }; @@ -82,19 +83,19 @@ bool TStampa_sintetica_mask::on_field_event(TOperable_field& o, TField_event e, } } break; - case DLG_PRINT: +/* case DLG_PRINT: if (e == fe_button) { - _preview = false; - _excel = false; +// _preview = false; +// _excel = false; } break; case DLG_PREVIEW: if (e == fe_button) { - _preview = true; - _excel = false; - stop_run(K_ENTER); +// _preview = true; +// _excel = false; +// stop_run(K_ENTER); } break; case DLG_EXPORT_EXCEL: @@ -103,13 +104,13 @@ bool TStampa_sintetica_mask::on_field_event(TOperable_field& o, TField_event e, _excel = true; stop_run(K_ENTER); } - break; + break; */ default: break; } return ok; } -TStampa_sintetica_mask::TStampa_sintetica_mask() : TAutomask("ce3900"), _preview(false), _excel(false) +TStampa_sintetica_mask::TStampa_sintetica_mask() : TAutomask("ce3900"), _excel(false) //, _preview(false) { } @@ -201,10 +202,10 @@ void TStampa_sintetica_rep::set_filter(const TStampa_sintetica_mask& msk) const bool shimp = (!msk.excel()) && msk.get_bool(F_TOTIMP); const bool shloc = (!msk.excel()) && msk.get_bool(F_TOTLOC); - section('H', 2).show(shcat); section('H', 3).show(shimp); section('H', 4).show(shloc); section('F', 2).show(shcat); + section('H', 2).show(shcat); section('F', 3).show(shimp); section('F', 4).show(shloc); @@ -396,10 +397,12 @@ protected: void TStampa_sintetica::main_loop() { TStampa_sintetica_mask mask; + KEY k; // mask.set(F_CALCOLO, "X"); - while (mask.run() == K_ENTER) + while ((k = mask.run()) != K_QUIT) { + mask.set_excel(k == K_EXCEL); // Esecuzione calcolo globale if (mask.get_bool(F_CALCOLO)) { @@ -427,7 +430,7 @@ void TStampa_sintetica::main_loop() book.export_excel(out, false, true, true); } else - if (mask.preview()) + if (k == K_VISUALIZE) book.preview(); else book.print(); diff --git a/src/cg/cg0800a.uml b/src/cg/cg0800a.uml index 3043f0279..bb593e203 100644 --- a/src/cg/cg0800a.uml +++ b/src/cg/cg0800a.uml @@ -1,6 +1,7 @@ #include "cg0800a.h" TOOLBAR "topbar" 0 0 0 2 + BUTTON DLG_PRINT 2 2 BEGIN PROMPT 1 1 "Stampa" diff --git a/src/cg/cg2100.cpp b/src/cg/cg2100.cpp index 97cd86a06..4d3f2cbc2 100755 --- a/src/cg/cg2100.cpp +++ b/src/cg/cg2100.cpp @@ -59,7 +59,7 @@ public: TPrimanota_application::TPrimanota_application() : _rel(nullptr), _mode(0), _iva(nessuna_iva), _causale(nullptr), _giornale(nullptr), _lastreg(0), _last_dreg(TODAY), _last_dcom(TODAY), _automatico(nullptr), _swap_mask(false), _is_set_fpcheck(false), _f1_ini(false), _f1_liq(false), - _skip_giornale_check(false), _skip_bollato_check(false) + _skip_giornale_check(false), _skip_bollato_check(false), _pro_mask(nullptr) { memset(_msk, 0, sizeof(_msk)); } @@ -439,7 +439,7 @@ bool TPrimanota_application::read_caus(const char* cod, int year) } const char sezione = rcaus->get_char(RCA_SEZIONE); - const TImporto zero('D', ZERO); + TImporto zero('D', ZERO); const TString80 desc(causale().desc_agg(i)); if (nriga == 1) m->set(F_DESCR, desc); @@ -697,7 +697,7 @@ void TPrimanota_application::init_mask(TMask& m) _sal_dirty = false; // Azzero il flag di modifica del saldaconto fill_sheet(m); // Riempe righe contabili coi conti della causale m.hide(F_LINKDOC); - set_has_f1_db(&m); + has_f1_db(m); } void TPrimanota_application::init_query_mode(TMask& m) @@ -736,7 +736,7 @@ void TPrimanota_application::init_query_mode(TMask& m) m.set(F_CODCAUS, ini.get(MOV_CODCAUS)); m.send_key(K_SPACE, DLG_NEWREC); } - set_has_f1_db(&m); + has_f1_db(m); } @@ -1491,18 +1491,14 @@ void TPrimanota_application::check_saldi() void TPrimanota_application::write_fppro() { -#ifdef DBG - if (!ini_get_bool(CONFIG_INSTALL, "Main", "SkipFPPRO")) + if (main_app().has_module(FPAUT) && !ini_get_bool(CONFIG_INSTALL, "Main", "SkipFPPRO")) { -#endif // Controllo se la registrazione ha avuto effetto anche su FPPRO allora salvo riferimento sul mov if (save_fppro() > 0 && !save_dbmov()) message_box( "ATTENZIONE: non e' stato possibile salvare i riferimenti del documento in ingresso per questo movimento.\n" "Movimento registrato senza collegamento ai documenti in ingresso."); -#ifdef DBG } -#endif } bool TPrimanota_application::has_tot_doc(TToken_string& fppro_keys) @@ -1559,7 +1555,7 @@ void TPrimanota_application::set_movcoll(const long movcoll, const long numreg) } int TPrimanota_application::controlli_f1(const TMask& m) { - if (m.find_by_id(F_PROKEY) != nullptr && m.get(F_PROKEY).full() && has_f1_db((TMask*)&m) && fp_db().sq_is_connect() && check_causale(m.get(F_CODCAUS))) + if (iva_mask(m) && m.get(F_PROKEY).full() && has_f1_db(m) && fp_db().sq_is_connect() && check_causale(m.get(F_CODCAUS))) { TToken_string keys(m.get(F_PROKEY), ';'); const TDate dataoraric = fppro_db().set_keys(keys).get_dataorarioric(); @@ -1787,7 +1783,7 @@ void TPrimanota_application::clean_fppro() // Controlli: solo in mod modifica; che abbia fp-f1 (no F8); che non sono in salvataggio if (_mode != MODE_MOD - || !has_f1_db(&msk) + || !has_f1_db(msk) || last_key != K_DEL && last_key != K_SAVE && last_key != K_ELIMMAS && last_key != K_QUIT && !scollega()) return; @@ -1802,27 +1798,17 @@ void TPrimanota_application::clean_fppro() fp_db().sq_commit(); } -void TPrimanota_application::set_has_f1_db(TMask* m) +bool TPrimanota_application::has_f1() const { - if (m->find_by_id(F_DATAREG) != nullptr && !m->get(F_DATAREG).empty()) - { - if (TDate(m->get(F_DATAREG)) >= TDate(get_data_start_fatt())) - _isf1 = has_module(F1AUT) && !get_db_indirizzo().empty(); - else - _isf1 = false; - _is_set_fpcheck = true; - } - else if (!_is_set_fpcheck) - { - _isf1 = false; - _is_set_fpcheck = true; - } + return has_module(F1AUT) && get_db_indirizzo().full(); } -bool TPrimanota_application::has_f1_db(TMask* m) +bool TPrimanota_application::has_f1_db(const TMask & m) { - set_has_f1_db(m); - return _isf1; + const TDate datareg = m.get_date(F_DATAREG); + + _is_set_fpcheck = true; + return datareg.ok() && (datareg >= get_data_start_fatt()) && has_f1(); } bool TPrimanota_application::remove() @@ -2671,7 +2657,7 @@ int TPrimanota_application::save_fppro() TMask& msk = curr_mask(); // Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP - if (!has_f1_db(&msk)) + if (!has_f1_db(msk)) return pro_nofp; // Anzitutto guardo la modalita' in cui sono @@ -2736,7 +2722,7 @@ int TPrimanota_application::save_fppro() items = fp_db().sq_items(); } - if(has_f1_db(&msk) && items != 1) + if(has_f1_db(msk) && items != 1) { const bool forza = noyes_box("Attenzione, al movimento non e' stato abbinato nessun documento elettronico.\n" "Per consentire una corretta archiviazione sostitutiva si consiglia di provvedere al controllo della registrazione e di procedere\n" @@ -2850,6 +2836,7 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action) const BOOLEAN bModify = xvt_str_same(action, "Modify"); + TFilename intrini; intrini.tempdir(); intrini.add("ActIntra.ini"); diff --git a/src/cg/cg2100t.uml b/src/cg/cg2100t.uml index ec4eb71cd..96590a6a6 100644 --- a/src/cg/cg2100t.uml +++ b/src/cg/cg2100t.uml @@ -13,12 +13,14 @@ BEGIN PROMPT 2 1 "Contabilizzaz." PICTURE TOOL_EXPORT MODULE F1 + MESSAGE EXIT,K_ENTER END BUTTON DLG_LINK 2 2 BEGIN PROMPT 3 1 "Collega in Prima nota" PICTURE TOOL_LINK + MESSAGE EXIT,K_ENTER END BUTTON DLG_QUIT 2 2 diff --git a/src/cg/cg2102.cpp b/src/cg/cg2102.cpp index d333ceab7..c85df071d 100755 --- a/src/cg/cg2102.cpp +++ b/src/cg/cg2102.cpp @@ -219,7 +219,10 @@ TSheet_field& TPrimanota_application::cgs() const void TPrimanota_application::set_cgs_imp(int n, const TImporto& imp) { TSheet_field& s = cgs(); - imp.add_to(s.row(n), 0); + TImporto i(imp); + + i.normalize(); + i.add_to(s.row(n), 0); s.force_update(n); } @@ -371,7 +374,7 @@ void TPrimanota_application::reset_sheet_row(TSheet_field& s, int n) s.destroy(n); // Remove line n } -int TPrimanota_application::set_cgs_row(int n, const TImporto& imp, +int TPrimanota_application::set_cgs_row(int n, TImporto& importo, const TBill& conto, const char* desc, char tipo, const char* cms, const char* fas) { @@ -380,7 +383,8 @@ int TPrimanota_application::set_cgs_row(int n, const TImporto& imp, TToken_string& row = cg.row(n); row.cut(0); - imp.add_to(row, 0); + importo.normalize(); + importo.add_to(row, 0); row.add(conto.string(0x3)); row.add(""); // Codice decrizione row.add(desc); // Descrizione aggiuntiva @@ -1536,7 +1540,7 @@ void TPrimanota_application::add2cg_row(TSheet_field& s, TToken_string & row, TS { const TBill conto(row, cid2index(IVA_TIPO), 0x1); const int pos = bill2pos(conto, cgrowtype_imponibile); // Riga in cui andra' l'imponibile - const TImporto imp = a.real2imp(d > 0 ? imp_det : imp_ind, tipod); // Imponibile + TImporto imp = a.real2imp(d > 0 ? imp_det : imp_ind, tipod); // Imponibile if (pos >= 0) // Se il conto esisteva anche prima ... { @@ -1761,7 +1765,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& s, int r, KEY k) real pimponibile(pag.imponibile(inv)); pimponibile.round(pag.round(inv)); - if ((pimposta != imposta || pimponibile != imponibile) && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back()))) + if ((pimposta != imposta || pimponibile != imponibile) && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare()))) a.set_scadenze(m); // Ricalcola rate } } @@ -2842,7 +2846,7 @@ void TPrimanota_application::add_cgs_tot(TMask& m) TImporto imp = real2imp(m.get_real(F_TOTALE), cgrowtype_totale); - set_cgs_row(riga_totale, imp.normalize(), nuovo, descr, cgrowtype_totale); + set_cgs_row(riga_totale, imp, nuovo, descr, cgrowtype_totale); } calcola_imp(); // Ricalcola totale IVA calcola_saldo(); // Ricalcola sbilanci @@ -3550,21 +3554,11 @@ HIDDEN void inventa_cambio_intra(TMask& m) { const TString& codval = m.get(F_VALUTAINTRA); - if (codval.not_empty() && TCurrency::get_firm_val() != codval) + if (codval.full() && TCurrency::get_firm_val() != codval) { - TTable cam("CAM"); + const TRectype & cam =cache().get("CAM", codval); - cam.put("CODTAB", codval); - const int err = cam.read(_isgteq); - bool yes = err != NOERR; - if (!yes) - { - TString16 v = cam.get("CODTAB"); - - v.cut(3).rtrim(); - yes = v != codval; - } - if (yes) + if (cam.full()) m.set(F_CAMBIOINTRA, cache().get("%VAL", codval, "S4")); } } @@ -3891,71 +3885,74 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key) return true; } -void TPrimanota_application::write_righe_iva_f1(TMask& cg_msk, const shared_ptr& msk) + +void TPrimanota_application::write_righe_iva_f1(TMask& cg_msk, const TPro_msk & msk) { TSheet_field& sf = cg_msk.sfield(F_SHEETIVA); - const vector& righe = msk->get_righeiva(); - int i = 0; + const TString_array& righe = msk.get_righeiva(); - for (auto it = righe.begin(); it != righe.end(); ++it) + FOR_EACH_ARRAY_ITEM( righe, r, obj) { - if(it->imponibile != 0 || it->imposta != 0) - { - TToken_string& row = sf.row(i); + TToken_string & riga = STRING_TOKEN(obj); + const real imponibile = riga.get_real(FPRI_IMPONIBILE); + const real imposta = riga.get_real(FPRI_IMPOSTA); - sf.notify(i, K_SPACE); - row.add(it->imponibile, cid2index(IVA_IMPONIBILE)); - row.add(it->imposta, cid2index(IVA_IMPOSTA)); - row.add(it->aliquota, cid2index(IVA_PERCIVA)); - row.add(it->natura, cid2index(IVA_NATURIVA)); - sf.notify(i, K_ENTER); - i++; + if(imponibile != ZERO || imposta != ZERO) + { + TToken_string& row = sf.row(r); + + sf.notify(r, K_SPACE); + sf.set_row_cell(IVA_IMPONIBILE, imponibile, r); + sf.set_row_cell(IVA_IMPOSTA, imposta, r); + sf.set_row_cell(IVA_PERCIVA, riga.get(FPRI_ALIQUOTA), r); + sf.set_row_cell(IVA_NATURIVA, riga.get(FPRI_NATURA), r); + sf.notify(r, K_ENTER); } } } -bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const shared_ptr& msk) +bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const TPro_msk & msk) { TSheet_field& sf = cg_msk.sfield(FS_RATESHEET); const int items = sf.items(); - const vector& righe = msk->get_scadenze(); - int i = 0; + const TString_array & righe = msk.get_scadenze(); - for (auto it = righe.begin(); it != righe.end(); ++it, ++i) + FOR_EACH_ARRAY_ITEM(righe, r, obj) { - TToken_string& row = app().pags().row(i); + TToken_string& row = app().pags().row(r); + TToken_string & riga = STRING_TOKEN(obj); - if(i >= items) - pag_notify(sf, i, K_CTRL+K_INS); - pag_notify(sf, i, K_SPACE); - row.add(it->data, cid2index(101)); - row.add(it->importo, cid2index(102)); - pag_notify(sf, i, K_ENTER); + if (r >= items) + pag_notify(sf, r, K_CTRL+K_INS); + pag_notify(sf, r, K_SPACE); + sf.set_row_cell(101, riga.get_date(FPSC_DATA), r); + sf.set_row_cell(102, riga.get_real(FPSC_IMPORTO), r); + pag_notify(sf, r, K_ENTER); } - return !righe.empty(); + return righe.items() > 0; } -void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr& msk) +void TPrimanota_application::write_clifo(TMask& cg_msk, const TPro_msk & msk) { bool ok = false; TLocalisamfile clifo(LF_CLIFO); - TToken_string keys(msk->get_fpprokeys(), ';'); - TString codforn = TFppro(keys).get_codforn(); + TToken_string keys(msk.get_fpprokeys(), ';'); + long codforn = TFppro(keys).get_codforn(); - if (codforn.empty()) - codforn = msk->get_codforn(); - if (codforn.empty()) + if (codforn == 0L) + codforn = msk.get_codforn(); + if (codforn == 0L) { clifo.setkey(5); clifo.put(CLI_TIPOCF, "F"); - clifo.put(CLI_PAIV, msk->get_piva()); + clifo.put(CLI_PAIV, msk.get_piva()); clifo.read(); - ok = clifo.get(CLI_PAIV) == msk->get_piva(); + ok = clifo.get(CLI_PAIV) == msk.get_piva(); if(!ok) { clifo.zero(); clifo.setkey(5); clifo.put(CLI_TIPOCF, "F"); - clifo.put(CLI_PAIV, msk->get_piva()); + clifo.put(CLI_PAIV, msk.get_piva()); clifo.put(CLI_STATOPAIV, "IT"); clifo.read(); } @@ -3967,8 +3964,8 @@ void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptrget_piva(); - if (ok && (cg_msk.get(F_CODCLIFOR).empty() || cg_msk.get(F_CODCLIFOR) != codforn)) + ok = clifo.get(CLI_PAIV) == msk.get_piva(); + if (ok && (cg_msk.get_long(F_CODCLIFOR) == 0 || cg_msk.get_long(F_CODCLIFOR) != codforn)) { cg_msk.set(F_CODCLIFOR, clifo.get(CLI_CODCF)); cg_msk.set(F_RAGSOCCF, clifo.get(CLI_RAGSOC)); @@ -3976,20 +3973,21 @@ void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr& msk) +void TPrimanota_application::set_totale(TMask& cg_msk, TPro_msk & msk) { - real totale = msk->get_totdoc(); + real totale = msk.get_totdoc(); - if(totale == ZERO) + if (totale == ZERO) totale = app().calcola_imp(); - const real rit = msk->get_ritenute(); + const real rit = msk.get_ritenute(); if (rit != ZERO) { @@ -3997,18 +3995,19 @@ void TPrimanota_application::set_totale(TMask& cg_msk, const shared_ptris_doc_split()) - totale = msk->get_tot_imp_riva(); + else + if (msk.is_doc_split()) + totale = msk.get_tot_imp_riva(); cg_msk.set(F_TOTALE, totale); } -void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, const shared_ptr& msk) +void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, TPro_msk & msk) { - const bool bring = msk->should_bring_back(); + const bool bring = msk.da_riportare(); if (bring) { - if (msk->get_numdoc().full() && cg_msk.get(F_CODCLIFOR).empty()) + if (msk.get_numdoc() != 0L && cg_msk.get(F_CODCLIFOR).empty()) write_clifo(cg_msk, msk); write_righe_iva_f1(cg_msk, msk); set_totale(cg_msk, msk); @@ -4019,57 +4018,57 @@ void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, const shared_ptrget_numdoc()); - cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7)); + + cg_msk.set(F_NUMDOCEXT, format("%ld", msk.get_numdoc())); + cg_msk.set(F_NUMDOC, format("%-7ld", msk.get_numdoc())); } if (bring || cg_msk.get(F_DATADOC).empty()) - cg_msk.set(F_DATADOC, msk->get_datadoc()); + cg_msk.set(F_DATADOC, msk.get_datadoc()); } -void TPrimanota_application::insert_part_scad(TConfig& ini) +void TPrimanota_application::insert_part_scad(TConfig& ini) // che cazzo significa la partita 73/001 { - vector rif_doc; - int i = 0; - ini.set_paragraph("23"); + TArray rif_doc; + TString str = ini.get("NUMLINEA", "23", 0); // Carico nel vettore - while(true) + for (int i = 0; str.full(); str = ini.get("NUMLINEA", "23", ++i)) { TToken_string doc("", '|'); - TString str; str << ini.get("NUMLINEA", nullptr, i, "NULL"); - if (str != "NULL") - { - doc.add(str); - doc.add(ini.get("DOCRIF", nullptr, i, "NULL")); - doc.add(ini.get("DATADOCRIF", nullptr, i, "NULL")); - rif_doc.insert(rif_doc.end(), doc); - i++; - } - else - break; + doc.add(str); + doc.add(ini.get("DOCRIF", "23", i)); + doc.add(ini.get("DATADOCRIF", "23", i)); + rif_doc.add(doc); } // Agganciare alla partita del documento di riferimento - if(!rif_doc.empty()) + if(rif_doc.items() > 0) { is_f1() = true; TString query; query << "USE MOV\nSELECT (DATADOC==#DATADOC)"; TISAM_recordset rec(query); - rec.set_var("#DATADOC", TVariant(TDate(rif_doc[0].get(2)))); TString part; - do - { - if (rec.get(MOV_NUMDOC).as_string() == "73/001") - { - part = rec.get(MOV_PROTIVA).as_string(); - break; - } - } while (rec.move_next()); - num_doc_rif() = part; + FOR_EACH_ARRAY_ITEM(rif_doc, r, _obj) + { + if (part.blank()) + { + rec.set_var("#DATADOC", ((TToken_string&)rif_doc[0]).get_date(2)); + + for (bool ok = rec.move_first(); ok; ok = rec.move_next()) + { + if (rec.get_string(MOV_NUMDOC) == "73/001") + { + part = rec.get_string(MOV_PROTIVA); + break; + } + } while (rec.move_next()); + } + } + _num_doc_rif_partite = part; } } @@ -4080,9 +4079,10 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key) if (!app().has_module(FPAUT) || key != K_SPACE && key != K_TAB || !check_causale(cg_msk.get(F_CODCAUS))) return true; - auto msk = std::make_shared(cg_msk); - - app()._pro_mask = msk; + TPro_msk * msk = app()._pro_mask; + + if (msk == nullptr) + app()._pro_mask = msk = new TPro_msk(cg_msk); const TString datadoc = cg_msk.get(F_DATADOC); @@ -4092,16 +4092,13 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key) msk->field(F_DATESEARCH).show(); msk->set(F_DATESEARCH, datadoc); } - if (msk->load_fppro_mask(msk.get())) - { - msk->run(); - // Riporto dati FPPRO su maschera Prima Nota (solo se hai F1) - // Se non hai F1 collego senza riportarti i dati (solo le chiavi db) - riporta_dati_f1(cg_msk, msk); - cg_msk.set(F_PROKEY, msk->get_fpprokeys()); - is_collegato(cg_msk.field(F_COLFPPRO)); - cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA)); - } + msk->run(); + // Riporto dati FPPRO su maschera Prima Nota (solo se hai F1) + // Se non hai F1 collego senza riportarti i dati (solo le chiavi db) + riporta_dati_f1(cg_msk, *msk); + cg_msk.set(F_PROKEY, msk->get_fpprokeys()); + is_collegato(cg_msk.field(F_COLFPPRO)); + cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA)); return true; } @@ -4150,91 +4147,77 @@ bool TPrimanota_application::is_collegato(TMask_field& f) return has_prokey; } -bool TPro_msk::load_fppro_mask(TMask* msk, KEY k) +bool TPro_msk::load_fppro_mask(TMask & msk) { // Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP - if (k != 32) - return false; if (!fp_db().sq_is_connect()) { message_box("Attenzione connessione al database non riuscita.\nImpossibile collegarsi ai documenti in entrata."); return false; } - const int forn = msk->get_int(F_CODCLIFORS); + const int forn = msk.get_int(F_CODCLIFORS); if (forn == 0) { - msk->set(F_ENABSEARCH, "X"); - abilita_piva(msk); + msk.set(F_ENABSEARCH, "X"); + abilita_piva(); //message_box("Inserire prima il fornitore"); //return false; } - const TString& codfisc = msk->get(F_COFIS); - const TString& stato_piva = msk->get(F_STATOPAIVS); - const TString& piva = msk->get(F_PIVAS); + const TString& codfisc = msk.get(F_COFIS); + const TString& stato_piva = msk.get(F_STATOPAIVS); + const TString& piva = msk.get(F_PIVAS); TString query; - TString date = ""; + TDate date; - if (msk->get_bool(F_ENABDATE)) - date = msk->get_date(F_DATESEARCH); - if(!msk->get_bool(F_ENABSEARCH)) - query = query_fppro(msk->get(F_CODCLIFORS), date); + if (msk.get_bool(F_ENABDATE)) + date = msk.get_date(F_DATESEARCH); + if(!msk.get_bool(F_ENABSEARCH)) + query = query_fppro(msk.get(F_CODCLIFORS), date); else query = query_fppro(stato_piva, piva, date); fp_db().sq_set_exec(query, false); - TSheet_field& sf = msk->sfield(F_SHEETFPPROS); + TSheet_field& sf = msk.sfield(F_SHEETFPPROS); + const bool show_all = msk.get_bool(F_SHOWALL); - sf.hide(); - if (sf.items() > 0) - sf.destroy(); + sf.reset(); while (fp_db().sq_next()) { - TString numreg = fp_db().sq_get("PZ_NUMREGCONT"); - const bool show_all = msk->get_bool(F_SHOWALL); + const long numreg = fp_db().sq_get_long("PZ_NUMREGCONT"); - if (numreg != "0" && !show_all) - continue; + if (show_all || numreg == 0L) + { + TToken_string keys(fp_db().sq_get("PZ_KEYPRGINVIO"), ';'); - TToken_string& row = sf.row(-1); - TToken_string keys(fp_db().sq_get("PZ_KEYPRGINVIO"), ';'); + keys.add(fp_db().sq_get("PZ_KEYHEADERFATT")); keys.add(fp_db().sq_get("PZ_KEYBODYFATT")); - keys.add(fp_db().sq_get("PZ_KEYHEADERFATT")); keys.add(fp_db().sq_get("PZ_KEYBODYFATT")); - row.add("", 0); - row.add(fp_db().sq_get("P7_TIPODOC")); - row.add(TDate(fp_db().sq_get_date("P1_DATAORARIC"))); - row.add(TDate(fp_db().sq_get_date("PZ_DATA"))); - row.add(fp_db().sq_get("PQ_IMPTOTDOC")); - row.add(fppro_db().set_keys(keys).get_ritenute()); - row.add(fp_db().sq_get("PZ_NUMERO")); - row.add(fp_db().sq_get("P2_ANADENOMIN")); - row.add(fp_db().sq_get("P2_FISCIVAPAESE")); - row.add(fp_db().sq_get("P2_FISCIVACOD")); - row.add(fp_db().sq_get("P2_CODFISCALE")); - row.add(fp_db().sq_get("PZ_TIPOPROT")); - row.add(fp_db().sq_get("PZ_NUMPROT")); - row.add(keys); + const int r = sf.set_row_cell(F_SELFPPROS, ""); + + sf.set_row_cell(F_TIPODOCS, fp_db().sq_get("P7_TIPODOC"), r); + sf.set_row_cell(F_DATAORARICS, fp_db().sq_get_date("P1_DATAORARIC"), r); + sf.set_row_cell(F_DATAS, fp_db().sq_get_date("PZ_DATA"), r); + sf.set_row_cell(F_IMPTOTDOCS, fp_db().sq_get("PQ_IMPTOTDOC"), r); + sf.set_row_cell(F_RITENUTE, fppro_db().set_keys(keys).get_ritenute(), r); + sf.set_row_cell(F_NUMEROS, fp_db().sq_get("PZ_NUMERO"), r); + sf.set_row_cell(F_RAGXML, fp_db().sq_get("P2_ANADENOMIN"), r); + sf.set_row_cell(F_FISCIVAPAESES, fp_db().sq_get("P2_FISCIVAPAESE"), r); + sf.set_row_cell(F_FISCIVACODS, fp_db().sq_get("P2_FISCIVACOD"), r); + sf.set_row_cell(F_CODFISCALES, fp_db().sq_get("P2_CODFISCALE"), r); + sf.set_row_cell(F_TIPOPROTS, fp_db().sq_get("PZ_TIPOPROT"), r); + sf.set_row_cell(F_PROGRESSS, fp_db().sq_get("PZ_NUMPROT"), r); + sf.set_row_cell(F_KEYFPPROS, keys, r); + } } sf.force_update(); - sf.show(); return true; } -bool TPro_msk::fppro_handler(TMask_field& f, KEY k) +bool TPro_msk::riporta(TMask_field& f) { TMask& msk = f.mask(); - - const bool load = load_fppro_mask(&msk, k); - return load; -} - -bool TPro_msk::riporta_handler(TMask_field& f, KEY k) -{ - if (k != 32) - return true; - TMask& msk = f.mask(); //if (msk.curr_page() != 3) //return true; bool ok = false; @@ -4242,16 +4225,10 @@ bool TPro_msk::riporta_handler(TMask_field& f, KEY k) FOR_EACH_SHEET_ROW(sf, nr, row) { - if(*row->get(0) == 'X') + if(row->get_bool(0)) { - //TProtocollo protocollo(TDate(row->get(2)).year(), row->get(9), row->get(10)); - app()._pro_mask->set_doc(row->get(cid2index(F_NUMEROS)), row->get(cid2index(F_DATAS)), - row->get(cid2index(F_IMPTOTDOCS)), row->get(cid2index(F_RITENUTE)), "", row->get(cid2index(F_KEYFPPROS)), - msk.get(F_CODCLIFORS), row->get(cid2index(F_FISCIVACODS))); - if (f.dlg() == DLG_OK) - app()._pro_mask->_riporta = true; - else - app()._pro_mask->_riporta = false; + app().pro_mask()->set_doc(sf, nr); + _riporta = f.dlg() == DLG_OK; ok = true; break; } @@ -4265,67 +4242,56 @@ bool TPro_msk::riporta_handler(TMask_field& f, KEY k) return true; } -bool TPro_msk::collega_handler(TMask_field& f, KEY k) -{ - return riporta_handler(f, k); -} - -bool TPro_msk::piva_handler(TMask_field& f, KEY k) -{ - TMask& msk = f.mask(); - bool ok = true; - - if(k == K_TAB && f.active() && f.focusdirty()) - { - ok = load_fppro_mask(&msk, K_SPACE); - } - return ok; -} - -bool TPro_msk::date_handler(TMask_field& f, KEY k) -{ - TMask& msk = f.mask(); - bool ok = true; - - if (k == K_TAB && f.active() && f.focusdirty()) - { - ok = load_fppro_mask(&msk, K_SPACE); - } - return ok; -} - void TPro_msk::fppro_selfatt() const { const TMask& mask = *this; TSheet_field& sf = mask.sfield(F_SHEETFPPROS); - sf.hide(); FOR_EACH_SHEET_ROW(sf, nr, row) - { - if (*row->get(0) == 'X') - row->add("", 0); - } + if (sf.get_bool_row_cell(nr, F_SELFPPROS)) + sf.set_row_cell(F_SELFPPROS, false, nr); sf.force_update(); - sf.show(); } bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) { + TMask & m = o.mask(); + switch (o.dlg()) { - case F_SELFPPROS: + case DLG_CONFIG: + if (e == fe_button) + load_fppro_mask(m); + break; + case DLG_OK: + if (e == fe_button) + riporta(o); + break; + case DLG_LINK: + if (e == fe_button) + riporta(o); + break; + case F_PIVAS: + if (e == fe_modify) + load_fppro_mask(m); + break; + case F_DATESEARCH: + if (e == fe_modify) + load_fppro_mask(m); + break; + case F_SELFPPROS: if (e == fe_modify) fppro_selfatt(); break; case F_SHOWALL: if (e == fe_modify) - load_fppro_mask(this, K_SPACE); + load_fppro_mask(m); break; case F_ENABSEARCH: if (e == fe_modify) { - abilita_piva(this); - load_fppro_mask(this); + abilita_piva(); + load_fppro_mask(m); } break; case F_ENABDATE: @@ -4333,7 +4299,7 @@ bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) { field(F_DATESEARCH).show(o.mask().get_bool(F_ENABDATE)); if (!o.mask().get_bool(F_ENABDATE)) - load_fppro_mask(this); + load_fppro_mask(m); } break; default: @@ -4344,9 +4310,11 @@ bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TPro_msk::is_doc_split() { - for(riga_iva_s const& riga : _righe_iva) + FOR_EACH_ARRAY_ITEM(_righe_iva, r, obj) { - if (riga.esigibilita == 'S') + TToken_string & riga = STRING_TOKEN(obj); + + if (riga.get(FPRI_ESIGIBILITA) == "S") return true; } return false; @@ -4383,53 +4351,70 @@ void TPro_msk::set_scadenze(const char* fpprokeys) } } -void TPro_msk::set_doc(const char* numero, const char* datadoc, const char* totdoc, const char* ritenute, const char* protfppro, const char* fpprokeys, const char* codforn, const char* piva) +void TPro_msk::set_doc(TSheet_field & s, int nrow) + //long numero, TDate datadoc, real totdoc, real ritenute, const char* protfppro, const char* fpprokeys, long codforn, const char* piva) { - _numero = numero; - _datadoc = datadoc; - _totdoc = abs(totdoc); - _ritenute = ritenute; - _protfppro.sset(protfppro); + _numero = s.get_long_row_cell(nrow, F_NUMEROS); + _datadoc = s.get_date_row_cell(nrow, F_DATAS); + _totdoc = abs(s.get_real_row_cell(nrow, F_IMPTOTDOCS)); + _ritenute = s.get_real_row_cell(nrow, F_RITENUTE); + _protfppro.sset(""); + + const TString & fpprokeys = s.get_str_row_cell(nrow, F_KEYFPPROS); + _fpprokeys = fpprokeys; - _codforn = codforn; - _piva = piva; - set_righeiva(fpprokeys); - set_scadenze(fpprokeys); + set_righeiva(fpprokeys); + set_scadenze(fpprokeys); + _codforn = s.get_long_row_cell(nrow, F_CODCLIFORS); + _piva = s.get_str_row_cell(nrow, F_FISCIVACODS); + } real TPro_msk::get_tot_imp_riva() { - real tot = ZERO; + real tot; - for(riga_iva_s const& riga : _righe_iva) + FOR_EACH_ARRAY_ITEM(_righe_iva, r, obj) { - if (riga.imposta > ZERO) - tot += riga.imponibile; + TToken_string & riga = STRING_TOKEN(obj); + + tot += riga.get_real(FPRI_IMPONIBILE); } return tot; } void TPro_msk::add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib) { - _righe_iva.insert(_righe_iva.end(), { imponibile, imposta, aliquota, natura, esigib }); + TToken_string riga; + + riga.add(imponibile, FPRI_IMPONIBILE); + riga.add(imposta, FPRI_IMPOSTA); + riga.add(aliquota, FPRI_ALIQUOTA); + riga.add(natura, FPRI_NATURA); + riga.add(esigib, FPRI_ESIGIBILITA); + _righe_iva.add(riga); } void TPro_msk::add_scad(const TDate& date, const real& importo) { - _scadenze.insert(_scadenze.end(), { date, importo }); + TToken_string riga; + + riga.add(date, FPSC_DATA); + riga.add(importo, FPSC_IMPORTO); + _scadenze.add(riga); } -TString& TPro_msk::query_fppro(const TString& codforn, const TString& date) +TString& TPro_msk::query_fppro(const TString& codforn, const TDate& date) { return query_fppro(codforn, "", "", "", date, "", "", "", true, false); } -TString& TPro_msk::query_fppro(const TString& stato_piva, const TString& piva, const TString& date) +TString& TPro_msk::query_fppro(const TString& stato_piva, const TString& piva, const TDate& date) { return query_fppro("", stato_piva, piva, "", date, "", "", "", true, true); } -TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order, bool piva_research) +TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TDate& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order, bool piva_research) { TString id_fornitore; TString keys; @@ -4453,14 +4438,15 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva id_fornitore << " (PZ_CLIFOR = '" << codforn << "') "; } - static TString query; - query.cut(0) << query_string() << "WHERE "; + TString & query = query_string(); + + query << "WHERE "; if (!id_fornitore.empty()) { query << id_fornitore << " "; - if (!date.empty()) - query << " AND PZ_DATA = '" << TDate(date).date2ansi() << "' "; + if (date.ok()) + query << " AND PZ_DATA = '" << date.date2ansi() << "' "; if (order) query << "\nORDER BY P1_DATAORARIC ASC"; query << ";"; @@ -4472,9 +4458,9 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva query << " AND " << where_str; query << ";"; } - else if (!date.empty()) + else if (date.ok()) { - query << " PZ_DATA = '" << TDate(date).date2ansi() << "' "; + query << " PZ_DATA = '" << date.date2ansi() << "' "; if (order) query << "\nORDER BY P1_DATAORARIC ASC, PZ_TIPOPROT ASC, PZ_NUMPROT ASC"; query << ";"; @@ -4489,47 +4475,37 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva TString& TPro_msk::query_string() { - static TString query; + TString & query = get_tmp_string(512); - query.cut(0) << "SELECT PZ_CLIFOR, PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, P7_TIPODOC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, " << - "PZ_NUMPROT, P2_ANADENOMIN, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" << - "FROM PAA0200F \nJOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" << - "JOIN PAA0100F \nON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_KEYBODYFATT\n" << - "JOIN PAA2700F \nON P2_KEYPRGINVIO = PQ_KEYPRGINVIO AND P2_KEYHEADERFATT = PQ_KEYHEADERFATT AND P2_KEYBODYFATT = PQ_KEYBODYFATT\n" << - "JOIN PAA0700F \nON P7_KEYPRGINVIO = PQ_KEYPRGINVIO AND P7_KEYHEADERFATT = PQ_KEYHEADERFATT AND P7_KEYBODYFATT = PQ_KEYBODYFATT\n"; + query << "SELECT PZ_CLIFOR, PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, P7_TIPODOC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, " << + "PZ_NUMPROT, P2_ANADENOMIN, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" << + "FROM PAA0200F \nJOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" << + "JOIN PAA0100F \nON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_KEYBODYFATT\n" << + "JOIN PAA2700F \nON P2_KEYPRGINVIO = PQ_KEYPRGINVIO AND P2_KEYHEADERFATT = PQ_KEYHEADERFATT AND P2_KEYBODYFATT = PQ_KEYBODYFATT\n" << + "JOIN PAA0700F \nON P7_KEYPRGINVIO = PQ_KEYPRGINVIO AND P7_KEYHEADERFATT = PQ_KEYHEADERFATT AND P7_KEYBODYFATT = PQ_KEYBODYFATT\n"; return query; } -void TPro_msk::abilita_piva(TMask* msk) +void TPro_msk::abilita_piva() { - if (msk->get_bool(F_ENABSEARCH)) - { - msk->enable(F_PIVAS); - msk->enable(F_STATOPAIVS); - } - else - { - msk->enable(F_PIVAS, false); - msk->enable(F_STATOPAIVS, false); - } + const bool on = get_bool(F_ENABSEARCH); + + enable(F_PIVAS, on); + enable(F_STATOPAIVS, on); + enable(F_COFIS, on); } -TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2100t"), _riporta(false), _codforn("") +TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2100t"), _riporta(false), _codforn(0L), _numero(0L) { - TMask::set_handler(DLG_CONFIG, fppro_handler); - TMask::set_handler(DLG_OK, riporta_handler); - if (!app().has_module(F1AUT)) - field(DLG_OK).disable(); - TMask::set_handler(DLG_LINK, collega_handler); - TMask::set_handler(F_PIVAS, piva_handler); - TMask::set_handler(F_DATESEARCH, date_handler); - TMask::set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR)); - TMask::set(F_COFIS, cg_msk.get(F_COFI)); - TMask::set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV)); - TMask::set(F_PIVAS, cg_msk.get(F_PIVA)); - TMask::set(F_RAGSOCS, cg_msk.get(F_RAGSOCCF)); + enable(DLG_OK, app().has_module(F1AUT)); + set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR)); + set(F_COFIS, cg_msk.get(F_COFI)); + set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV)); + set(F_PIVAS, cg_msk.get(F_PIVA)); + set(F_RAGSOCS, cg_msk.get(F_RAGSOCCF)); set(F_DATESEARCH, TDate(TODAY)); - _righe_iva.clear(); + _righe_iva.destroy(); + _scadenze.destroy(); } bool& is_f1() @@ -4538,8 +4514,3 @@ bool& is_f1() return is_f1; } -TString& num_doc_rif() -{ - static TString num_doc_rif_partite = -1; - return num_doc_rif_partite; -} \ No newline at end of file diff --git a/src/cg/cg2102.h b/src/cg/cg2102.h index e9cc2cd3e..8e3c88aa9 100755 --- a/src/cg/cg2102.h +++ b/src/cg/cg2102.h @@ -27,15 +27,76 @@ #include #include "../f1/f1lib.h" -#include -#define K_ELIMMAS 0 // Key per eliminazione massima +#define K_ELIMMAS 0 // Key per eliminazione massima + +#define FPRI_IMPONIBILE 0 +#define FPRI_IMPOSTA 1 +#define FPRI_ALIQUOTA 2 +#define FPRI_NATURA 3 +#define FPRI_ESIGIBILITA 4 + +#define FPSC_DATA 0 +#define FPSC_IMPORTO 1 -class TPro_msk; class TDati_mov_auto; enum CGMaskType { _query = 0, _no_iva = 1, _iva = 2, _occas = 3}; +class TPro_msk : public TAutomask +{ + long _numero; + TDate _datadoc; + real _totdoc; + real _ritenute; + TProtocollo _protfppro; + TString _fpprokeys; + TString _piva; + long _codforn; + TString_array _righe_iva; + TString_array _scadenze; + bool _riporta; + + // Non permette la selezione multipla + void fppro_selfatt() const; + bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; +public: + bool da_riportare() const { return _riporta; } + bool is_doc_split() ; + + void set_righeiva(const char* fpprokeys); + void set_scadenze(const char* fpprokeys); + void set_doc(TSheet_field & s, int nrow); + + const long get_numdoc() const { return _numero; } + const TDate & get_datadoc() const { return _datadoc; } + const real & get_totdoc() const { return _totdoc; } + const real & get_ritenute() const { return _ritenute; } + const TString & get_fpprokeys() const { return _fpprokeys; } + const long get_codforn() const { return _codforn; } + const TString & get_piva() const { return _piva; } + const TString_array& get_righeiva() const { return _righe_iva; } + const TProtocollo& get_protocollo() const { return _protfppro; } + const TString_array& get_scadenze() const { return _scadenze; } + real get_tot_imp_riva() ; + + void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib); + void add_scad(const TDate& date, const real& importo); + + static TString& query_fppro(const TString& codforn, const TDate& date); + static TString& query_fppro(const TString& stato_piva, const TString& piva, const TDate& date); + static TString& query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TDate& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order = true, bool piva_research = false); + static TString& query_string(); + + void abilita_piva(); + + // Carica documenti FPPRO sulla maschera + bool riporta(TMask_field& f); + bool load_fppro_mask(TMask & msk); + + TPro_msk(TMask& cg_msk); +}; + class TPrimanota_application : public TRelation_application { TMovimentoPN* _rel; // Relazione principale @@ -90,11 +151,12 @@ class TPrimanota_application : public TRelation_application TAssoc_array _colori; // Colori delle righe bool _isf1; - shared_ptr _pro_mask; + TPro_msk * _pro_mask; bool _is_set_fpcheck; int _last_date; bool _f1_ini; bool _f1_liq; + TString _num_doc_rif_partite; friend class TPro_msk; static bool showpartite_handler(TMask_field& f, KEY k); @@ -180,11 +242,11 @@ class TPrimanota_application : public TRelation_application // Gestione F1 - static void write_righe_iva_f1(TMask& cg_msk, const shared_ptr& msk); - static bool write_scad_f1(const TMask& cg_msk, const shared_ptr& msk); - static void write_clifo(TMask& cg_msk, const shared_ptr& msk); - static void set_totale(TMask& cg_msk, const shared_ptr& msk); - static void riporta_dati_f1(TMask& cg_msk, const shared_ptr& msk); + static void write_righe_iva_f1(TMask& cg_msk, const TPro_msk & msk); + static bool write_scad_f1(const TMask& cg_msk, const TPro_msk & msk); + static void write_clifo(TMask& cg_msk, const TPro_msk & msk); + static void set_totale(TMask& cg_msk, TPro_msk & msk); + static void riporta_dati_f1(TMask& cg_msk, TPro_msk & msk); void insert_part_scad(TConfig& ini); // Handlers per aggancio FPPRO // Bottone per maschera FPPRO @@ -222,9 +284,10 @@ protected: // TApplication static bool scollega(bool set = false); // Pulisce il mov e db dai firerimenti FPPRO (in MODE_MOD per edit/delete) void clean_fppro(); - // setta variabili prima del controllo has_f1_db - void set_has_f1_db(TMask* m); - bool has_f1_db(TMask* m); + // Ha f1 ? + bool has_f1() const; + // controlla il db + bool has_f1_db(const TMask & m); // Controlli prima di write e rewrite int controlli_f1(const TMask& m); @@ -320,8 +383,8 @@ protected: real calcola_imp() const; void add_cgs_tot(TMask& m); - int set_cgs_row(int n, const TImporto& importo, const TBill& conto, const char* desc, char tipo, - const char* cms = nullptr, const char* fas = nullptr); + int set_cgs_row(int n, TImporto& importo, const TBill& conto, const char* desc, char tipo, + const char* cms = nullptr, const char* fas = nullptr); void set_cgs_imp(int n, const TImporto& importo); bool add_cgs_imp(int n, const TImporto& importo); bool sub_cgs_imp(int n, const TImporto& importo); @@ -399,97 +462,18 @@ public: TString_array& pag_rows() { return _pag_rows; } TImporto get_cgs_imp(int n) const; + TPro_msk * pro_mask() const { return _pro_mask; } TImporto imposte_split_pay() const; + const TString & num_doc_rif() const { return _num_doc_rif_partite; } TPrimanota_application(); - virtual ~TPrimanota_application() { } -}; - -class TPro_msk : public TAutomask -{ -public: - struct riga_iva_s; - struct scadenza_s; -private: - TString _numero; - TDate _datadoc; - real _totdoc; - real _ritenute; - TProtocollo _protfppro; - TString _fpprokeys; - TString _piva; - TString _codforn; - vector _righe_iva; - vector _scadenze; - bool _riporta; - - // Handlers per aggancio FPPRO - // Bottone carica documenti in maschera FPPRO - static bool fppro_handler(TMask_field& f, KEY k); - // Bottone riporta doc FPPRO in testata Prima Nota - static bool riporta_handler(TMask_field& f, KEY k); - static bool collega_handler(TMask_field& f, KEY k); - static bool piva_handler(TMask_field& f, KEY k); - static bool date_handler(TMask_field& f, KEY k); - // Non permette la selezione multipla - void fppro_selfatt() const; - bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; -public: - struct riga_iva_s - { - real imponibile; - real imposta; - real aliquota; - TString4 natura; - char esigibilita; - }; - struct scadenza_s - { - TDate data; - real importo; - }; - - bool should_bring_back() const { return _riporta; } - bool is_doc_split(); - - void set_righeiva(const char* fpprokeys); - void set_scadenze(const char* fpprokeys); - void set_doc(const char* numero, const char* datadoc, const char* totdoc, const char* ritenute, const char* protfppro, const char* fpprokeys, const char* codforn, const char* piva); - - TString get_numdoc() const { return _numero; } - TDate get_datadoc() const { return _datadoc; } - real get_totdoc() const { return _totdoc; } - real get_ritenute() const { return _ritenute; } - TString get_fpprokeys() const { return _fpprokeys; } - TString get_codforn() const { return _codforn; } - TString get_piva() const { return _piva; } - const vector& get_righeiva() const { return _righe_iva; } - TProtocollo& get_protocollo() { return _protfppro; } - vector& get_scadenze() { return _scadenze; } - real get_tot_imp_riva(); - - - void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib); - void add_scad(const TDate& date, const real& importo); - - - static TString& query_fppro(const TString& codforn, const TString& date); - static TString& query_fppro(const TString& stato_piva, const TString& piva, const TString& date); - static TString& query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order = true, bool piva_research = false); - static TString& query_string(); - - static void abilita_piva(TMask* msk); - - // Carica documenti FPPRO sulla maschera - static bool load_fppro_mask(TMask* msk, KEY k = 32); - - TPro_msk() = delete; - TPro_msk(TMask& cg_msk); + virtual ~TPrimanota_application() { safe_delete(_pro_mask); } }; bool& is_f1(); -TString& num_doc_rif(); + + #ifndef __EXTRA__ inline TPrimanota_application& app() diff --git a/src/cg/cg2104.cpp b/src/cg/cg2104.cpp index 1db3a0a1b..e2b265ea0 100755 --- a/src/cg/cg2104.cpp +++ b/src/cg/cg2104.cpp @@ -329,7 +329,7 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key) TMask& m = f.mask(); TPrimanota_application& a = app(); const bool set_scad = a.is_fattura() && m.page_enabled(2); // E' attiva pagina 3 - if (key == K_ENTER && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back()))) + if (key == K_ENTER && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare()))) { if (set_scad && f.empty()) { @@ -356,7 +356,7 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key) } } - if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back()))) + if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare()))) a.set_scadenze(m); return ok; @@ -1227,8 +1227,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa // Aggiornamento contopartita const TImporto old_importo(controsez, old_pag.get_real(PAGSCA_IMPORTO)); TBill old_conto; old_conto.get(old_pag, true); - - const TImporto new_importo(controsez, new_pag.get_real(PAGSCA_IMPORTO)); + TImporto new_importo(controsez, new_pag.get_real(PAGSCA_IMPORTO)); if (old_importo != new_importo || old_conto != new_conto) { @@ -1298,7 +1297,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa const real new_ritenute(new_pag.get(PAGSCA_RITENUTE)); if (old_ritenute != new_ritenute) { - const TImporto grow_ritenute(causale().sezione_ritfis(), new_ritenute - old_ritenute); + TImporto grow_ritenute(causale().sezione_ritfis(), new_ritenute - old_ritenute); const int riga = type2pos(cgrowtype_ritfis); if (riga < 0) @@ -1319,7 +1318,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa const real new_ritsoc(new_pag.get(PAGSCA_RITSOC)); if (old_ritsoc != new_ritsoc) { - const TImporto grow_ritenute(causale().sezione_ritsoc(), new_ritsoc-old_ritsoc); + TImporto grow_ritenute(causale().sezione_ritsoc(), new_ritsoc-old_ritsoc); const int riga = type2pos(cgrowtype_ritsoc); if (riga < 0) diff --git a/src/cg/cg2105.cpp b/src/cg/cg2105.cpp index 7d10dc39d..34be2e796 100755 --- a/src/cg/cg2105.cpp +++ b/src/cg/cg2105.cpp @@ -920,12 +920,9 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k) TToken_string& row = partite.row(r); const int anno = row.get_int(0); // Anno partita TNumero_partita num = row.get(); // Numero partita - if(is_f1()) - { - TNumero_partita prev = num; - if ((num = num_doc_rif()) == -1) - num = prev; - } + + if (is_f1() && app().num_doc_rif().full()) + num = app().num_doc_rif(); gm.set(P_ANNO, anno); // Aggiorna campi di ricerca gm.set(P_NUMERO, num); diff --git a/src/cg/cg2300.cpp b/src/cg/cg2300.cpp index f772a5f6c..dab8ffdc3 100644 --- a/src/cg/cg2300.cpp +++ b/src/cg/cg2300.cpp @@ -8,7 +8,6 @@ #include "mov.h" #include #include "rmov.h" -#include #include "pconti.h" #define INI_ANNO "riep_anno" @@ -23,18 +22,15 @@ class TCompetenze_mask : public TAutomask int s_conto; real importo; }; - std::vector _regs; - std::vector _conts; + + TString_array _regs; + const char* get_ini(bool dataini) const; bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; - // Funzione becera di ordinamento del vettore _conts - void sort_conts(bool sort_by_imp = true); - static void swap_items(cont_contr_t* it, cont_contr_t* jt); - static bool is_minor_of(cont_contr_t* jt, cont_contr_t* it); - + static TString get_descr(int gruppo, int conto, int s_conto); void fill_contc(); void fill(); @@ -50,6 +46,44 @@ const char* TCompetenze_mask::get_ini(bool dataini) const return ini_get_string(CONFIG_DITTA, "cg", INI_MESE, ""); } + +static bool __sort_by_imp = false; + +static int sort_sheet(TSheet_field & s, int r1, int r2) +{ + int ret = 0; + + if (__sort_by_imp) + { + const real i1 = s.get_real_row_cell(r1, F_TOTCONTC); + const real i2 = s.get_real_row_cell(r2, F_TOTCONTC); + + if (i1 > i2) + ret = 1; + else + if (i2 > i1) + ret = -1; + } + else + { + ret = s.get_int_row_cell(r1, F_GRPCONTC) - s.get_int_row_cell(r2, F_GRPCONTC); + if (ret == 0) + ret = s.get_int_row_cell(r1, F_NUMCONTC) - s.get_int_row_cell(r2, F_NUMCONTC); + if (ret == 0) + { + const long s1 = s.get_long_row_cell(r1, F_SOTCONTC); + const real s2 = s.get_long_row_cell(r2, F_SOTCONTC); + + if (s1 > s2) + ret = 1; + else + if (s2 > s1) + ret = -1; + } + } + return ret; +} + bool TCompetenze_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) @@ -76,6 +110,16 @@ bool TCompetenze_mask::on_field_event(TOperable_field& o, TField_event e, long j case F_ANNO: if (e == fe_init) set(F_ANNO, get_ini(true)); break; + case F_ORDIN: + if (e == fe_init || e == fe_modify) + { + TSheet_field& sf = sfield(F_CONTC); + + __sort_by_imp = o.get_bool(); + sf.sort(sort_sheet); + sf.force_update(); + } + break; case F_MESE: if (e == fe_init) set(F_MESE, get_ini(false)); @@ -95,100 +139,66 @@ TString TCompetenze_mask::get_descr(int gruppo, int conto, int s_conto) return pcont.get(PCN_DESCR); } -bool TCompetenze_mask::is_minor_of(cont_contr_t* jt, cont_contr_t* it) -{ - return jt->gruppo < it->gruppo - || (jt->gruppo == it->gruppo && jt->conto < it->conto) - || (jt->gruppo == it->gruppo && jt->conto == it->conto - && jt->s_conto < it->s_conto); -} - -void TCompetenze_mask::swap_items(cont_contr_t* it, cont_contr_t* jt) -{ - const cont_contr_t appo = *it; - *it = *jt; - *jt = appo; -} - -void TCompetenze_mask::sort_conts(bool sort_by_imp) -{ - // Sopra 100 rischia di essere leggermente lento? - if (1 < _conts.size() && _conts.size() < 100) - for (auto it = _conts.begin(); it != _conts.end(); ++it) - for (auto jt = (it+1); jt != _conts.end(); ++jt) - if (sort_by_imp && jt->importo > it->importo || !sort_by_imp && is_minor_of(&(*jt), &(*it))) - swap_items(&(*it), &(*jt)); -} - void TCompetenze_mask::fill_contc() { TSheet_field& sf = sfield(F_CONTC); - TLocalisamfile rmovs(LF_RMOV); + TAssoc_array conti; + real tot; - sf.hide(); sf.reset(); - _conts.clear(); // Per ogni registrazione - for (int i = 0; i < (int)_regs.size(); ++i) + FOR_EACH_ARRAY_ITEM(_regs, i, obj) { - const int numreg = _regs[i]; - rmovs.zero(); - rmovs.put(RMV_NUMREG, numreg); - rmovs.put(RMV_NUMRIG, 0); - int riga = 0; - if (rmovs.read()) - { + const long numreg = atol(STRING_TOKEN(obj)); + const TMovimento_contabile mov(numreg); + const TCausale & caus = cached_causale(mov.get(MOV_CODCAUS)); + const int rows = mov.cg_rows(); + // Per ogni riga della registrazione - for (; rmovs.get_int(RMV_NUMREG) == numreg; rmovs.next()) + for (int r = mov.is_IVA() ? 2 : 1; r <= rows; r++) + { + const TRectype & rmov = mov.cg(r); + const int gruppo = rmov.get_int(RMV_GRUPPO); + const int numcontc = rmov.get_int(RMV_CONTO); + const int s_conto = rmov.get_int(RMV_SOTTOCONTO); + const TString& tipocc = rmov.get(RMV_TIPOC); + const real importo = rmov.get_real(RMV_IMPORTO); + TString key; + + key.format("%03d|%03d|%06d", gruppo, numcontc, s_conto); + + if (tipocc.blank()) // Solo se il tipo di conto di contr. e' un conto, cioe' vuoto { - const int gruppo = rmovs.get_int(RMV_GRUPPOC); - const int numcontc = rmovs.get_int(RMV_CONTOC); - const int s_conto = rmovs.get_int(RMV_SOTTOCONTOC); - const TString& tipocc = rmovs.get(RMV_TIPOCC); - const real importo(rmovs.get(RMV_IMPORTO)); + // Cerco se ho già la chiave + real * tot = (real *)conti.objptr(key); - if (tipocc.blank()) // Solo se il tipo di conto di contr. e' un conto, cioe' vuoto - { - // Cerco se ho già la chiave - auto it = _conts.begin(); - for (; it != _conts.end(); ++it) - { - if (it->gruppo == gruppo - && it->conto == numcontc - && it->s_conto == s_conto) - break; - } - - if (it != _conts.end()) - it->importo += importo; - else - _conts.insert(_conts.end(), { gruppo, numcontc, s_conto, importo }); - } + if (tot == nullptr) + conti.add(key, tot = new real); + *tot += importo; } } } - - sort_conts(get(F_ORDIN) == "X"); - - real tot; tot = 0; - for (auto it = _conts.begin(); it != _conts.end(); ++it) - { - const int gruppo = it->gruppo; - const int conto = it->conto; - const int s_conto = it->s_conto; + + FOR_EACH_ASSOC_OBJECT(conti, i, k, o1) + { + TToken_string key = k; + const int gruppo = key.get_int(0); + const int conto = key.get_int(0); + const int s_conto = key.get_long(2); const TString& descr = get_descr(gruppo, conto, s_conto); + const real importo = *(real *)o1; + int r = sf.set_row_cell(F_GRPCONTC, gruppo); - TToken_string& row = sf.row(-1); - row.add(gruppo); - row.add(conto); - row.add(s_conto); - row.add(descr); - row.add(it->importo); - tot += it->importo; + sf.set_row_cell(F_NUMCONTC, conto, r); + sf.set_row_cell(F_SOTCONTC, s_conto, r); + + sf.set_row_cell(F_DESCRCON, descr, r); + sf.set_row_cell(F_TOTCONTC, importo, r); + tot += importo; } - sf.force_update(); - sf.show(); + sf.sort(sort_sheet); + sf.force_update(); set(F_TOT, tot); } @@ -198,42 +208,42 @@ void TCompetenze_mask::fill() const int anno = get_int(F_ANNO); const int mese = get_int(F_MESE); TSheet_field& sf = sfield(F_MOVS); - TLocalisamfile movs(LF_MOV); + TRectype from(LF_MOV); + TRectype to(LF_MOV); + TDate data(1, mese, anno); + + from.put(MOV_DATAREG, data); + data.set_end_month(); + to.put(MOV_DATAREG, data); + + TCursor c(new TRelation(LF_MOV), "", 2, &from, &to); + const int items = c.items(); - sf.hide(); sf.reset(); - _regs.clear(); - movs.setkey(2); - - const TDate dataini(1, mese, anno); - TDate dataend(dataini); dataend.set_end_month(); - movs.put(MOV_DATAREG, dataini); - if (movs.read() != NOERR) + _regs.destroy(); + for (c = 0L; c.pos() < items; ++c) { - for (; movs.next() == NOERR && movs.get_date(MOV_DATAREG) <= dataend; ) + const TRectype & mov = c.curr(); + const int month_liq = mov.get_int(MOV_MESELIQ); + const TDate datareg(mov.get(MOV_DATAREG)); + const TDate datacomp(mov.get(MOV_DATACOMP)); + + if (month_liq != 0) { - const int month_liq = movs.get_int(MOV_MESELIQ); - const TDate datareg(movs.get(MOV_DATAREG)); - const TDate datacomp(movs.get(MOV_DATACOMP)); + _regs.add(mov.get(MOV_NUMREG)); - if (month_liq != 0) - { - _regs.insert(_regs.end(), movs.get_int(MOV_NUMREG)); + int r = sf.set_row_cell(F_NUMREG, mov.get(MOV_NUMREG)); - TToken_string& row = sf.row(-1); - row.add(movs.get(MOV_NUMREG)); - row.add(datareg); - row.add(movs.get(MOV_DATADOC)); - row.add(TCausale(movs.get(MOV_CODCAUS)).tipo_doc()); - row.add(month_liq); - row.add(movs.get(MOV_NUMDOC)); - row.add(movs.get(MOV_PROTIVA)); - row.add(movs.get(MOV_DESCR)); - } + sf.set_row_cell(F_DATAREG, mov.get_date(MOV_DATAREG), r); + sf.set_row_cell(F_DATADOC, mov.get_date(MOV_DATADOC), r); + sf.set_row_cell(F_CODCAUS, mov.get(MOV_CODCAUS), r); + sf.set_row_cell(F_MESELIQ, month_liq, r); + sf.set_row_cell(F_NUMDOC, mov.get(MOV_NUMDOC), r); + sf.set_row_cell(F_PROTIVA, mov.get(MOV_PROTIVA), r); + sf.set_row_cell(F_DESCR, mov.get(MOV_DESCR), r); } } sf.force_update(); - sf.show(); fill_contc(); } diff --git a/src/cg/cg2300a.uml b/src/cg/cg2300a.uml index a0ca4e472..76f127352 100644 --- a/src/cg/cg2300a.uml +++ b/src/cg/cg2300a.uml @@ -118,7 +118,7 @@ END NUMBER F_MESELIQ 2 BEGIN - PROMPT 1 5 "Causale " + PROMPT 1 5 "Mese Liq." FLAGS "D" END diff --git a/src/cg/cg3100.cpp b/src/cg/cg3100.cpp index 23e4e6d32..cd7e9449f 100755 --- a/src/cg/cg3100.cpp +++ b/src/cg/cg3100.cpp @@ -68,7 +68,8 @@ class TListaMov_application : public TPrintapp int _ricser; bool _settata_prima_riga, _causale_gia_stampata,_mov_di_sola_iva; int _cur1,_cur2,_cur2b,_cur3,_cur4,_decidi,/*_tipod,*/_controllo_mov_errati; - int _numero_riga, _alleg, _tiporegistro, _scelta_stampa, _nr, _n; + int _numero_riga, _alleg, _scelta_stampa, _nr, _n; + tiporeg _tiporegistro; int _provvis; liste _tipo_lista; word _flags; @@ -116,7 +117,6 @@ public: bool RicercaDoc(const char* cod) const; const TString& SimboloValuta (const char* cod) const; const TString& DescrDoc(const char* cod) const; - const TString& AttivitaRegistro(const char * cod, int anno) const; TListaMov_application(char tipost); virtual ~TListaMov_application() {} @@ -427,19 +427,6 @@ const TString& TListaMov_application::SimboloValuta(const char* cod) const const TString& TListaMov_application::DescrDoc(const char* tipo) const { return cache().get(TAB_TPD, tipo, "S0"); } -const TString& TListaMov_application::AttivitaRegistro(const char* cod, int anno) const -{ - TString8 key; key.format("%04d%-3s", anno, cod); - return cache().get("REG", key, "S8"); -} - -HIDDEN int tipo_registro(const char* cod, int anno) -{ - TString8 codtab; codtab.format("%4d%-3s", anno, cod); - const TString& tipo_reg = cache().get("REG", codtab, "I0"); - return atoi(tipo_reg); -} - static bool between(const TString& code, const TString& mini, const TString& maxi) { if (mini.full() && code < mini) @@ -508,11 +495,11 @@ bool TListaMov_application::filter_func_fatture (const TRelation* rel) const int ann_reg = mov.get_int(MOV_ANNOIVA); const TString4 cod_reg = mov.get(MOV_REG); - const int tipo_reg = tipo_registro(cod_reg, ann_reg); + const tiporeg tipo_reg = cached_registro(cod_reg, ann_reg).tipo_registro(); // Considera solo iva acquisti o vendite - if (tipo_reg != 1 && tipo_reg != 2) - return FALSE; + if (tipo_reg != vendita && tipo_reg != acquisto) + return false; if (app()._annoes > 0) //anno esercizio specificato nella maschera { @@ -563,8 +550,10 @@ bool TListaMov_application::filter_func (const TRelation * rel) { const TString& cod_reg = mov.get(MOV_REG); const int ann_reg = mov.get_int(MOV_ANNOIVA); - const int tipo_reg = tipo_registro(cod_reg, ann_reg); - if (tipo_reg == 1 || tipo_reg == 2) + const tiporeg tipo_reg = cached_registro(cod_reg, ann_reg).tipo_registro(); + + // Considera solo iva acquisti o vendite + if (tipo_reg != vendita && tipo_reg != acquisto) return false; } @@ -653,9 +642,10 @@ void TListaMov_application::stampa_errori_rmov() else set_row(_nr++, FR("@11gCodice C/F non presente in Anagrafica")); if (_registro.not_empty()) //se su mov e' indicato il codice registro { - TRegistro rg (_registro, _ae); - const int tiporeg = rg.tipo(); - if ((tiporeg == 1 && t != 'C') || (tiporeg == 2 && t != 'F')) + const TRegistro & reg = cached_registro(_registro, _ae); + const tiporeg tipo = reg.tipo_registro(); + + if ((tipo == vendita && t != 'C') || (tipo == acquisto && t != 'F')) set_row(_nr++, FR("@11gTipo C/F non compatibile con tipo registro")); } } @@ -742,14 +732,14 @@ void TListaMov_application::stampa_errori_iva(int* nr, const TRigaiva& riva) const int tipocr = riva._tipocr; if (tipodet == 1 || tipodet == 3 || tipodet == 5 || tipodet == 9) - if (_tiporegistro != 2) + if (_tiporegistro != acquisto) set_row(++(*nr), FR("@11gCodice di indetraibilita' errato")); - if (_tiporegistro == 1) + if (_tiporegistro == vendita) if (tipocr != 0 && tipocr != 1 && tipocr != 4 && tipocr != 9) set_row(++(*nr), FR("@11gTipo costo/ricavo non valido")); - if (_tiporegistro == 2) + if (_tiporegistro == acquisto) if (tipocr != 0 && tipocr != 1 && tipocr != 2 && tipocr != 3 && tipocr != 5 && tipocr != 8 && tipocr != 9) set_row(++(*nr), FR("@11gTipo costo/ricavo non valido")); } @@ -809,11 +799,11 @@ void TListaMov_application::set_page(int file, int count) TString16 reg = current_cursor()->curr(LF_MOV).get(MOV_REG); int anno = current_cursor()->curr(LF_MOV).get_int(MOV_ANNOIVA); char prov = current_cursor()->curr(LF_MOV).get_char(MOV_PROVVIS); - int tipo = tipo_registro(reg, anno); - + const tiporeg tipo = cached_registro(reg, anno).tipo_registro(); TEsercizi_contabili esc; + esc.date2esc(data); // qui verificare - if ( (tipo == 1) || (tipo == 2) ) + if ( (tipo == vendita) || (tipo == acquisto) ) { set_row (_n, FR("@103greg @3s"),FLD(LF_MOV,MOV_REG)); set_row (_n, FR("@111gpr @5n"),FLD(LF_MOV,MOV_PROTIVA)); @@ -887,7 +877,8 @@ bool TListaMov_application::preprocess_page(int file,int counter) _codcf = curmov.get_long(MOV_CODCF); _numero = curmov.get_long(MOV_NUMREG); _codval = curmov.get(MOV_CODVALI); - _tiporegistro = tipo_registro(_registro, _anno); + _tiporegistro = cached_registro(_registro, _anno).tipo_registro(); + _causale_gia_stampata = FALSE; TEsercizi_contabili esc; @@ -1014,11 +1005,9 @@ bool TListaMov_application::preprocess_page(int file,int counter) _descr_causale = caus.get(CAU_DESCR); _alleg_causale = caus.get_bool(CAU_ALLEG); _tipodocumento = caus.get(CAU_TIPODOC); - - _tiporegistro = tipo_registro (_registro, _anno); - - if ((_tiporegistro != 1)&&(_tiporegistro != 2))//se si tratta di un movimento di sola prima nota - return TRUE; + _tiporegistro = cached_registro(_registro, _anno).tipo_registro(); + if ((_tiporegistro != vendita) && (_tiporegistro != acquisto))//se si tratta di un movimento di sola prima nota + return true; } } else if (file == LF_RMOV) @@ -1065,10 +1054,10 @@ bool TListaMov_application::preprocess_page(int file,int counter) _numr = curmov.get_long(MOV_NUMREG); _tipo_elenco = curmov.get(MOV_TIPO); _codcf = curmov.get_long(MOV_CODCF); - const int tiporeg = tipo_registro (codreg, anno); - const TString8 attreg = AttivitaRegistro (codreg, anno); + const tiporeg tiporeg = cached_registro(codreg, anno).tipo_registro(); + const TString8 attreg = cached_registro(codreg, anno).attivita(); - if (tiporeg == 1 || tiporeg == 2)//se si tratta di un movimento iva + if (tiporeg == vendita || tiporeg == acquisto)//se si tratta di un movimento iva { _tipoatt = TipoAttivita(attreg, get_firm()); _tipo_elenco = curmov.get(MOV_TIPO); @@ -1897,18 +1886,18 @@ bool TListaMov_application::segnala_errori_iva() return true; } if (tipodet == 1 || tipodet == 3 || tipodet == 5 || tipodet == 9) - if (_tiporegistro != 2) + if (_tiporegistro != acquisto) { rmoviva.readat(nrec); return true; } - if (_tiporegistro == 1) + if (_tiporegistro == vendita) if (tipocr != 0 && tipocr != 1 && tipocr != 4 && tipocr != 9) { rmoviva.readat(nrec); return true; } - if (_tiporegistro == 2) + if (_tiporegistro == acquisto) if (tipocr != 0 && tipocr != 1 && tipocr != 2 && tipocr != 3 && tipocr != 5 && tipocr != 8 && tipocr != 9) { rmoviva.readat(nrec); diff --git a/src/cg/cg3300.cpp b/src/cg/cg3300.cpp index 36182580b..d57bc2739 100755 --- a/src/cg/cg3300.cpp +++ b/src/cg/cg3300.cpp @@ -25,6 +25,7 @@ #include "cg3.h" #include "cg3300.h" +#include "cglib.h" #include "cg3300a.h" #include "cg3300b.h" @@ -469,18 +470,19 @@ void TStampa_allegati::ricalcola(int anno_dic) { pi.addstatus(1); - const int tiporeg = reg.get_int("I0"); - if ((tiporeg != 2) && (tiporeg != 1)) + const tiporeg tipo = cached_registro(reg).tipo_registro(); + + if ((tipo != acquisto) && (tipo != vendita)) continue; - if (tiporeg == 1) + if (tiporeg == vendita) { - bool sosp = reg.get_bool ("B0"); - if (sosp) continue; - vendite = TRUE; + if (cached_registro(reg).sospeso()) + continue; + vendite = true; } else - vendite = FALSE; + vendite = false; tipodoc = cau.get (CAU_TIPODOC); if (corrispettivo (tipodoc)) diff --git a/src/cg/cg3700.cpp b/src/cg/cg3700.cpp index 7978e2593..721fed667 100755 --- a/src/cg/cg3700.cpp +++ b/src/cg/cg3700.cpp @@ -84,7 +84,6 @@ class TLista_fatture : public TPrintapp protected: long select_firm_range(long from, long to); - int tiporeg(const TString& ); static bool mix_handler(TMask_field&, KEY); static bool date_handler(TMask_field&, KEY); static bool to_ditt_handler(TMask_field&, KEY); @@ -117,12 +116,6 @@ public: inline TLista_fatture& app() { return (TLista_fatture&) main_app(); } -int TLista_fatture::tiporeg(const TString& reg) -{ - TString8 s; s.format("%4d%-3s",_date_from.year(),(const char*)reg); - return atoi(cache().get("REG", s, "I0")); -} - bool TLista_fatture::filter_func1(const TRelation *r) { TLista_fatture& a = app(); @@ -144,8 +137,8 @@ bool TLista_fatture::filter_func1(const TRelation *r) if (riv.get(RMI_TIPODET).blank() || percind.is_zero()) return false; - const int tiporeg = a.tiporeg(rg); - if (tiporeg != 2) + const tiporeg tipo = cached_registro(rg).tipo_registro(); + if (tipo != acquisto) return false; } else // Tipo costo/ricavo @@ -443,8 +436,9 @@ bool TLista_fatture::preprocess_page(int file, int counter) if (_tipo == intra) { TString4 codiva = rec.get(RMI_CODIVA); - const int tipomov = tiporeg(mov.get(MOV_REG)); - if (tipomov == 2 && tipodet == 9) + const tiporeg tipomov = cached_registro(mov.get(MOV_REG)).tipo_registro(); + + if (tipomov == acquisto && tipodet == 9) codiva = "~A19"; // Speciale per acquisti indeducibili art. 19 const bool is_key = _intra_items.is_key(codiva); // Esiste l'elemento ? // Se si' allora prendi quello, altrimenti prendine uno nuovo @@ -469,8 +463,10 @@ bool TLista_fatture::preprocess_page(int file, int counter) _tot_iva += iva; _tp_imp += imp; _tp_iva += iva; - const int tipomov = tiporeg(mov.get(MOV_REG)); - if (_tipo == indetraibile && tipomov == 2 && tipodet > 0) + + const tiporeg tipomov = cached_registro(mov.get(MOV_REG)).tipo_registro(); + + if (_tipo == indetraibile && tipomov == acquisto && tipodet > 0) { TString4 codiva = rec.get(RMI_CODIVA); _Iva_item * iva_row = (_Iva_item *) _indetr.objptr(codiva); diff --git a/src/cg/cg4100.cpp b/src/cg/cg4100.cpp index 7719a25b1..f39d92366 100755 --- a/src/cg/cg4100.cpp +++ b/src/cg/cg4100.cpp @@ -24,7 +24,7 @@ #include #include -#include "cglib02.h" +#include "cglib.h" struct therec { @@ -89,7 +89,7 @@ bool CG4100_App::sort_sal() sal.set_anno_es(year); sal.clear_saldi(year); long numreg = 0L; - tiposal tsal = normale; + tiposal tsal = saldo_normale; char provvis; TDate datareg; @@ -127,20 +127,11 @@ bool CG4100_App::sort_sal() mov.put(MOV_NUMREG, numreg); mov.read(); CHECK(mov.good(),"Archivi movimenti e righe inconsistenti"); + const TString& codcaus = mov.get(MOV_CODCAUS); - // Tipo saldo normale per default - tsal = normale; - const TString& codcaus = mov.get(MOV_CODCAUS); - const TRectype& causale = cache().get(LF_CAUSALI, codcaus); - if (!causale.empty()) - { - const char ac = causale.get_char(CAU_MOVAP); - if (ac == 'A') - tsal = apertura; else - if (ac == 'C') - tsal = chiusura; - } - + tsal = saldo_normale; // Tipo saldo normale per default + if(codcaus.full()) + tsal = cached_causale(codcaus, year).tipo_saldo(); scaricato = mov.get_bool(MOV_SCARCON); provvis = mov.get_char(MOV_PROVVIS); datareg = mov.get_date(MOV_DATAREG); diff --git a/src/cg/cg4300.cpp b/src/cg/cg4300.cpp index 79b104bf5..f3980cc42 100755 --- a/src/cg/cg4300.cpp +++ b/src/cg/cg4300.cpp @@ -208,7 +208,6 @@ bool TLiquidazione_app::user_create() _lam = new TTable("LAM"); _pla = new TTable("%PLA"); _reg = new TTable("REG"); - _iva = new TTable("%IVA"); _del = new TTable("%DEL"); _mov = &_cur->file(LF_MOV); @@ -225,7 +224,6 @@ bool TLiquidazione_app::user_create() _pum_r = &(_pum->curr()); _pam_r = &(_pam->curr()); _pom_r = &(_pom->curr()); - _iva_r = &(_iva->curr()); _del_r = &(_del->curr()); _lam_r = &(_lam->curr()); _pla_r = &(_pla->curr()); diff --git a/src/cg/cg4300.h b/src/cg/cg4300.h index a9b1f7207..642eee98b 100755 --- a/src/cg/cg4300.h +++ b/src/cg/cg4300.h @@ -338,7 +338,6 @@ class TLiquidazione_app : public TPrint_application TTable* _pla; TTable* _ppa; TTable* _reg; - TTable* _iva; TTable* _del; // a reference rectype per file/table @@ -346,7 +345,6 @@ class TLiquidazione_app : public TPrint_application TRectype* _rmoviva_r; TRectype* _pcon_1_r; TRectype* _pcon_2_r; - TRectype* _iva_r; TRectype* _pim_r; TRectype* _pis_r; TRectype* _prm_r; @@ -622,7 +620,7 @@ public: bool look_pla(const char* a, bool create = false); bool look_ppa(int m, const char* a, int t, bool create = false); bool look_del(int month, int type, bool create = false); - bool look_iva(const char* cod); +// bool look_iva(const char* cod); bool look_reg(const char* reg); const TRectype & get_lia(long ditta = 0l, bool create = false, int anno = 0); const int put_lia(const TRectype & lia, bool re = true); diff --git a/src/cg/cg4301.cpp b/src/cg/cg4301.cpp index 58c0db47c..8dbb5ec89 100755 --- a/src/cg/cg4301.cpp +++ b/src/cg/cg4301.cpp @@ -1450,7 +1450,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & real nin_iva = ZERO; // imposta non incassati const TString4 codiva = _rmoviva->get(RMI_CODIVA); - TCodiceIVA civa(codiva); + const TCodiceIVA& civa = cached_codIVA(codiva); #ifdef DBG BREAK_DBG; @@ -1466,17 +1466,16 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & continue; } - look_iva(codiva); // da eliminare esso per evitare un problema di non lettura _iva ve eliminato - const TString4 tipoiva = _iva->get("S1"); - const TString4 tipoes_v = _iva->get("S2"); - const TString4 tipoes_a = _iva->get("S9"); - const int tipoagr = _iva->get_int("I4"); // 2/9/2015 was S4 - const int tipoag = _iva->get_int("S5"); - const int tipopla = _iva->get_int("S3"); - int isrimbinfr = _iva->get_bool("B3"); // vale per calcolo rimborso se ES o NI - const real perciva = _iva->get_real("R0") / CENTO; - int ivarimb = !_iva->get_bool("B4"); // non escluso calcolo rimb. per al. media - const bool den_prorata = _iva->get_bool("B7"); // denominatore prorata nel caso di calcolo pro rata con numeratore e denominatore + const TString4 tipoiva = civa.tipo(); + const TString4 tipoes_v = civa.IVA11_vendite(); + const TString4 tipoes_a = civa.IVA11_acquisti(); + const int tipoagr = civa.tipo_IVA_agricola(); // 2/9/2015 was S4 + const int tipoag = civa.tipo_agenzie_viaggio(); + const int tipopla = civa.tipo_plafond(); + int isrimbinfr = civa.codice_rimborso_infrannuale(); // vale per calcolo rimborso se ES o NI + const real perciva = civa.moltiplicatore_percentuale(); + int ivarimb = !civa.escluso_dal_rimborso(); // non escluso calcolo rimb. per al. media + const bool den_prorata = civa.tipo_IVA_agricola(); // denominatore prorata nel caso di calcolo pro rata con numeratore e denominatore const TString4 tipocr_s = _rmoviva->get(RMI_TIPOCR); const int tipocr = atoi(tipocr_s); @@ -1559,7 +1558,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & sezfat = tipomov == vendita ? 'D' : 'A'; - if (is_detr_diff == 1 || civa.tipo() == "NS") + if (is_detr_diff == 1 || civa.iva_non_soggetta()) continue; if (bIsMovDiff && tm == tm_fattura) { @@ -2221,8 +2220,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & if (_pcon_1_r->get_int(PCN_INDBIL) == 4) if (_cur->is_first_match(-AGR_PCON2)) // Esiste il sottoconto ? { - if (look_iva(_pcon_2_r->get(PCN_IVACOMP))) - ivacomp = _iva->get("CODTAB"); // Ecco il codice IVA di compensazione + const TCodiceIVA & civa = cached_codIVA(_pcon_2_r->get(PCN_IVACOMP)); + + if (civa.ok()) + ivacomp = civa.codice(); // Ecco il codice IVA di compensazione } look_pia(month, codatt, codiva, ivacomp, true); // Crea il record in tabella se non esiste real pia_imp = _pia->get_real("R0") + agr_imp; // Aggiorna... @@ -2727,11 +2728,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & if (_pim->get_bool("B4")) { // ricalcola l'imposta a partire dal codice IVA - look_iva(*_pim_codiva); - real old_iva = _pim->get_real("R1"); - real perc = _iva->get_real("R0"); + const TCodiceIVA & civa = cached_codIVA(*_pim_codiva); + const real old_iva = _pim->get_real("R1"); + real new_iva = _pim->get_real("R0") * civa.moltiplicatore_percentuale(); - real new_iva = _pim->get_real("R0") * perc / CENTO; round_al_centesimo(new_iva); if (new_iva != old_iva) @@ -2759,10 +2759,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & if (_pia->get_bool("B0")) { // calcola l'imposta a partire dal codice IVA di compensazione - look_iva(*_pia_codcom); - real perc = _iva->get_real("R0"); - - real iva = _pia->get_real("R0") * perc / CENTO; + const TCodiceIVA & civa = cached_codIVA(*_pia_codcom); + real iva = _pia->get_real("R0") * civa.moltiplicatore_percentuale(); + round_al_centesimo(iva); agr_detIA += iva; _pia->put("R1",iva); @@ -2994,12 +2993,14 @@ void TLiquidazione_app::iva11_set_arr_phase_1(const TString& codatt) if (is_split_payment(_mov->curr())) imposta = ZERO; - const TString4 codiva = _iva->get("CODTAB"); - const TString4 tipoiva = _iva->get("S1"); - const real ali = _iva->get_real("R0"); - const TString4 tipoes_v = _iva->get("S2"); - const TString4 tipoes_a = _iva->get("S9"); - const int tipoagr = _iva->get_int("I4"); // 2/9/2015 was S4 + + const TCodiceIVA & civa = cached_codIVA(_rmoviva->get(RMI_CODIVA)); + const TString4 codiva = civa.codice(); + const TString4 tipoiva = civa.tipo(); + const real ali = civa.percentuale(); + const TString4 tipoes_v = civa.IVA11_vendite(); + const TString4 tipoes_a = civa.IVA11_acquisti(); + const int tipoagr = civa.tipo_IVA_agricola(); // 2/9/2015 was S4 const TRectype& rcs = _cur->curr(LF_CAUSALI); const bool autofattura = rcs.get_bool("AUTOFATT"); const bool valintra = rcs.get_bool("VALINTRA"); @@ -3379,14 +3380,17 @@ void TLiquidazione_app::iva11_set_arr_phase_2(const TString& codatt) // Must consider current activity too... codiva = *_pim_codiva; reg = *_pim_codreg; - look_iva(codiva); look_reg(reg); // posiziona la tabella registri e quella IVA - tiva = _iva->get("S1"); // tipo IVA - tpla = _iva->get("S3"); // tipo gestione plafond - tagr = _iva->get_int("I4"); // tipo gestione regime agricolo 2/9/2015 was S4 - tvia = _iva->get("S5"); // tipo gestione ag. viaggio - v11 = _iva->get("S2"); // n.ro riga vendite per mod. IVA11 - a11 = _iva->get("S9"); // n.ro riga acquisti per mod. IVA11 - aliq = _iva->get_real("R0"); // aliquota + + const TCodiceIVA & civa = cached_codIVA(codiva); + + look_reg(reg); // posiziona la tabella registri e quella IVA + tiva = civa.tipo(); // tipo IVA + tpla = civa.tipo_plafond(); // tipo gestione plafond + tagr = civa.tipo_IVA_agricola(); // tipo gestione regime agricolo 2/9/2015 was S4 + tvia = civa.tipo_agenzie_viaggio(); // tipo gestione ag. viaggio + v11 = civa.IVA11_vendite(); // n.ro riga vendite per mod. IVA11 + a11 = civa.IVA11_acquisti(); // n.ro riga acquisti per mod. IVA11 + aliq = civa.percentuale(); // aliquota treg = (tiporeg)_reg->get_long("I0"); const bool is_vendita = treg == vendita; const bool is_acquisto = treg == acquisto; @@ -3484,7 +3488,7 @@ void TLiquidazione_app::iva11_set_arr_phase_2(const TString& codatt) _CorrItem& ca = (_CorrItem&) corr_ann[codiva]; ca._totale += lor; if (!is_present) - ca._aliquota = _iva->get_real("R0"); // Se e' nuovo setta l'aliquota + ca._aliquota = civa.percentuale(); // Se e' nuovo setta l'aliquota } tt = _pim->get("S0"); @@ -4541,8 +4545,10 @@ void TLiquidazione_app::recalc_annual(const char* att, bool & first) const int tipocr = atoi(*_pim_tipocr); codiva = *_pim_codiva; reg = *_pim_codreg; - look_iva(codiva); look_reg(reg); - tiva = _iva->get("S1"); + const TCodiceIVA & civa = cached_codIVA(codiva); + + look_reg(reg); + tiva = civa.tipo(); const TRegistro & reg = cached_registro(_reg->curr()); const tipo_sospensione simp = reg.sospensione(); @@ -4573,7 +4579,7 @@ void TLiquidazione_app::recalc_annual(const char* att, bool & first) _CorrItem& ca = (_CorrItem&)corr_ann[codiva]; ca._totale += _pim->get_real("R3"); if (!is_key) // se non c'e' lo aggiunge - ca._aliquota = _iva->get_real("R0") / CENTO; // Se è nuovo setta l'aliquota + ca._aliquota = civa.moltiplicatore_percentuale(); // Se è nuovo setta l'aliquota } if (tipoatt == 1) volaff1 += imp_ifs; diff --git a/src/cg/cg4302.cpp b/src/cg/cg4302.cpp index 28c47c8ba..1e45fa0c8 100755 --- a/src/cg/cg4302.cpp +++ b/src/cg/cg4302.cpp @@ -583,6 +583,7 @@ bool TLiquidazione_app::look_reg(const char* reg) return rt; } +/* bool TLiquidazione_app::look_iva(const char* cod) { bool rt = true; @@ -603,6 +604,7 @@ bool TLiquidazione_app::look_iva(const char* cod) return rt; } +*/ bool TLiquidazione_app::look_ppa(int month, const char* codatt, int type, bool create) { @@ -981,8 +983,10 @@ real TLiquidazione_app::aliquota_agvia() { real r; const TString& codagv = ini_get_string(CONFIG_STUDIO, "cg", "CodAgv"); - if (codagv.full() && look_iva(codagv)) // Controlla se è vuoto! CM600475 - r = _iva->get_real("R0"); + const TCodiceIVA & civa = cached_codIVA(codagv); + + if (civa.ok()) // Controlla se è vuoto! CM600475 + r = civa.percentuale(); return r; } diff --git a/src/cg/cg4303.cpp b/src/cg/cg4303.cpp index d521bc851..0fb74019b 100755 --- a/src/cg/cg4303.cpp +++ b/src/cg/cg4303.cpp @@ -95,10 +95,13 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt) vaf += imponibile; _pam->put("R1", vaf); _pam->rewrite(); + // Aggiorna il totale IVA periodica CD1_1 - if (month == 13 && look_iva(ci->_codiva)) + const TCodiceIVA & civa = cached_codIVA(ci->_codiva); + + if (month == 13 && civa.ok()) { - if (_iva->get("S10").not_empty()) // Solo CD1_1 ha senso coi corrispettivi... + if (civa.tipo_comunicazione_attive().full()) // Solo CD1_1 ha senso coi corrispettivi... { _pum->curr().add("R14", imponibile); // CD1_1 _pum->rewrite(); @@ -142,12 +145,11 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt) int tipocr = atoi(*_pim_tipocr); int mese = atoi(*_pim_mese); int tipodet = atoi(*_pim_tipodet); - look_iva(*_pim_codiva); + const TCodiceIVA & civa = cached_codIVA(*_pim_codiva); // base di riparto solo se non esente, non soggetto, non imponibile - TString16 tipoiva(_iva->get("S1")); + TString16 tipoiva(civa.tipo()); TString16 reg = *_pim_codreg; - /* * caso particolare SENSU Vladimiro (1995) #MI3001 * questi vengono pero' conteggiati nel totale @@ -161,18 +163,15 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt) if (tipocr == 1 && (mese == m) && att == (const char*)(*_pim_codatt)) { - if (tipoiva != "NS" && tipoiva != "NI" && tipoiva != "ES") + if (civa.iva_da_ventilare()) { real lurd = _pim->get_real("R0"); lurd += _pim->get_real("R1"); - real perc = _iva->get_real("R0"); - TString other = _iva->get("S6"); - if (!other.empty()) - { - // ventila a un altro codice - look_iva(other); - perc = _iva->get_real("R0"); - } + real perc = civa.percentuale(); + TString other = civa.iva_a_cui_ventilare(); + + if (other.full()) + perc = cached_codIVA(other).percentuale(); // ventila a un altro codice add_ventilation(perc / CENTO, lurd, *_pim_codiva, other); } } @@ -341,9 +340,11 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt) _pam->rewrite(); // Aggiorna il totale IVA periodica CD1_1 - if (month == 13 && look_iva(vv->_codiva)) + const TCodiceIVA & civa = cached_codIVA(vv->_codiva); + + if (month == 13 && civa.ok()) { - if (_iva->get("S10").not_empty()) // Solo CD1_1 ha senso coi corrispettivi + if (civa.get("S10").full()) // Solo CD1_1 ha senso coi corrispettivi { _pum->curr().add("R14", imponibile); // CD1_1 _pum->rewrite(); @@ -364,9 +365,10 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt) // viene amorosamente messo a quanto il codice IVA prevede if (!was) { - look_iva(vv->_codiva); + const TCodiceIVA & civa = cached_codIVA((vv->_codiva)); + _pim->put("I1", (long)vendita); - if (!_iva->get_bool("B4")) + if (!civa.escluso_dal_rimborso()) _pim->put("B3", "X"); } _pim->rewrite(); @@ -533,8 +535,8 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts, if (!_pim->get_bool("B3")) continue; // Se il tipo di codice e' NS non va considerato nella sommatoria del tot. acquisti - look_iva(codiva); - const bool non_sogg = _iva->get("S1") == "NS"; + const TCodiceIVA & civa = cached_codIVA(codiva); + const bool non_sogg = civa.iva_non_soggetta(); if (!is_mens) // Trimestrali { @@ -565,7 +567,7 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts, ca._totale += _pim->get_real("R3"); if (!is_key) // se non c'e' lo aggiunge { - ca._aliquota = _iva->get_real("R0")/CENTO; // Se e' nuovo setta l'aliquota + ca._aliquota = civa.moltiplicatore_percentuale(); // Se e' nuovo setta l'aliquota corr_ann.add(codiva,ca); } } diff --git a/src/cg/cg4304.cpp b/src/cg/cg4304.cpp index 802b36f0a..fe6386e0d 100755 --- a/src/cg/cg4304.cpp +++ b/src/cg/cg4304.cpp @@ -286,7 +286,7 @@ void TLiquidazione_app::describe_ventilation(int month, const char* codatt) continue; look_reg(*_pim_codreg); - look_iva(*_pim_codiva); + const TCodiceIVA & civa = cached_codIVA(*_pim_codiva); int tipocr = atoi(*_pim_tipocr); int tipodet = atoi(*_pim_tipodet); @@ -295,7 +295,7 @@ void TLiquidazione_app::describe_ventilation(int month, const char* codatt) real imponibile = _pim->get_real("R0"); real imposta = _pim->get_real("R1"); tiporeg tipomov = (tiporeg)_reg->get_long("I0"); - TString4 tipoiva = _iva->get("S1"); + TString4 tipoiva = civa.tipo(); if (_year != *_pim_anno || (month == 13 && mese < 13)) continue; @@ -564,28 +564,19 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool continue; TString4 codiva = codtab.mid(16,4); codiva.trim(); - if (!look_iva(codiva)) + const TCodiceIVA & civa = cached_codIVA(codiva); + + if (!civa.ok()) continue; tiporeg tipomov = (tiporeg)_reg->get_int("I0"); bool corrisp = _reg->get_bool("B0"); - const TString4 tipoiva = _iva->get("S1"); + const TString4 tipoiva = civa.tipo(); const TString4 other = tab->get("S4"); TToken_string s1(tab->get("S1"), '!'); // Imponibile/iva fatture in ritardo real rit_imp(s1.get(0)); real rit_iva(s1.get(1)); - /* Perchè _pim invece di tab ? 17-10-2012 - diffimp = _pim->get_real("R26"); - diffiva = _pim->get_real("R27"); - diffincimp = _pim->get_real("R28"); - diffinciva = _pim->get_real("R29"); - - diffimp_acq = _pim->get_real("R30"); - diffiva_acq = _pim->get_real("R31"); - diffincimp_acq = _pim->get_real("R32"); - diffinciva_acq = _pim->get_real("R33"); */ - diffimp = tab->get_real("R26"); diffiva = tab->get_real("R27"); diffincimp = tab->get_real("R28"); @@ -603,10 +594,10 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool issosp |= (sosp_imp != nessuna_sospensione); // Setta il flag di presenza registri in sospensione (qualsiasi tipo: sospensione_normale, vol_affari, liquidazione) // ACHTUNG! Corrispettivi da ventileer possono ventilare ad un altro codiva; in tal caso si scrive quello if (corrisp && other.full()) - { - look_iva(other); codiva = other; - } + + const TCodiceIVA & civa1 = cached_codIVA(codiva); // codice IVA aggiornato per eventuale ventilazione + // se e' corrispettivo da ventilare non scrivo un cannolo ripieno visto che e' stato ventilato if (tipomov == vendita && tipoiva == "VE" && !describe_pis) continue; @@ -713,7 +704,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool ca._totale_vf += tab->get_real(tipoiva == "VE" ? "R2" : "R3"); if (!is_key) // se non c'e' lo aggiunge { - ca._aliquota = _iva->get_real("R0")/CENTO; // Se e' nuovo setta l'aliquota + ca._aliquota = civa.moltiplicatore_percentuale(); // Se e' nuovo setta l'aliquota corr_ann.add(codiva,ca); } // vedi corrispettivi veri e falsi @@ -1804,8 +1795,9 @@ void TLiquidazione_app::set_pim(_DescrItem& d) rw++; else { - look_iva(d._s1); - d._s2 = _iva->get("S0"); + const TCodiceIVA & civa = cached_codIVA(d._s1); + + d._s2 = civa.get("S0"); if (d._s2.len() > 19) d._s2.cut(19); } @@ -2934,8 +2926,9 @@ void TLiquidazione_app::set_ventila(_DescrItem& d) for(i = 0; i < d._arr.items(); i++) { _vDesc& vd = (_vDesc&)d._arr[i]; - look_iva(vd._codiva); - s0 = _iva->get("S0"); s0.cut(23); + const TCodiceIVA & civa = cached_codIVA(vd._codiva); + + s0 = civa.descrizione(); s0.cut(23); set_row(row+i,"@8g%5s@17g%-23s@41g%r@68g%r@89g%r", (const char*)vd._codiva, @@ -3065,13 +3058,15 @@ void TLiquidazione_app::set_regagr(_DescrItem& d) _DescrItem& di = (_DescrItem&) agr_array[i]; if (di._flags != PROGAGR) continue; - look_iva(di._s0); - des = _iva->get("S0"); des.cut(25); - al = _iva->get_real("R0"); + + const TCodiceIVA & civa = cached_codIVA(di._s0); + + des = civa.descrizione(); des.cut(25); + al = civa.percentuale(); set_row(r,"%4s %-25s@48g%s %%", (const char*) di._s0, (const char*) des, al.string("#@,@@")); set_row(r,"@56g%r@75g%4s",&di._r0, (const char*)di._s1); - look_iva(di._s1); - al = _iva->get_real("R0"); + const TCodiceIVA & civa1 = cached_codIVA(di._s1); + al = civa1.percentuale(); set_row(r++,"@92g%s %%@100g%r", al.string("#@,@@"), &di._r1); t1 += di._r0; t2 += di._r1; diff --git a/src/cg/cg5300.cpp b/src/cg/cg5300.cpp index eebb3d5a0..69d0a004a 100755 --- a/src/cg/cg5300.cpp +++ b/src/cg/cg5300.cpp @@ -450,7 +450,7 @@ int TParaliq_app::read(TMask& m) TCursor cur(&relpla, "", 1, &pla, &pla); const TRecnotype items = cur.items(); - sf.destroy(); + sf.reset(); if (items == 0) init_array(sf); // Carica tutti i codici attività else diff --git a/src/cg/cg7600.cpp b/src/cg/cg7600.cpp index 6ee35f88c..2f5a3206a 100644 --- a/src/cg/cg7600.cpp +++ b/src/cg/cg7600.cpp @@ -112,6 +112,8 @@ void TQuadro_VE_recordset::load() { const TRectype & pimr = pim.cursor()->curr(); TString8 codiva(codtab.mid(16,4)); codiva.trim(); + if (codiva == "274") + int i = 1; const TRectype & ivar = cache().get("%IVA", codiva); const TString8 aliquota = ivar.get("R0"); const TString4 tipo_aliquota = ivar.get("S1"); @@ -160,6 +162,16 @@ void TQuadro_VE_recordset::load() add_value(STRING_TOKEN(imposta.objptr(aliquota)), iva); } } + else + { + const int tipocr = atoi(codtab.mid(15, 1)); // tipo costo_ricavo + + if (tipocr == 4) + { + if (int_tipo_iva11_ven == acq_ind_pass_int || int_tipo_iva11_ven == cess_amm) + add_value("VE40.1", imp); + } + } break; case acq_simp: break; @@ -185,12 +197,12 @@ void TQuadro_VE_recordset::load() break; case acq_ind_pass_int: // passaggi interni if (vendite) - add_value("VE40.1", iva); + add_value("VE40.1", imp); break; case acq_ind_art_19: // indetr. art. 19 break; case cess_amm: // cessioni amministrative - add_value("VE40.1", iva); + add_value("VE40.1", imp); break; case vend_rimborso: // vendite valide per rimborso break; @@ -251,24 +263,28 @@ void TQuadro_VE_recordset::load() } } + /* TISAM_recordset & exp = get_recordset(REP_PAART17); for (exp.move_first(); !exp.eof(); exp.move_next()) { - TString8 cod(exp.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string()); - const TCodiceIVA & codiva = cached_codIVA(cod); - const TString & aliquota = codiva.aliquota(); + TString8 cod(exp.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string()); + const TCodiceIVA & codiva = cached_codIVA(cod); + const TString & aliquota = codiva.aliquota(); + const TRectype & mov = cache().get(LF_MOV, exp.get(FIELD_NAME(LF_RMOVIVA, RMI_NUMREG)).as_int()); - if (aliquota.full()) - { - const real imp = exp.get(FIELD_NAME(LF_RMOVIVA, RMI_IMPONIBILE)).as_real(); - - if (codiva.is_agricola()) - sub_value(STRING_TOKEN(imponibile_agricolo.objptr(aliquota)), imp); - else - sub_value(STRING_TOKEN(imponibile.objptr(aliquota)), imp); - } - } + if (aliquota.full()) + { + const real imp = exp.get(FIELD_NAME(LF_RMOVIVA, RMI_IMPONIBILE)).as_real(); + real iva = exp.get(FIELD_NAME(LF_RMOVIVA, RMI_IMPOSTA)).as_real(); + + if (codiva.is_agricola()) + sub_value(STRING_TOKEN(imponibile_agricolo.objptr(aliquota)), imp); + else + sub_value(STRING_TOKEN(imponibile.objptr(aliquota)), imp); + } + } + */ TISAM_recordset & reg = get_recordset(REP_REGOLARIZ); @@ -305,6 +321,7 @@ void TQuadro_VE_recordset::load() } } + query = "USE LIM\n FROM CODTAB=="; query << year() << "13\nTO CODTAB==" << year() << "13"; diff --git a/src/cg/cg7700.cpp b/src/cg/cg7700.cpp index 23519d24a..7d63d1d26 100644 --- a/src/cg/cg7700.cpp +++ b/src/cg/cg7700.cpp @@ -286,9 +286,9 @@ void TQuadro_VF_recordset::load() } if (non_soggetto) { - if (tipo_iva11_acq == "15A" || int_tipo_iva11_acq == 15) + if (int_tipo_iva11_acq == 15) { - if (tipo_iva11_acq == "15A") + if (tipo_iva11_acq == "15B") add_value("VF17.2", imp); add_value("VF17.1", imp); } diff --git a/src/cg/cglib.h b/src/cg/cglib.h index 2f91baa76..9768a2cfe 100644 --- a/src/cg/cglib.h +++ b/src/cg/cglib.h @@ -108,30 +108,9 @@ class TProgind; static const char * __date_field_name[] = { MOV_DATAREG, MOV_DATACOMP, MOV_DATACOMPCR }; - -enum TipoIVA -{ - iva_errata = -1, - nessuna_iva = 0, - iva_vendite = 1, - iva_acquisti = 2, - libro_giornale = 5, - iva_generica = 9 -}; - -enum tipo_movimento -{ - tm_nessuno = 0, - tm_fattura = 1, - tm_nota_credito = 2, - tm_pagamento = 3, - tm_insoluto = 5, - tm_pagamento_insoluto = 6 -}; - - -enum cgrowtypes -{ +typedef enum { iva_errata = -1, nessuna_iva = 0, iva_vendite = 1, iva_acquisti = 2, libro_giornale = 5, iva_generica = 9 } TipoIVA; +typedef enum { tm_nessuno = 0, tm_fattura = 1, tm_nota_credito = 2, tm_pagamento = 3, tm_insoluto = 5, tm_pagamento_insoluto = 6 } tipo_movimento; +typedef enum { cgrowtype_contabile = ' ', // riga contabile cgrowtype_totale = 'T', // Totale documento cgrowtype_abbattivo = 'A', // Abbuoni attivi @@ -149,47 +128,12 @@ enum cgrowtypes cgrowtype_imponibile = 'I', // Imponibile/contropartita saldaconto cgrowtype_clisplit = '1', // Cliente per scissione pagamenti art.17-ter DPR 633/72 cgrowtype_spese = 'G' // Spese del saladaconto -}; - -enum tipo_sospensione -{ - nessuna_sospensione, - sospensione_normale, - vol_affari, - liquidazione -}; - -enum tipobil -{ - DataLimite = 1, - UltimaImmissione -}; - -enum tiposal -{ - saldo_normale, - saldo_apertura, - saldo_chiusura -}; - -enum TTipo_data -{ - Registrazione, - Competenza, - CostiRicavi -}; - -enum tiporeg -{ - vendita = 1, - acquisto = 2, - riepilogativo = 3, - incassi = 4, - giornale = 5, - sociale = 6, - cespiti = 7, - giornale_magazzino = 9 -}; +} cgrowtypes; +typedef enum { nessuna_sospensione, sospensione_normale, vol_affari, liquidazione } tipo_sospensione; +typedef enum { DataLimite = 1, UltimaImmissione} tipobil; +typedef enum { saldo_normale, saldo_apertura, saldo_chiusura} tiposal; +typedef enum { Registrazione, Competenza, CostiRicavi } TTipo_data; +typedef enum { vendita = 1, acquisto = 2, riepilogativo = 3, incassi = 4, giornale = 5, sociale = 6, cespiti = 7, giornale_magazzino = 9 } tiporeg; inline bool check_mov(const int tipomovprovv, const TString & provvis) { diff --git a/src/cg/cglib01.h b/src/cg/cglib01.h index d57323cd1..53f70b81d 100755 --- a/src/cg/cglib01.h +++ b/src/cg/cglib01.h @@ -172,6 +172,7 @@ public: // TObject real imposta(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola l'imposta sull'imponibile l'imposta e la ritorna real scorpora(real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Scorpora dall'imponibile l'imposta e la ritorna real lordo(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola il lordo dell'imponibile l'imposta e la ritorna + real imponibile(const real& imposta, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola l'imponibile dell'imposta e lo ritorna // bool reverse_charge() const; // bool reverse_charge_pubb() const; diff --git a/src/cg/cgpim.cpp b/src/cg/cgpim.cpp index d2b34d449..26532936e 100755 --- a/src/cg/cgpim.cpp +++ b/src/cg/cgpim.cpp @@ -31,11 +31,11 @@ bool classify_pim(const TRectype& pimr, real& imp, real& iva, tiporec& t, bool t switch(tocheck) { - case acq_norm: + case acq_norm: //found = tipomov == 2 && tipoiva != "NS"; found = tipomov == 2; found &= (tipodet == 0 /* || tipodet == 1 || tipodet == 3 || - tipodet == 5 || tipodet == 9 */); + tipodet == 5 || tipodet == 9 */); if (found) { if (tipost) //stampa @@ -57,7 +57,7 @@ bool classify_pim(const TRectype& pimr, real& imp, real& iva, tiporec& t, bool t break; case vend_norm: //found = tipomov == 1 /* && corrisp == 1 */ && tipoiva != "NS"; - found = tipomov == 1 /* && corrisp == 1 */; + found = tipomov == 1 /* && corrisp == 1 */; if (found) { imp = pimr.get_real("R0"); diff --git a/src/cm/cm1100.cpp b/src/cm/cm1100.cpp index 1ceafa2b6..e44b97df4 100755 --- a/src/cm/cm1100.cpp +++ b/src/cm/cm1100.cpp @@ -10,7 +10,7 @@ #include #include "..\cg\cgsaldac.h" -#include "..\cg\cg2103.h" +#include "..\cg\cglib.h" #include "..\ve\velib.h" #include "cm1100a.h" diff --git a/src/crpa/crpa0.cpp b/src/crpa/crpa0.cpp index c40cda5b5..623adbdb0 100755 --- a/src/crpa/crpa0.cpp +++ b/src/crpa/crpa0.cpp @@ -11,7 +11,7 @@ #include "../ce/collces.h" #include "../ve/velib.h" -#include "../cg/cg2103.h" +#include "../cg/cglib.h" #include "../ca/movana.h" #include "../ca/rmovana.h" diff --git a/src/db/db0500.cpp b/src/db/db0500.cpp index 6104e7033..bfbdfd8a2 100755 --- a/src/db/db0500.cpp +++ b/src/db/db0500.cpp @@ -972,7 +972,7 @@ private: protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); - bool test_row(const TToken_string& row); + bool test_row(int nrow); void load_um(); static void sheetrighe_get(TSheet_field &fld_righe, int item); @@ -1071,12 +1071,13 @@ void TDistinta_mask::load_um() } -bool TDistinta_mask::test_row(const TToken_string& row) +bool TDistinta_mask::test_row(int nrow) { + TSheet_field& sheet = sfield(F_SHEET); const TCodice_articolo father = get(F_CODICE); - - TCodice_articolo code; row.get(1, code); + TCodice_articolo code = sheet.get_str_row_cell(nrow, F_CODART); bool ok = code != father; + if (ok && _tree.find_node(father) > 0) { TToken_string path; _tree.curr_id(path); @@ -1088,12 +1089,9 @@ bool TDistinta_mask::test_row(const TToken_string& row) "in quanto la distinta risulterebbe ciclica."), (const char*)code); // Se e' una lavorazione - if (get(F_TIPO)[0] == 'L') - { - ok = row[0] == 'L' && _tree.is_lav(code); - if (!ok) - error_box(FR("Il codice '%s' non e' una lavorazione"), (const char*)code); - } + if ((get(F_TIPO) == "L") && + !(sheet.get_str_row_cell(nrow, F_TIPOCOMP) == "L" && _tree.is_lav(code))) + return error_box(FR("Il codice '%s' non e' una lavorazione"), (const char*)code); return ok; } @@ -1170,41 +1168,47 @@ bool TDistinta_mask::on_unitsheet_event(TOperable_field& o, TField_event e, long bool TDistinta_mask::on_distsheet_event(TOperable_field& o, TField_event e, long jolly) { const short id = o.dlg(); + switch (id) { case F_SHEET: - if (e == se_notify_add || e == se_notify_modify || e == fe_close) + if (e == se_notify_add || e == se_notify_modify || e == fe_close) { - TSheet_field& sheet = (TSheet_field&)o; - const int nrig = int(jolly); - TToken_string& row = sheet.row(nrig); + + switch(e) { case se_notify_add: - row.add("A", F_TIPOCOMP-FIRST_FIELD); // Forza il listbox ad articolo - row.add("", F_EXPR-FIRST_FIELD); // Forza la quantita' ad 1 - row.add(nrig+1, F_SORT0-FIRST_FIELD); // Inizializza numero riga - sheet.select(nrig); + { + TSheet_field& sheet = (TSheet_field&)o; + const int nrig = int(jolly); + + sheet.set_row_cell(F_TIPOCOMP, "A", nrig); // Forza il listbox ad articolo + sheet.set_row_cell(F_EXPR, 1, nrig); // Forza la quantita' ad 1 + sheet.set_row_cell(F_SORT0, nrig + 1, nrig); // Inizializza numero riga + sheet.select(nrig); + sheet.force_update(nrig); + } break; case se_notify_modify: - return test_row(row); + return test_row(int(jolly)); + break; case fe_close: { + TSheet_field& sheet = (TSheet_field&)o; + const int nrig = int(jolly); TString80 code; - TString80 code1; + for (int n = sheet.items()-1; n >= 0; n--) { - const TToken_string& row = sheet.row(n); - row.get(F_CODART-FIRST_FIELD, code); - if (!code.blank()) + code = sheet.get_str_row_cell(n, F_CODART); + if (code.full()) { - if (!test_row(row)) + if (!test_row(nrig)) return false; for (int m = n - 1; m >= 0; m--) { - const TToken_string& row = sheet.row(m); - row.get(F_CODART-FIRST_FIELD, code1); - if (code == code1) + if (code == sheet.get_str_row_cell(m, F_CODART)) { int k = noyesall_box("Il codice %s e' ripetuto alla riga %d,\ncontinuare ugualmente ?", (const char *) code, n + 1); if (k == K_NO) @@ -1219,7 +1223,7 @@ bool TDistinta_mask::on_distsheet_event(TOperable_field& o, TField_event e, long sheet.destroy(n); } } - if (sheet.items() == 0) + if (((TSheet_field&)o).items() == 0) message_box(TR("E' necessario inserire almeno una riga nella distinta")); break; default: diff --git a/src/db/db0500b.uml b/src/db/db0500b.uml index 093d820b2..2b02867c7 100755 --- a/src/db/db0500b.uml +++ b/src/db/db0500b.uml @@ -246,13 +246,13 @@ LIST F_TIPOCOMP 1 12 BEGIN PROMPT 2 1 "Tipo " ITEM "A|Articolo" - MESSAGE SHOW,11@|HIDE,12@|HIDE,13@|HIDE,14@|ENABLE,F_UMEXPR|ENABLE,11@|DISABLE,12@|DISABLE,13@|DISABLE,14@ + MESSAGE SHOW,11@|HIDE,12@|HIDE,13@|HIDE,14@|ENABLE,F_UMEXPR|ENABLE,11@|CLEAR,12@|CLEAR,13@|CLEAR,14@ ITEM "L|Lavorazione" - MESSAGE HIDE,11@|SHOW,12@|HIDE,13@|HIDE,14@|DISABLE,F_UMEXPR|DISABLE,11@|ENABLE,12@|DISABLE,13@|DISABLE,14@ + MESSAGE HIDE,11@|SHOW,12@|HIDE,13@|HIDE,14@|CLEAR,F_UMEXPR|CLEAR,11@|ENABLE,12@|CLEAR,13@|CLEAR,14@ ITEM "D|Distinta" - MESSAGE HIDE,11@|HIDE,12@|SHOW,13@|HIDE,14@|ENABLE,F_UMEXPR|DISABLE,11@|DISABLE,12@|ENABLE,13@|DISABLE,14@ + MESSAGE HIDE,11@|HIDE,12@|SHOW,13@|HIDE,14@|ENABLE,F_UMEXPR|CLEAR,11@|CLEAR,12@|ENABLE,13@|CLEAR,14@ ITEM "V|Variabile" - MESSAGE HIDE,11@|HIDE,12@|HIDE,13@|SHOW,14@|CLEAR,F_UMEXPR|DISABLE,11@|DISABLE,12@|DISABLE,13@|ENABLE,14@ + MESSAGE HIDE,11@|HIDE,12@|HIDE,13@|SHOW,14@|CLEAR,F_UMEXPR|CLEAR,11@|CLEAR,12@|CLEAR,13@|ENABLE,14@ FIELD TIPO END @@ -282,8 +282,8 @@ BEGIN OUTPUT F_CODLAV CODTAB OUTPUT F_DESLAV S0 CHECKTYPE REQUIRED - FIELD CODCOMP - FLAGS "UHD" + FIELD CODCOMP + FLAGS "UHD" GROUP 12 END @@ -297,7 +297,7 @@ BEGIN OUTPUT F_CODDIS CODDIST OUTPUT F_DESDIS DESCR CHECKTYPE REQUIRED - FIELD CODCOMP + FIELD CODCOMP FLAGS "UHD" GROUP 13 END diff --git a/src/db/db1100.cpp b/src/db/db1100.cpp index 31cf11395..30c8a5dfc 100755 --- a/src/db/db1100.cpp +++ b/src/db/db1100.cpp @@ -11,7 +11,7 @@ #include #include -#include "../cg/cglib01.h" +#include "../cg/cglib.h" #include "../mg/mglib.h" #include "../ve/velib.h" #include "dblib.h" diff --git a/src/db/db1300.cpp b/src/db/db1300.cpp index 64dc7af85..2f9214c51 100755 --- a/src/db/db1300.cpp +++ b/src/db/db1300.cpp @@ -454,7 +454,7 @@ int TImplosion_mask::find_roots(const char* articolo, TAssoc_array& roots) const TAssoc_array ass[2]; int c = 0; // Array dei children = 0; fathers = 1 - ass[c].add(articolo, NULL); + ass[c].add(articolo); const char* cap = FR("Livello %d - Articoli %ld"); TString caption; caption.format(cap, 0, 0L); @@ -478,7 +478,7 @@ int TImplosion_mask::find_roots(const char* articolo, TAssoc_array& roots) const for (cur = 0L; cur.pos() < cur.items(); ++cur) { const TString& father = cur.curr().get("CODDIST"); - ass[!c].add(father, NULL); + ass[!c].add(father); } cur.freeze(FALSE); } @@ -559,7 +559,7 @@ void TImplosion_mask::implode_slow() key << row->get(); key.rtrim(); } - _xmas.add(key, NULL); + _xmas.add(key); } } @@ -623,7 +623,7 @@ void TImplosion_mask::implode_medium() key = articolo; if (livello.not_empty()) key << '|' << livello; - _xmas.add(key, NULL); + _xmas.add(key); TAssoc_array roots; const long items = find_roots(articolo, roots); diff --git a/src/db/dbtblav.h b/src/db/dbtblav.h index 59ecc28ad..c4c769a92 100755 --- a/src/db/dbtblav.h +++ b/src/db/dbtblav.h @@ -1,25 +1,25 @@ -#define F_CODICE 101 -#define F_DESCR 102 -#define F_COSUNIT 103 -#define F_UNMIS 104 -#define F_STAMPA 105 -#define F_UMDESC 106 -#define F_CODICEART 107 -#define F_SEARCHART 108 -#define F_SHEET 109 -#define F_NUMPERS 110 -#define F_PRODUTTIV 111 -#define F_UNTEMPO 112 -#define F_DESUNTEMPO 113 -#define F_UNMIS2 114 -#define F_LINEESTD 115 -#define F_PERCMIN 116 -#define F_PRODNRIL 117 +#define F_CODICE 201 +#define F_DESCR 202 +#define F_COSUNIT 203 +#define F_UNMIS 204 +#define F_STAMPA 205 +#define F_UMDESC 206 +#define F_CODICEART 207 +#define F_SEARCHART 208 +#define F_SHEET 209 +#define F_NUMPERS 210 +#define F_PRODUTTIV 211 +#define F_UNTEMPO 212 +#define F_DESUNTEMPO 213 +#define F_UNMIS2 214 +#define F_LINEESTD 215 +#define F_PERCMIN 216 +#define F_PRODNRIL 217 -#define F_CODLIN 101 -#define F_DESCRLIN 102 -#define F_CODIMP 103 -#define F_LNUMPERS 104 -#define F_LPRODUTTIV 105 +#define F_CODLIN 101 +#define F_DESCRLIN 102 +#define F_CODIMP 103 +#define F_LNUMPERS 104 +#define F_LPRODUTTIV 105 #define F_DESCRIMP 120 diff --git a/src/ef/ef0100.cpp b/src/ef/ef0100.cpp index 3e70dde8d..563425b55 100755 --- a/src/ef/ef0100.cpp +++ b/src/ef/ef0100.cpp @@ -524,6 +524,23 @@ bool TEffetti_mask::on_field_event(TOperable_field& o, TField_event e, long joll if (e == fe_modify) sfield(F_SHEET_RIGHE).set_focusdirty(); break; + case F_IBAN_STATO: + if (mode() == MODE_MOD && e == fe_init) + { + TRelation * rel = app().get_relation(); + + if (rel != nullptr) + { + TRectype & rec = rel->lfile().curr(); + + if (rec.get(EFF_IBAN).empty()) + { + set(F_CODABI, rec.get(EFF_CODABI)); + set(F_CODCAB, rec.get(EFF_CODCAB)); + return true; + } + } + } case F_SHEET_RIGHE: return on_sheet_event(o, e, jolly); default: diff --git a/src/f1/f1lib.cpp b/src/f1/f1lib.cpp index 55a2ae491..776245c5b 100644 --- a/src/f1/f1lib.cpp +++ b/src/f1/f1lib.cpp @@ -20,20 +20,14 @@ TFppro& fppro_db() return *fppro; } -bool TFppro::sql_inj(const TString& str) -{ - TString appo; appo << str; - appo.upper(); - return appo.contains("--") || appo.contains("SELECT") || appo.contains("DELETE") || appo.contains("DROP"); -} - -bool TFppro::sql_inj(const keys_s& keys) +bool TFppro::sql_inj(TToken_string& keys) { TToken_string str("", ';'); - str.add(keys.prginvio); - str.add(keys.headerfatt); - str.add(keys.bodyfatt); - return sql_inj(str); + + str.add(keys.get(0)); + str.add(keys.get(1)); + str.add(keys.get(2)); + return str.contains("--") || str.contains("SELECT") || str.contains("DELETE") || str.contains("DROP"); } bool TFppro::check_reg(TToken_string& keys, int numreg) @@ -44,68 +38,74 @@ bool TFppro::check_reg(TToken_string& keys, int numreg) bool TFppro::guess_the_doc(const TLocalisamfile& mov) { // Prendo il fornitore del mov per controllare la p.iva - TLocalisamfile clifo(LF_CLIFO); - clifo.put(CLI_TIPOCF, "F"); - const TString& codforn = mov.get(MOV_CODCF); - clifo.put(CLI_CODCF, codforn); - clifo.read(); - TString cli_statopiva, cli_piva; - cli_statopiva << clifo.get(CLI_STATOPAIV); - cli_piva << clifo.get(CLI_PAIV); + TCli_for forn = cached_clifor('F', mov.get_long(MOV_CODCF)); + + const TString4 statopiva(forn.get(CLI_STATOPAIV)); + const real tot = mov.get_real(MOV_TOTDOC) + mov.get_real(MOV_RITFIS) + mov.get_real(MOV_RITSOC); TString numdoc = mov.get(MOV_NUMDOCEXT); + if (numdoc.empty()) numdoc = mov.get(MOV_NUMDOC); // Controllo datadoc - numdoc - totdoc - p.iva + TString query; - query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT, P7_DATA AS DATA,\n" << - "\tP7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" << - "JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" << - "JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" << - "WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" << - "(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') AND \n" << - (cli_statopiva.full() ? TString("P2_FISCIVAPAESE = '") << cli_statopiva << "' AND " : "") << - "P2_FISCIVACOD = '" << cli_piva << "' AND \n" << "PQ_IMPTOTDOC = " << tot; + + query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT, P7_DATA AS DATA,\n" << + "\tP7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" << + "JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" << + "JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" << + "WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" << + "(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n"; + if (statopiva.full()) + query << "' AND \n" << "P2_FISCIVAPAESE = '" << statopiva; + query << "' AND \n" << "P2_FISCIVACOD = '" << forn.get(CLI_PAIV); + if (forn.gruppo_IVA()) + query << "' AND \n" "P2_COCAZZO = '" << forn.get(CLI_COFI); // cazzo; + query << "PQ_IMPTOTDOC = " << tot; if (_db->sq_set_exec(query) && _db->sq_items() == 1) { - _keys = { _db->sq_get("KEYPRGINVIO"), _db->sq_get("KEYHEADERFATT"), _db->sq_get("KEYBODYFATT") }; + _keys = _db->sq_get("KEYPRGINVIO"); + _keys.add(_db->sq_get("KEYHEADERFATT")); + _keys.add(_db->sq_get("KEYBODYFATT")); return true; } - return false; } -const char* TFppro::get_keys_fppro() const +const char* TFppro::get_keys_fppro() { - static TString keys; - keys.cut(0) << _keys.prginvio << ";" << _keys.headerfatt << ";" << _keys.bodyfatt; - return (const char*)keys; + TString& keys = get_tmp_string(64); + + keys.cut(0) << _keys.get(0) << ";" << _keys.get(1) << ";" << _keys.get(2); + return keys; } -int TFppro::get_numreg() +long TFppro::get_numreg() { if (!_is_set) { if (set_query()) - return _db->sq_get_int("PZ_NUMREGCONT"); + return _db->sq_get_long("PZ_NUMREGCONT"); return -1; } - return _db->sq_get_int("PZ_NUMREGCONT"); + return _db->sq_get_long("PZ_NUMREGCONT"); } -int TFppro::get_numreg(TToken_string& keys) +long TFppro::get_numreg(TToken_string& keys) { set_keys(keys); return get_numreg(); } -TString TFppro::get_codforn() const +long TFppro::get_codforn() { TString query; + query << "SELECT PZ_CLIFOR FROM FPPRO00F\n" << where_str(); _db->sq_set_exec(query); - return _db->sq_get("PZ_CLIFOR"); + return _db->sq_get_long("PZ_CLIFOR"); } TDate TFppro::get_datareg() @@ -127,12 +127,13 @@ TDate TFppro::get_datareg(TToken_string& keys) return TDate(); } -real TFppro::get_ritenute() const +real TFppro::get_ritenute() { - real imp = ZERO; + real imp; TString query; + query << "SELECT P7_IMPORTORIT AS IMPORTO FROM PAA0700F\n" << - "WHERE P7_KEYPRGINVIO = '" << _keys.prginvio << "' AND P7_KEYHEADERFATT = '" << _keys.headerfatt << "' AND P7_KEYBODYFATT = '" << _keys.bodyfatt << "'"; + "WHERE P7_KEYPRGINVIO = '" << _keys.get(0) << "' AND P7_KEYHEADERFATT = '" << _keys.get(1) << "' AND P7_KEYBODYFATT = '" << _keys.get(2) << "'"; _db->sq_set_exec(query, false); for(bool ok = _db->sq_next(); ok; ok = _db->sq_next()) imp += _db->sq_get_real("IMPORTO"); @@ -140,49 +141,48 @@ real TFppro::get_ritenute() const } TFppro& TFppro::set_keys(TToken_string& keys) -{ - if (keys.items() == 3) - { - const keys_s k = { keys.get(0), keys.get(1), keys.get(2) }; - return set_keys(k); - } - _is_set = false; - _keys_setted = false; - return *this; -} - -TFppro& TFppro::set_keys(const keys_s& keys) { if (sql_inj(keys)) { TString msg; msg << "Database error: Possibile SQL INJECTION:\n" << keys; - //throw std::exception(msg); +; error_box(msg); _last_error.cut(0) << msg; } - else if (!keys.prginvio.empty() && !keys.headerfatt.empty() && !keys.bodyfatt.empty()) - { - _keys = keys; - _keys_setted = true; - } else { - _last_error.cut(0) << "Chiavi settate non valide:\n" << keys; - _keys_setted = false; + TString prginvio = keys.get(0); + TString headerfatt = keys.get(1); + TString bodyfatt = keys.get(2); + + if (prginvio.full() && headerfatt.full() && bodyfatt.full()) + { + _keys = keys; + _keys_setted = true; + } + else + { + _last_error = "Chiavi settate non valide:\n"; + _last_error << keys; + _keys_setted = false; + } } _is_set = false; return *this; } -bool TFppro::associa_mov(const int numreg) const +bool TFppro::associa_mov(const long numreg) { bool ok; TLocalisamfile mov(LF_MOV); + mov.put(MOV_NUMREG, numreg); - if ((ok = mov.read() == NOERR)) + ok = mov.read() == NOERR; + if (ok) { mov.put(MOV_KEYFPPRO, get_keys_fppro()); - if ((ok = mov.rewrite() == NOERR)) // Scrivo sul movimento il riferimento al fppro + ok = mov.rewrite() == NOERR; + if (ok) // Scrivo sul movimento il riferimento al fppro { TString query; query << "UPDATE FPPRO00F \nSET " << @@ -199,7 +199,7 @@ bool TFppro::associa_mov(const int numreg) const return ok; } -const char* TFppro::get_tipoprot() const +const char* TFppro::get_tipoprot() { TString query; @@ -208,80 +208,88 @@ const char* TFppro::get_tipoprot() const return _db->sq_get("TIPOPROT"); } -const char* TFppro::get_numprot() const +const char* TFppro::get_numprot() { TString query; - static TString num; + query << "SELECT PZ_NUMPROT AS NUMPROT FROM FPPRO00F\r\n" << where_str(); _db->sq_set_exec(query); - return num.cut(0) = _db->sq_get("NUMPROT"); + + return _db->sq_get("NUMPROT"); } -const char* TFppro::get_annoprot() const +const char* TFppro::get_annoprot() { TString query; - static TString anno; + query << "SELECT PZ_ANNOPROT AS ANNOPROT FROM FPPRO00F\r\n" << where_str(); _db->sq_set_exec(query); - return anno.cut(0) = _db->sq_get("ANNOPROT"); + return _db->sq_get("ANNOPROT"); } -const char* TFppro::get_dataoraric() const +const char * TFppro::get_dataoraric() { TString query; - static TString data; - query << "SELECT PZ_DATAORARIC AS DATAORARIC FROM FPPRO00F\r\n" << where_str(); + TString & data = get_tmp_string(16); + + query << "SELECT PZ_DATAORARIC AS DATAORARIC FROM FPPRO00F\r\n" << where_str(); _db->sq_set_exec(query); - return data.cut(0) << _db->sq_get_date("DATAORARIC").date2ansi(); + data << _db->sq_get_date("DATAORARIC").date2ansi(); + return data; } -const char* TFppro::get_tipodoc() const +const char* TFppro::get_tipodoc() { TString query; - static TString tipodoc; + query << "SELECT PZ_TIPODOC AS TIPODOC FROM FPPRO00F\r\n" << where_str(); _db->sq_set_exec(query); - return tipodoc.cut(0) << _db->sq_get("TIPODOC"); + return _db->sq_get("TIPODOC"); } -const char* TFppro::get_numdoc() const +const char* TFppro::get_numdoc() { TString query; - static TString numdoc; + query << "SELECT PZ_NUMERO AS NUMDOC FROM FPPRO00F\r\n" << where_str(); _db->sq_set_exec(query); - return numdoc.cut(0) << _db->sq_get("NUMDOC"); + return _db->sq_get("NUMDOC"); } TDate TFppro::get_data_first_doc() const { TString query; + query << "SELECT min(a.DATA) AS DATA \nFROM( \n\tSELECT P7_DATA as DATA \n" << "\tFROM PAA0700F \n\tUNION \n\tSELECT P7_DATA as DATA \n\tFROM PAF0700F \n) a"; _db->sq_set_exec(query); return _db->sq_get_date("DATA"); } -TDate TFppro::get_dataorarioric() const +TDate TFppro::get_dataorarioric() { TString query; + query << "SELECT P1_DATAORARIC \nFROM PAA0100F \n" << - "WHERE P1_KEYPRGINVIO = '" << _keys.prginvio << "' AND P1_KEYHEADERFATT = '" << _keys.headerfatt << "' AND P1_KEYBODYFATT = '" << _keys.bodyfatt << "'"; + "WHERE P1_KEYPRGINVIO = '" << _keys.get(0) << "' AND P1_KEYHEADERFATT = '" << _keys.get(1) << "' AND P1_KEYBODYFATT = '" << _keys.get(2) << "'"; _db->sq_set_exec(query); return _db->sq_get_date("P1_DATAORARIC"); } -int TFppro::get_numregcont() const +long TFppro::get_numregcont() { TString query; + query << "SELECT PZ_NUMREGCONT FROM FPPRO00F\n" << where_str(); _db->sq_set_exec(query); - return _db->sq_get_int("PZ_NUMREGCONT"); + return _db->sq_get_long("PZ_NUMREGCONT"); } TString TFppro::get_last_error(bool clear) { - TString l(_last_error); + TString & l = get_tmp_string(128); + + l = _last_error; if(clear) _last_error.cut(0); return l; @@ -297,14 +305,14 @@ bool TFppro::set_query() return _is_set = false; } -const char* TFppro::where_str() const +const char* TFppro::where_str() { static TString str; - str.cut(0) << " WHERE PZ_KEYPRGINVIO = '" << _keys.prginvio << "' AND PZ_KEYHEADERFATT = '" << _keys.headerfatt << "' AND PZ_KEYBODYFATT = '" << _keys.bodyfatt << "'"; + str.cut(0) << " WHERE PZ_KEYPRGINVIO = '" << _keys.get(0) << "' AND PZ_KEYHEADERFATT = '" << _keys.get(1) << "' AND PZ_KEYBODYFATT = '" << _keys.get(2) << "'"; return str; } -TFppro::TFppro() : _keys({ "\0", "\0", "\0" }), _keys_setted(false), _is_set(false) +TFppro::TFppro() : _keys("", ';'), _keys_setted(false), _is_set(false) { _db = new SSimple_query(); const bool ok = set_connection(*_db); @@ -324,11 +332,12 @@ prot_s TProtocollo::get_prot() TString& TProtocollo::prot_in(const int year, const char* tipoprot, const char* progres) { - static TString protocollo; + TString & protocollo = get_tmp_string(128); TString tipo(tipoprot); + if (tipo.empty()) tipo << "no_prot"; - protocollo.cut(0) << year << "-" << tipo << "/" << progres; + protocollo << year << "-" << tipo << "/" << progres; return protocollo; } @@ -363,29 +372,21 @@ const char* get_ini_codcaus() return ini_get_string(FILE_CONFIG, FILE_SECTION, F1_CAUS); } -const char* get_codcaus(const char * tipodoc, const char* codcf) +const char* get_codcaus(const char * tipodoc, long codcf) { - TLocalisamfile cfven(LF_CFVEN); - cfven.put(CFV_TIPOCF, "F"); - cfven.put(CFV_CODCF, codcf); - const char* codcaus = ""; - const char* codcausnc = ""; + TCli_for f = cached_clifor('F', codcf); const bool nc = TString(tipodoc) == "TD04"; - if (cfven.read() == NOERR) - { - codcaus = cfven.get(CFV_CODCAUS); - codcausnc = cfven.get(CFV_CODCAUSNC); - } - if (nc) { - if (!TString(codcausnc).empty()) - return codcausnc; + const TString & codcaus = f.vendite().get(CFV_CODCAUSNC); + if (codcaus.full()) + return codcaus; } else { - if (!TString(codcaus).empty()) + const TString & codcaus = f.vendite().get(CFV_CODCAUS); + if (codcaus.full()) return codcaus; } return get_ini_codcaus(); @@ -444,74 +445,42 @@ bool check_causale(const TString& cod_caus, bool acq) bool check_causale(const TString& cod_caus, const TString& tipo_doc, bool acq) { - const TCausale& caus = cached_causale(cod_caus); + const TCausale& c = cached_causale(cod_caus); if(tipo_doc == "FA" || tipo_doc == "BD" || tipo_doc == "AF" || tipo_doc == "FF") - return caus.tipo_doc() == tipo_doc; + return c.tipo_doc() == tipo_doc; if (tipo_doc == "NC" || tipo_doc == "ND") { bool nota; bool nota_iva = false; - if ((nota = caus.tipo_doc() == tipo_doc)) + + if ((nota = c.tipo_doc() == tipo_doc)) { if (acq) - nota_iva = caus.reg().tipo() == iva_acquisti; + nota_iva = c.reg().tipo() == iva_acquisti; else - nota_iva = caus.reg().tipo() == iva_vendite; + nota_iva = c.reg().tipo() == iva_vendite; } return nota && nota_iva; } - return false; } -bool check_caus_has_rit(const TString& cod_caus, bool rit) +bool check_caus_has_rit(const TString& cod_caus, int year) { - TLocalisamfile causali(LF_CAUSALI); - causali.put(CAU_CODCAUS, cod_caus); - causali.read(); - return *causali.get(CAU_M770) != '\0'; + const TCausale & c = cached_causale(cod_caus, year); + + return c.causale_770().full(); } void run_cont_ini(bool liq) { - static TString run_string; -#ifdef DBG - run_string.cut(0) << "cg2 -0 -i" << F1_INIREGCONT << "*" << ".ini" << " -f1" << (liq? " -liq" : " ") << " /u" << user(); -#else - run_string.cut(0) << "cg2 -0 -i" << TFilename().tempdir() << "\\" << F1_INIREGCONT << "*" << ".ini" << " -f1" << (liq ? " -liq" : " ") << " /u" << user(); -#endif - TExternal_app(run_string).run(); + TString cmd; + + cmd.cut(0) << "cg2 -0 -i" << TFilename().temp("cg2CONTAB", "ini") << " -f1" << (liq ? " -liq" : " ") << " /u" << user(); + + TExternal_app app(cmd); + + app.run(); } - -void TF1_log::log(int severity, const char* msg) -{ - if (_log == nullptr) - { - _log = new TLog_report("Stato contabilizzazione:"); - // Tento l'eliminazione del file - std::remove("f1_cg.log"); - } - - static TString txt; - txt.cut(0) << msg; - _log->log(severity, txt); - // Scrivo anche su file - std::filebuf fb; - fb.open("f1_cg.log", std::ios::out | std::ios::app); - std::ostream os(&fb); - os << txt << std::endl; - fb.close(); -} - -bool TF1_log::show_log() -{ - if (_log) - { - _log->preview(); - delete _log; - _log = nullptr; - } - return true; -} \ No newline at end of file diff --git a/src/f1/f1lib.h b/src/f1/f1lib.h index 420a73779..fcc6cff2b 100644 --- a/src/f1/f1lib.h +++ b/src/f1/f1lib.h @@ -8,7 +8,6 @@ #define FILE_CONFIG CONFIG_DITTA #define FILE_SECTION "f1" #define F1_CAUS "caus" -#define F1_INIREGCONT "cg2CONTAB" #define LOG_MSG 0 #define LOG_WARN 1 #define LOG_ERR 2 @@ -39,61 +38,44 @@ typedef struct _prot_s */ class TFppro : public TObject { - struct keys_s - { - TString prginvio; - TString headerfatt; - TString bodyfatt; - - operator const char*() const - { - static TToken_string a("", ';'); - a.add(prginvio); - a.add(headerfatt); - a.add(bodyfatt); - return a; - } - } _keys; - + TToken_string _keys; SSimple_query* _db; bool _keys_setted; bool _is_set; // Query is setted TString _fppro_query; TString _last_error; - static bool sql_inj(const TString& str); - static bool sql_inj(const keys_s& keys); + bool sql_inj(TToken_string& keys); public: - const char* where_str() const; + const char* where_str(); bool check_reg(TToken_string& keys, int numreg); // Se un mov. registrato non e' collegato all'FPPRO cerco di capire qual'e` bool guess_the_doc(const TLocalisamfile& mov); // Getters - const char* get_keys_fppro() const; - int get_numreg(); - int get_numreg(TToken_string& keys); - TString get_codforn() const; + const char* get_keys_fppro(); + long get_numreg(); + long get_numreg(TToken_string& keys); + long get_codforn(); TDate get_datareg(); TDate get_datareg(TToken_string& keys); - real get_ritenute() const; + real get_ritenute(); TDate get_data_first_doc() const; - TDate get_dataorarioric() const; - int get_numregcont() const; + TDate get_dataorarioric(); + long get_numregcont(); TString get_last_error(bool clear = true); // Setters bool set_query(); TFppro& set_keys(TToken_string& keys); - TFppro& set_keys(const keys_s& keys); - bool associa_mov(int numreg) const; - const char* get_tipoprot() const; - const char* get_numprot() const; - const char* get_annoprot() const; - const char* get_dataoraric() const; - const char* get_tipodoc() const; - const char* get_numdoc() const; + bool associa_mov(long numreg); + const char* get_tipoprot(); + const char* get_numprot(); + const char* get_annoprot(); + const char* get_dataoraric(); + const char* get_tipodoc(); + const char* get_numdoc(); TFppro(); TFppro(TToken_string& keys) : TFppro() { set_keys(keys); } @@ -125,19 +107,17 @@ public: }; -class TF1_log : TObject +class TF1_log : public TLog_report { - TLog_report* _log; public: - TF1_log() : _log(nullptr){} - void log(int severity, const char* msg); - bool show_log(); + TF1_log() : TLog_report("Stato contabilizzazione:") {} + bool show_log() { export_text("f1_cg.log", false); return preview(); } }; TFppro& fppro_db(); const char* get_ini_codcaus(); -const char* get_codcaus(const char * tipodoc, const char* codcf); +const char* get_codcaus(const char * tipodoc, long codcf); bool get_endatareg(); TString get_datainireg(); TString get_dataendreg(); @@ -153,7 +133,7 @@ void set_periodprec(bool flag); bool check_causale(const TString& cod_caus, bool acq = true); // Controlla se il "cod_caus" ha come "tipo_doc" FA o NC (di acquisto) bool check_causale(const TString& cod_caus, const TString& tipo_doc, bool acq = true); -bool check_caus_has_rit(const TString& cod_caus, bool rit); +bool check_caus_has_rit(const TString& cod_caus, int year = 0); void run_cont_ini(bool liq); #endif // _F1LIB_H_ diff --git a/src/f9/f9lib02.cpp b/src/f9/f9lib02.cpp index 0914762af..9c0640655 100644 --- a/src/f9/f9lib02.cpp +++ b/src/f9/f9lib02.cpp @@ -593,7 +593,9 @@ bool TF9Prospetto_integr::operator()(const char* numreg_acq, const char* numreg_ _items = _prosp_rs->items(); if (_items == 0) { - FILE* log = fopen("TF9Prospetto_integr_error.txt", "a"); + FILE* log; + + fopen_s(&log, "TF9Prospetto_integr_error.txt", "a"); if (!_prosp_rs->last_exec()) { if (log != nullptr) diff --git a/src/fp/Rappresentazione_tabellare_del_tracciato_FatturaPA_versione_1.2.1.xls b/src/fp/Rappresentazione_tabellare_del_tracciato_FatturaPA_versione_1.2.1.xls index 94d22552894f82398935073705385d069e5209e6..990e3f18b395038c4b848ac42c2dad58ed5167df 100644 GIT binary patch delta 62 zcmV-E0Kxx&vV+7VRC6nlR*ks UlTZo=gP013m6m9get_int(xvtil_cid2index(S_ANNO)), riga->get(xvtil_cid2index(S_CODNUM)), riga->get_long(xvtil_cid2index(S_NDOC))); - if (chiave_paf(doc, campo_hfatt, campo_bfatt)) + if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt)) { // Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo query.cut(0) << "UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'"; @@ -345,7 +342,7 @@ void TPA_mask::connect_keys() TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), riga->get(xvtil_cid2index(S_CODNUM)), riga->get_long(xvtil_cid2index(S_NDOC))); static TString campo_hfatt, campo_bfatt, query; - if (chiave_paf(doc, campo_hfatt, campo_bfatt)) + if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt)) { // Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo query.cut(0) << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'"; @@ -687,7 +684,7 @@ void TPA_mask::set_err_paf() TString hfatt, bfatt; TPaf_record paf0100f("PAF0100F"); - if (fdoc.read() == NOERR && chiave_paf(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt)) + if (fdoc.read() == NOERR && chiave_paf_doc(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt)) { static TString query; query.cut(0) << diff --git a/src/fp/fp0400.cpp b/src/fp/fp0400.cpp index dd90e67fc..de91a77d4 100644 --- a/src/fp/fp0400.cpp +++ b/src/fp/fp0400.cpp @@ -17,6 +17,7 @@ #define FILTER_ALL "A" #define FILTER_CONT "C" #define PARA_FP "fp" +#define F1_INIREGCONT "regcont" enum { @@ -669,7 +670,7 @@ int TPassive_mask::prepara_contab() const { TString prokeys = row->get(sf.cid2index(S_PROKEY)); TToken_string keys(prokeys, ';'); - const TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get(cid2index(S_FORNITORE)))); + const TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get_long(cid2index(S_FORNITORE)))); TString tipodoc(row->get(sf.cid2index(S_TIPODOCSDI))); if (tipodoc == "TD01" && !check_causale(codcaus, "FA", true)) @@ -868,7 +869,7 @@ int TPassive_mask::check_err() const { if (row->starts_with("X")) { - TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get(cid2index(S_FORNITORE)))); + TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get_long(cid2index(S_FORNITORE)))); if (codcaus.empty()) return no_codcaus; if (TString(row->get(cid2index(S_FORNITORE))).empty()) diff --git a/src/fp/fp0700.cpp b/src/fp/fp0700.cpp index 82f2c8513..8768083f7 100644 --- a/src/fp/fp0700.cpp +++ b/src/fp/fp0700.cpp @@ -13,21 +13,16 @@ #include "fp0700a.h" #include "fp0100a.h" -///////////////////////////////////////////////////////////////////////////////////// -// Globals -///////////////////////////////////////////////////////////////////////////////////// - -#define LEN_HFATT 20 -#define LEN_BFATT 50 - ///////////////////////////////////////////////////////////////////////////////////// // TPAR_mask ///////////////////////////////////////////////////////////////////////////////////// class TPAR_mask : public TAutomask { + TAssoc_array _causali; + protected: - enum {_codnum, _tipodoc, _dastato, _astato, _tiposdi}; + enum { _codnum, _tipodoc, _dastato, _astato, _tiposdi }; void set_filter_changed(); void set_pronto(); @@ -50,35 +45,29 @@ protected: bool _enable_chiave_fixer; public: - TPAR_mask() : TAutomask("fp0700a"), _filter_changed(true), _enable_chiave_fixer(false) - { - disable(DLG_OK); - disable(DLG_SAVEREC); - disable(DLG_FINDREC); - load_all_fields(); - const TDate data_inizio = get_date_start_new_fatt(); - - } - void save_all_fields() const; + const TAssoc_array & causali() const { return _causali; } + void save_all_fields(); + TPAR_mask(); + virtual ~TPAR_mask() {} }; -void TPAR_mask::save_all_fields() const +TPAR_mask *__mask = nullptr; + +void TPAR_mask::save_all_fields() { + TSheet_field & scaus = sfield(F_CAUSALI_TIPO); + // Salvo le impostazioni ini_set_string(CONFIG_DITTA, "fp", "dataini", get(F_DATAINI)); ini_set_string(CONFIG_DITTA, "fp", "dataend", get(F_DATAEND)); - + ini_set_string(CONFIG_DITTA, "fp", "TIPO_SDI", get(F_TIPO_SDI)); // Salvo lo sheet - TFP_selected_docs selected_docs; - selected_docs.save_sheet(sfield(F_CAUSALI_TIPO)); - - // Salvo le impostazioni -/* - set_esp_pri_empty(get_bool(F_SETDEFCOD)); - set_send_all_rifs(get_bool(F_SENDALLRIFS)); - set_esp_est(get_bool(F_SETCODEST)); - set_esp_est_cod(get(F_VALCODEST)); -*/ - + _causali.destroy(); + FOR_EACH_SHEET_ROW_LOOP(scaus, r) + { + const TString & codcaus = scaus.get_str_row_cell(r, S_COD_CAUS); + ini_set_string(CONFIG_DITTA, "fp", "CAUSALE", codcaus, r); + _causali.add(codcaus); + } } void TPAR_mask::force_reload_sheet() @@ -97,117 +86,71 @@ void TPAR_mask::load_all_fields() set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend")); const TToken_string s_accepted_docs(ini_get_string(CONFIG_DITTA, "fp", "accepted_docs"), ';'); - // - TSheet_field& sheet = sfield(F_CAUSALI_TIPO); + TSheet_field& scaus = sfield(F_CAUSALI_TIPO); - TFP_selected_regs selected_regs; - - if (selected_regs.has_selected_regs()) + for (int i = 0;; i++) { - // Super nuova gestione super avanzata! - selected_regs.fill_sheet(sheet); + TString16 caus = ini_get_string(CONFIG_DITTA, "fp", "CAUSALE", "", i); + + if (caus.full()) + scaus.set_row_cell(S_COD_CAUS, caus); + else + break; } - else if(s_accepted_docs.full()) - { - // Nuova gestione avanzata! - FOR_EACH_STR_TOKEN(s_accepted_docs, tok) - { - TToken_string& row = sheet.row(-1); - row.add(tok); - row.add(TTipo_documento(TToken_string(tok).get(1)).tipo_doc_sdi()); - } - } - else - { - // Vecchia gestione ): - const TString& codnum = ini_get_string(CONFIG_DITTA, "fp", "codnum"); - TToken_string tipidocs(ini_get_string(CONFIG_DITTA, "fp", "tipodocs")); - FOR_EACH_STR_TOKEN(tipidocs, tok) - { - TToken_string& row = sheet.row(-1); - row.add(codnum); - row.add(tok); - // Considero 1 e 9 come stati default? - row.add(1); - row.add(9); - row.add(TTipo_documento(tok).tipo_doc_sdi()); - } - } - sheet.force_update(); - sheet.show(); + scaus.force_update(); + set(F_TIPO_SDI, ini_get_string(CONFIG_DITTA, "fp", "TIPO_SDI")); +} - /* DA FARE - set(F_SETDEFCOD, get_esp_pri_empty()); - set(F_SENDALLRIFS, get_send_all_rifs()); - set(F_SETCODEST, get_esp_est()); - set(F_VALCODEST, get_esp_est_cod()); - */ +bool caus_filter(const TRelation* r) +{ + return __mask->causali().is_key(r->lfile().get(MOV_CODCAUS)); } void TPAR_mask::fill() { - // Salvo subito su file le impostazioni di esportazione, in fplib accedo ai file - save_all_fields(); - - TSheet_field& docs = sfield(F_DOCS); - TString_array& sht = docs.rows_array(); - docs.hide(); - - sht.destroy(); - const TDate dal = get(F_DATAINI); const TDate al = get(F_DATAEND); - TString filter_selected = get(F_DOCSEL); + TString filter_selected = get(F_REGSEL); + // Record di controllo per eventuali elaborazioni precedenti + TString hfatt, bfatt; + TPaf_record paf0100f("PAF0100F"); + TSheet_field& regs = sfield(F_REGS); + TString query; enable(DLG_OK, filter_selected.empty() || filter_selected == "E"); enable(DLG_SAVEREC, (is_f8() && filter_selected == "X") || filter_selected == "D"); enable(DLG_FINDREC, filter_selected == "D"); enable(DLG_PRINT, _enable_chiave_fixer && filter_selected.empty()); - // Record di controllo per eventuali elaborazioni precedenti - TString hfatt(LEN_HFATT), bfatt(LEN_BFATT); - TPaf_record paf0100f("PAF0100F"); - - TString query; - - query << "USE 33 KEY 3 \n" << - "SELECT 33.TIPOCF==\"C\" \n" << - "JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF \n" << - "JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF \n" << - "JOIN %TIP TO 33 ALIAS 400 INTO CODTAB==TIPODOC \n" << - "FROM DATADOC=#DADATADOC \n" << - "TO DATADOC=#ADATADOC"; + query << "USE " << LF_MOV << " KEY 3 SELECT (BETWEEN(" << MOV_DATAREG << "," + << dal.date2ansi() << ',' << al.date2ansi() << "))&&(REG!=\"\")" + << "\nFROM " << MOV_TIPO << "=C\nTO " << MOV_TIPO "=C"; TISAM_recordset rec(query); - - rec.set_var("#DADATADOC", dal); - rec.set_var("#ADATADOC", al); + + rec.set_filterfunction(caus_filter); TProgress_monitor pi(rec.items(), nullptr); bool first, show, ask = !((show = (first = true))); int fat_no_cod = 0; + const TString16 tipodocsdi = get(F_TIPO_SDI); + const TDate data_inizio = get_date_start_new_fatt(); // Disabilito la colonna del codice ufficio - docs.enable_column(cid2index(S_UFFICIO), false); - const TDate data_inizio = get_date_start_new_fatt(); + regs.enable_column(cid2index(S_UFFICIO), false); + regs.reset(); for (bool okc = rec.move_first(); okc; okc = rec.move_next()) { if (!pi.add_status()) break; - const TRectype& doc = rec.cursor()->curr(); - const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC)); - - // Controllo che la numerazione sia tra quelle giuste - - // Controllo che il tipo documento sia OK - if(!check_doc_filter(doc)) - continue; - + const TRectype& mov = rec.cursor()->curr(); + const TCli_for & cli = cached_clifor(mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF)); bool sent = false; - if (chiave_paf(doc, hfatt, bfatt)) + + if (chiave_paf_mov(mov, tipodocsdi, hfatt, bfatt)) { if (paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != " " && paf0100f.sq_get("P1_ERRINT") != "*") { @@ -219,26 +162,17 @@ void TPAR_mask::fill() continue; } - TToken_string& row = docs.row(-1); - row = sent ? " " : "X"; - row.add(rec.get(DOC_ANNO).as_int(), 1); - row.add(rec.get(DOC_CODNUM).as_string()); - row.add(rec.get(DOC_TIPODOC).as_string()); + int r = regs.set_row_cell(S_SELECTED, sent); - TString tipodoc = rec.get(DOC_TIPODOCSDI).as_string(); - - if (tipodoc.blank()) - tipodoc = td.tipo_doc_sdi(); - if (today 0) warning_box("Sono state trovate una o piĂ¹ fatture senza codice destinatario nĂ© pec"); @@ -289,7 +220,7 @@ void TPAR_mask::set_filter_changed() void TPAR_mask::set_pronto() { - TString_array& sht = sfield(F_DOCS).rows_array(); + TString_array& sht = sfield(F_REGS).rows_array(); TProgress_monitor pi(sht.items(), "Esportazione Fatture"); FOR_EACH_ARRAY_ROW(sht, r, riga) { @@ -302,7 +233,7 @@ void TPAR_mask::set_pronto() static TString campo_hfatt, campo_bfatt, query; TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), EMPTY_STRING, riga->get_long(xvtil_cid2index(S_NUMREG))); - if (chiave_paf(doc, campo_hfatt, campo_bfatt)) + if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt)) { // Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo query.cut(0) << "UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'"; @@ -317,7 +248,7 @@ void TPAR_mask::set_pronto() void TPAR_mask::connect_keys() { - TString_array& sht = sfield(F_DOCS).rows_array(); + TString_array& sht = sfield(F_REGS).rows_array(); TLog_report legno("Allineamento chiavi documento"); // Non sto a fare 8000 variabili, oggi mi sento a corto di Byte static TString msg_log; @@ -340,7 +271,7 @@ void TPAR_mask::connect_keys() TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), EMPTY_STRING, riga->get_long(xvtil_cid2index(S_NUMREG))); static TString campo_hfatt, campo_bfatt, query; - if (chiave_paf(doc, campo_hfatt, campo_bfatt)) + if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt)) { // Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo query.cut(0) << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'"; @@ -440,7 +371,7 @@ void TPAR_mask::export_paf() { int ndocs = 0; TLocalisamfile doc(LF_DOC); - TString_array& sht = sfield(F_DOCS).rows_array(); + TString_array& sht = sfield(F_REGS).rows_array(); TDoc_fp elab; //elab.set_cache_insert(true); @@ -454,8 +385,8 @@ void TPAR_mask::export_paf() if (riga->starts_with("X")) { - const int anno = riga->get_int(sfield(F_DOCS).cid2index(S_ANNO)); - const long nreg = riga->get_long(sfield(F_DOCS).cid2index(S_NUMREG)); + const int anno = riga->get_int(sfield(F_REGS).cid2index(S_ANNO)); + const long nreg = riga->get_long(sfield(F_REGS).cid2index(S_NUMREG)); const TDoc_key key(anno, EMPTY_STRING, nreg); //da fare // Verifico che il codice sdi nello sheet sia lo stesso sulla testata del documento in caso contrario lo aggiorno @@ -502,7 +433,7 @@ bool TPAR_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) case F_DATAEND: if (e == fe_init) o.set(TDate(TODAY)); - case F_DOCS: + case F_REGS: if (e == se_query_add || e == se_query_del) return false; break; @@ -513,24 +444,19 @@ bool TPAR_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) case DLG_USER: if (e == fe_button && jolly > 0) { - TSheet_field& docs = sfield(F_DOCS); - TToken_string& row = docs.row(docs.selected()); - TRectype doc(LF_DOC); - doc.put(DOC_PROVV, 'D'); - doc.put(DOC_ANNO, row.get(1)); - doc.put(DOC_CODNUM, row.get(2)); - doc.put(DOC_TIPODOC, row.get(3)); - doc.put(DOC_NDOC, row.get(5)); - if (doc.edit(LF_DOC, "", "ve0")) // Perchè prima andava senza dovergli mettere nulla? - fill(); + TSheet_field& regs = sfield(F_REGS); + TToken_string& row = regs.row(regs.selected()); + // Salvo subito su file le impostazioni di esportazione, in fplib accedo ai file + save_all_fields(); + fill(); } break; case DLG_ALL: { if (e == fe_button) { - TSheet_field& docs = sfield(F_DOCS); - TString_array& sht = docs.rows_array(); + TSheet_field& regs = sfield(F_REGS); + TString_array& sht = regs.rows_array(); const int items = sht.items(); if (items > 0) @@ -538,7 +464,7 @@ bool TPAR_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) const TString4 select = *(sht.row(0).get(0)) == 'X' ? "" : "X"; for (int i = 0; i < items; i++) sht.row(i).add(select, 0); - docs.force_update(); + regs.force_update(); } } } @@ -580,7 +506,7 @@ void TPAR_mask::next_page(int p) { if ((ok = _filter_changed = check_full_fields())) { - TSheet_field& sf = sfield(F_DOCS); + save_all_fields(); fill(); _filter_changed = false; } @@ -605,7 +531,7 @@ bool TPAR_mask::on_key(const KEY key) bool TPAR_mask::check_not_empty() { - TSheet_field& sheet = sfield(F_DOCS); + TSheet_field& sheet = sfield(F_REGS); TString msg; if (sheet.empty()) @@ -637,8 +563,10 @@ bool TPAR_mask::check_doc_filter(const TDocumentoEsteso& d) const const TString& tipodoc = d.get(DOC_TIPODOC); const char stato = d.stato(); const TTipo_documento& td = cached_tipodoc(d.get(DOC_TIPODOC)); + TSheet_field & scaus = sfield(F_CAUSALI_TIPO); + // Mi precarico la tabella dei documenti scelti - FOR_EACH_SHEET_ROW(sfield(F_CAUSALI_TIPO), nr, row) + FOR_EACH_SHEET_ROW(scaus, nr, row) { if (codnum.compare(row->get(_codnum)) == 0 && // Codice numerazione tipodoc.compare(row->get(_tipodoc)) == 0 && // Tipo documento @@ -653,78 +581,78 @@ bool TPAR_mask::check_doc_filter(const TDocumentoEsteso& d) const void TPAR_mask::set_err_paf() { // Vado a riportare sui paf l'errore - TSheet_field& sfld = sfield(F_DOCS); - TString_array& sht = sfld.rows_array(); - TLocalisamfile fdoc(LF_DOC); - if (!sht.empty()) + TSheet_field& sfld = sfield(F_REGS); + TProgress_monitor pi(sfld.items(), "Cambio stato fatture"); + const TString tipodocsdi = get(F_TIPO_SDI); + + FOR_EACH_SHEET_ROW_LOOP(sfld, r) { - TProgress_monitor pi(sht.items(), "Cambio stato fatture"); + if (!pi.add_status()) + break; - FOR_EACH_ARRAY_ROW(sht, r, riga) + if (sfld.get_bool_row_cell(r, S_SELECTED)) { - if (!pi.add_status()) - break; + // Ricontrollo che la fattura sia presente in Campo prima di cambiare stato + long nreg = sfld.get_long_row_cell(r, S_NUMREG); + const TRectype & mov = cache().get(LF_MOV, nreg); + TString hfatt, bfatt; + TPaf_record paf0100f("PAF0100F"); - if (riga->starts_with("X")) + if (chiave_paf_mov(mov, tipodocsdi, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt)) { - const int anno = riga->get_int(sfield(F_DOCS).cid2index(S_ANNO)); - const long nreg = riga->get_long(sfield(F_DOCS).cid2index(S_NUMREG)); - const TDoc_key key(anno, EMPTY_STRING, nreg); - // Ricontrollo che la fattura sia presente in Campo prima di cambiare stato - fdoc.zero(); - fdoc.put(DOC_PROVV, key.provv()); - fdoc.put(DOC_ANNO, key.anno()); - fdoc.put(DOC_CODNUM, key.codnum()); - fdoc.put(DOC_NDOC, key.ndoc()); - - TString hfatt, bfatt; - TPaf_record paf0100f("PAF0100F"); - if (fdoc.read() == NOERR && chiave_paf(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt)) + TString query; + query << + "UPDATE PAF0100F SET P1_GESTIONE = 'E', P1_KEYPRGINVIO = 'DELETED' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF0200F SET P2_GESTIONE = 'E', P2_KEYPRGINVIO = 'DELETED' WHERE P2_KEYHEADERFATT = '" << hfatt << "' AND P2_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF0400F SET P4_GESTIONE = 'E', P4_KEYPRGINVIO = 'DELETED' WHERE P4_KEYHEADERFATT = '" << hfatt << "' AND P4_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF0700F SET P7_GESTIONE = 'E', P7_KEYPRGINVIO = 'DELETED' WHERE P7_KEYHEADERFATT = '" << hfatt << "' AND P7_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF0800F SET P8_GESTIONE = 'E', P8_KEYPRGINVIO = 'DELETED' WHERE P8_KEYHEADERFATT = '" << hfatt << "' AND P8_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF1000F SET P0_GESTIONE = 'E', P0_KEYPRGINVIO = 'DELETED' WHERE P0_KEYHEADERFATT = '" << hfatt << "' AND P0_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF1100F SET PA_GESTIONE = 'E', PA_KEYPRGINVIO = 'DELETED' WHERE PA_KEYHEADERFATT = '" << hfatt << "' AND PA_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF1200F SET PB_GESTIONE = 'E', PB_KEYPRGINVIO = 'DELETED' WHERE PB_KEYHEADERFATT = '" << hfatt << "' AND PB_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF1600F SET PF_GESTIONE = 'E', PF_KEYPRGINVIO = 'DELETED' WHERE PF_KEYHEADERFATT = '" << hfatt << "' AND PF_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF1700F SET PG_GESTIONE = 'E', PG_KEYPRGINVIO = 'DELETED' WHERE PG_KEYHEADERFATT = '" << hfatt << "' AND PG_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF1800F SET PI_GESTIONE = 'E', PI_KEYPRGINVIO = 'DELETED' WHERE PI_KEYHEADERFATT = '" << hfatt << "' AND PI_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF1900F SET PY_GESTIONE = 'E', PY_KEYPRGINVIO = 'DELETED' WHERE PY_KEYHEADERFATT = '" << hfatt << "' AND PY_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF2000F SET PJ_GESTIONE = 'E', PJ_KEYPRGINVIO = 'DELETED' WHERE PJ_KEYHEADERFATT = '" << hfatt << "' AND PJ_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF2100F SET PK_GESTIONE = 'E', PK_KEYPRGINVIO = 'DELETED' WHERE PK_KEYHEADERFATT = '" << hfatt << "' AND PK_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF2200F SET PL_GESTIONE = 'E', PL_KEYPRGINVIO = 'DELETED' WHERE PL_KEYHEADERFATT = '" << hfatt << "' AND PL_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF2400F SET PN_GESTIONE = 'E', PN_KEYPRGINVIO = 'DELETED' WHERE PN_KEYHEADERFATT = '" << hfatt << "' AND PN_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF2500F SET PO_GESTIONE = 'E', PO_KEYPRGINVIO = 'DELETED' WHERE PO_KEYHEADERFATT = '" << hfatt << "' AND PO_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF2600F SET PP_GESTIONE = 'E', PP_KEYPRGINVIO = 'DELETED' WHERE PP_KEYHEADERFATT = '" << hfatt << "' AND PP_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF2700F SET PQ_GESTIONE = 'E', PQ_KEYPRGINVIO = 'DELETED' WHERE PQ_KEYHEADERFATT = '" << hfatt << "' AND PQ_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF3000F SET PT_GESTIONE = 'E', PT_KEYPRGINVIO = 'DELETED' WHERE PT_KEYHEADERFATT = '" << hfatt << "' AND PT_KEYBODYFATT = '" << bfatt << "';\n" << + "UPDATE PAF3200F SET PU_GESTIONE = 'E', PU_KEYPRGINVIO = 'DELETED' WHERE PU_KEYHEADERFATT = '" << hfatt << "' AND PU_KEYBODYFATT = '" << bfatt << "';\n" << + // PAFW3 non ha il flag di gestione + "UPDATE PAFW300F SET PW_KEYPRGINVIO = 'DELETED' WHERE PW_KEYHEADERFATT = '" << hfatt << "' AND PW_KEYBODYFATT = '" << bfatt << "';\n"; + if(!fp_db().sq_set_exec(query)) { - static TString query; - query.cut(0) << - "UPDATE PAF0100F SET P1_GESTIONE = 'E', P1_KEYPRGINVIO = 'DELETED' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF0200F SET P2_GESTIONE = 'E', P2_KEYPRGINVIO = 'DELETED' WHERE P2_KEYHEADERFATT = '" << hfatt << "' AND P2_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF0400F SET P4_GESTIONE = 'E', P4_KEYPRGINVIO = 'DELETED' WHERE P4_KEYHEADERFATT = '" << hfatt << "' AND P4_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF0700F SET P7_GESTIONE = 'E', P7_KEYPRGINVIO = 'DELETED' WHERE P7_KEYHEADERFATT = '" << hfatt << "' AND P7_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF0800F SET P8_GESTIONE = 'E', P8_KEYPRGINVIO = 'DELETED' WHERE P8_KEYHEADERFATT = '" << hfatt << "' AND P8_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF1000F SET P0_GESTIONE = 'E', P0_KEYPRGINVIO = 'DELETED' WHERE P0_KEYHEADERFATT = '" << hfatt << "' AND P0_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF1100F SET PA_GESTIONE = 'E', PA_KEYPRGINVIO = 'DELETED' WHERE PA_KEYHEADERFATT = '" << hfatt << "' AND PA_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF1200F SET PB_GESTIONE = 'E', PB_KEYPRGINVIO = 'DELETED' WHERE PB_KEYHEADERFATT = '" << hfatt << "' AND PB_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF1600F SET PF_GESTIONE = 'E', PF_KEYPRGINVIO = 'DELETED' WHERE PF_KEYHEADERFATT = '" << hfatt << "' AND PF_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF1700F SET PG_GESTIONE = 'E', PG_KEYPRGINVIO = 'DELETED' WHERE PG_KEYHEADERFATT = '" << hfatt << "' AND PG_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF1800F SET PI_GESTIONE = 'E', PI_KEYPRGINVIO = 'DELETED' WHERE PI_KEYHEADERFATT = '" << hfatt << "' AND PI_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF1900F SET PY_GESTIONE = 'E', PY_KEYPRGINVIO = 'DELETED' WHERE PY_KEYHEADERFATT = '" << hfatt << "' AND PY_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF2000F SET PJ_GESTIONE = 'E', PJ_KEYPRGINVIO = 'DELETED' WHERE PJ_KEYHEADERFATT = '" << hfatt << "' AND PJ_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF2100F SET PK_GESTIONE = 'E', PK_KEYPRGINVIO = 'DELETED' WHERE PK_KEYHEADERFATT = '" << hfatt << "' AND PK_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF2200F SET PL_GESTIONE = 'E', PL_KEYPRGINVIO = 'DELETED' WHERE PL_KEYHEADERFATT = '" << hfatt << "' AND PL_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF2400F SET PN_GESTIONE = 'E', PN_KEYPRGINVIO = 'DELETED' WHERE PN_KEYHEADERFATT = '" << hfatt << "' AND PN_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF2500F SET PO_GESTIONE = 'E', PO_KEYPRGINVIO = 'DELETED' WHERE PO_KEYHEADERFATT = '" << hfatt << "' AND PO_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF2600F SET PP_GESTIONE = 'E', PP_KEYPRGINVIO = 'DELETED' WHERE PP_KEYHEADERFATT = '" << hfatt << "' AND PP_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF2700F SET PQ_GESTIONE = 'E', PQ_KEYPRGINVIO = 'DELETED' WHERE PQ_KEYHEADERFATT = '" << hfatt << "' AND PQ_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF3000F SET PT_GESTIONE = 'E', PT_KEYPRGINVIO = 'DELETED' WHERE PT_KEYHEADERFATT = '" << hfatt << "' AND PT_KEYBODYFATT = '" << bfatt << "';\n" << - "UPDATE PAF3200F SET PU_GESTIONE = 'E', PU_KEYPRGINVIO = 'DELETED' WHERE PU_KEYHEADERFATT = '" << hfatt << "' AND PU_KEYBODYFATT = '" << bfatt << "';\n" << - // PAFW3 non ha il flag di gestione - "UPDATE PAFW300F SET PW_KEYPRGINVIO = 'DELETED' WHERE PW_KEYHEADERFATT = '" << hfatt << "' AND PW_KEYBODYFATT = '" << bfatt << "';\n"; - if(!fp_db().sq_set_exec(query)) - { - TString err = "Impossibile salvare la fattura "; err << anno << " " << " " << nreg << "\nVerrĂ  saltata."; - error_box(err); - } - - } - else - { - TString err = "Impossibile trovare la fattura "; err << anno << " " << " " << nreg << "\nVerrĂ  saltata."; + TString err = "Impossibile salvare la regolarizzazione "; err << nreg << "\nVerrĂ  saltata."; error_box(err); } + + } + else + { + TString err = "Impossibile trovare la fattura "; err << nreg << "\nVerrĂ  saltata."; + error_box(err); } } - fp_db().sq_commit(); } + fp_db().sq_commit(); force_reload_sheet(); } +TPAR_mask::TPAR_mask() : TAutomask("fp0700a"), _filter_changed(true), _enable_chiave_fixer(false) +{ + disable(DLG_OK); + disable(DLG_SAVEREC); + disable(DLG_FINDREC); + load_all_fields(); + const TDate data_inizio = get_date_start_new_fatt(); + __mask = this; + +} ///////////////////////////////////////////////////////////////////////////////////// // TReg2Paf diff --git a/src/fp/fp0700a.h b/src/fp/fp0700a.h index 1c984fd81..f8790865c 100644 --- a/src/fp/fp0700a.h +++ b/src/fp/fp0700a.h @@ -1,11 +1,11 @@ #define F_DATAINI 401 #define F_DATAEND 402 -#define F_DOCSEL 403 +#define F_REGSEL 403 #define F_CAUSALI_TIPO 404 #define F_TIPO_SDI 405 -#define F_DOCS 406 +#define F_REGS 406 #define START_MASK F_DATAINI -#define END_MASK F_DOCS +#define END_MASK F_REGS #define S_COD_CAUS 101 diff --git a/src/fp/fp0700a.uml b/src/fp/fp0700a.uml index c9a7da494..523d5a0fd 100644 --- a/src/fp/fp0700a.uml +++ b/src/fp/fp0700a.uml @@ -62,11 +62,14 @@ BEGIN CHECKTYPE REQUIRED END -RADIOBUTTON F_DOCSEL 7 80 +RADIOBUTTON F_REGSEL 7 80 BEGIN - PROMPT 1 3 "Documenti da visualizzare" - ITEM "P|Provvisori" - ITEM "D|Definitivi" + PROMPT 1 3 "Registrazioni da visualizzare" + ITEM "|Da inviare" + ITEM "X|XML Generato" + ITEM "N|Notificato" + ITEM "E|In errore" + ITEM "D|Diag." FLAGS "Z" END @@ -97,7 +100,7 @@ END ENDPAGE PAGE "Elenco Regolarizzazioni" 0 2 0 0 -SPREADSHEET F_DOCS +SPREADSHEET F_REGS BEGIN PROMPT 0 2 "" ITEM "@1" diff --git a/src/fp/fplib.h b/src/fp/fplib.h index 60aa701ae..7e8e1ffec 100644 --- a/src/fp/fplib.h +++ b/src/fp/fplib.h @@ -35,8 +35,9 @@ TString& complete_num_fp(const TCodice_numerazione& codnum, const int numdoc); // Genera la chiave per i paf -bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt); -bool chiave_paf(const TRectype& doc, TString& hfatt, TString& bfatt); +bool chiave_paf_mov(const TRectype& mov, const TString & tipodoc, TString& hfatt, TString& bfatt); +bool chiave_paf_doc(const TDocumento& doc, TString& hfatt, TString& bfatt); +bool chiave_paf_doc(const TRectype& doc, TString& hfatt, TString& bfatt); // Ritorna cod sdi, pec o vuoto. Chiama get_coddest() TString get_dest_sdi(char tipocf, long codcf, const TString& cod_ind_sped); // Valorizza codice sdi e pec in base alle configurazioni del monitor @@ -421,9 +422,8 @@ inline TFP_custom_cache& cached_custom_fp() return *carmelo; } -class TFP_expression : public TObject +class TFP_expression : public TObject // ma perchè non derivano da expre documento cazzone ? se sono più espressioni prima si separa la token string { -private: enum TFP_operator { error, eq, neq, gt, ls, gteq, lseq, and, or }; // Etrattori @@ -445,8 +445,8 @@ public: static bool check_condition(const TString& cond, TRiga_documento& rdoc); static bool check_condition(const TString& cond, TDocumento& doc) { return check_condition(cond, doc[1]); } - TFP_expression() = default; - virtual ~TFP_expression() = default; + TFP_expression() {}; + virtual ~TFP_expression() {}; }; // Gestione PAF diff --git a/src/fp/fplib01.cpp b/src/fp/fplib01.cpp index 47c20068c..283ed0005 100644 --- a/src/fp/fplib01.cpp +++ b/src/fp/fplib01.cpp @@ -159,7 +159,27 @@ TString& complete_num_fp(const TCodice_numerazione& codnum, const int numdoc) */ // Crea la coppia di chiavi per il db PAF a partire da un documento vero e proprio -bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt) +bool chiave_paf_mov(const TRectype& mov, const TString & tipodoc, TString& hfatt, TString& bfatt) +{ + TCli_for cli(mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF)); + hfatt.cut(0); + if (cli.is_occasionale()) + hfatt << "O" << mov.get(MOV_OCFPI); + else + hfatt << cli.tipo() << cli.codice(); + CHECK(hfatt.full(), "Destinatario fattura P.A. non valido"); + //20180101_TD01_123456712345671234567 + + TString numdoc = mov.get(MOV_NUMDOC); + + numdoc.lpad(mov.length(DOC_NDOC), '0'); + bfatt = mov.get_date(MOV_DATAREG).date2ansi(); + bfatt << '_' << tipodoc << '_' << numdoc; + return hfatt.full() && bfatt.full(); +} + + +bool chiave_paf_doc(const TDocumento& doc, TString& hfatt, TString& bfatt) { hfatt.cut(0); if (doc.clifor().is_occasionale()) @@ -174,10 +194,10 @@ bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt) } // Crea la coppia di chiavi per il db PAF a partire da un semplice record di testata documento -bool chiave_paf(const TRectype& doc, TString& hfatt, TString& bfatt) +bool chiave_paf_doc(const TRectype& doc, TString& hfatt, TString& bfatt) { const TDocumento d(doc); - chiave_paf(d, hfatt, bfatt); + chiave_paf_doc(d, hfatt, bfatt); return hfatt.full(); } @@ -1015,7 +1035,7 @@ bool TDoc_fp::initialize(TDocumentoEsteso& doc) // Paese del documento _paese = "IT"; _has_bolla = false; - if (!chiave_paf(doc, _hfatt, _bfatt)) + if (!chiave_paf_doc(doc, _hfatt, _bfatt)) return false; // Preparo il log log(-1, _bfatt); @@ -1838,36 +1858,34 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc) rifs.trim(); if (rifs == "0") rifs.cut(0); - int pos = rifs.find(" - "); - int len = rifs.len(); - long numlinea = 0; - if (len > 0 && pos < 0) - pos = len; + int len = rifs.len(); - for(; pos >= 0;) - { - TToken_string rif(rifs.left(pos), ' '); + if (len > 0) + { + rifs.replace(" - ", "|"); - // // - reset(paf1600f); - temp = rif.get(); - paf1600f.set("PF_NUMDDDT", temp); - temp = rif.get(); + long numlinea = 0; + TToken_string elab_rifs(rifs); - TDate dataddt(atoi(temp.left(2)), atoi(temp.mid(3,2)),atoi( temp.right(2))); - - paf1600f.set("PF_DATADDT", dataddt); - paf1600f.set("PF_GESTIONE", "D"); - paf1600f.set("PF_RIFNUMLINEA", numlinea++); - ok &= insert(paf1600f); - rifs.ltrim(pos + 3); - pos = rifs.find(" - "); - len = rifs.len(); - if (len > 0 && pos < 0) - pos = len; - // - } + FOR_EACH_STR_TOKEN(elab_rifs, str) + { + TToken_string rif(str, ' '); + + // // + reset(paf1600f); + temp = rif.get(); + paf1600f.set("PF_NUMDDDT", temp); + temp = rif.get(); + + TDate dataddt(atoi(temp.left(2)), atoi(temp.mid(3, 2)), atoi(temp.right(2))); + + paf1600f.set("PF_DATADDT", dataddt); + paf1600f.set("PF_GESTIONE", "D"); + paf1600f.set("PF_RIFNUMLINEA", numlinea++); + ok &= insert(paf1600f); // + } + } } FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc) { diff --git a/src/fp/fplib03.cpp b/src/fp/fplib03.cpp index 0f034a169..ee0150491 100644 --- a/src/fp/fplib03.cpp +++ b/src/fp/fplib03.cpp @@ -91,7 +91,7 @@ bool TFp_mail_sender::send(const TString& msg) TPaf_record paf0100f("PAF0100F"); TString query; - if (chiave_paf(fdoc, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt)) + if (chiave_paf_doc(fdoc, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt)) { query << "UPDATE PAF0100F SET P1_ERRINT = 'S' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "'"; fp_db().sq_set_exec(query); diff --git a/src/fp/fplib05.cpp b/src/fp/fplib05.cpp index 3874dd69d..5a73e01ad 100644 --- a/src/fp/fplib05.cpp +++ b/src/fp/fplib05.cpp @@ -477,7 +477,8 @@ void TFP_expression::split_condition(const TString& cond, TString& cond_sx, TStr } } -// Questa funzione potrebbe diventare standard per TRectype +// Questa funzione potrebbe diventare standard per TRectype. Ma vai a cagare i variant sono da eliminare + TVariant& TFP_expression::get_value(const TRectype& rec, const TString& campo) { TVariant& ret = get_tmp_var(); diff --git a/src/gfm/median.c b/src/gfm/median.c index 6cf7d88ed..9fbd519fb 100755 --- a/src/gfm/median.c +++ b/src/gfm/median.c @@ -73,7 +73,7 @@ int n; tmpa[i] = pSrc[i]; /* sort pointers */ - qsort((void *)tmpa,n,sizeof(DEC *), _SortInc); + qsort((void *)tmpa,n,sizeof(DEC *), (int (__cdecl *)(void)) _SortInc); if (n%2) _MacDCopy(pDst, tmpa[(n-1)/2]); diff --git a/src/gv/gvlib.cpp b/src/gv/gvlib.cpp index 8eceda97c..318f39cf3 100755 --- a/src/gv/gvlib.cpp +++ b/src/gv/gvlib.cpp @@ -5,7 +5,6 @@ #include "../cg/cglib.h" - /////////////////////////////////////////////////////////// // TRigheF24_set /////////////////////////////////////////////////////////// diff --git a/src/ha/ha1300.cpp b/src/ha/ha1300.cpp index 97d52d481..7e1c67a38 100755 --- a/src/ha/ha1300.cpp +++ b/src/ha/ha1300.cpp @@ -5,7 +5,7 @@ #include #include "../cg/cg2101.h" -#include "../cg/cg2103.h" +#include "../cg/cglib.h" #include "../cg/cgsaldac.h" #include "../mg/movmag.h" #include "../mg/rmovmag.h" diff --git a/src/ha/hacnv300.cpp b/src/ha/hacnv300.cpp index eed031101..934a24f47 100755 --- a/src/ha/hacnv300.cpp +++ b/src/ha/hacnv300.cpp @@ -12,7 +12,7 @@ #include #include "../cg/cglib01.h" -#include "../cg/cg2103.h" +#include "../cg/cglib.h" #include "../cg/cgsaldac.h" #include "../cg/cgpagame.h" diff --git a/src/ic/ic0100f.rep b/src/ic/ic0100f.rep index d9aa99419..d671d9cd9 100644 --- a/src/ic/ic0100f.rep +++ b/src/ic/ic0100f.rep @@ -395,7 +395,9 @@ THEN #F1.203 +! - USE IVADIFF SELECT (BETWEEN(DATAREG,#DAL,#AL))(TIPOIVA==#TIPOIVA)(TIPODIFF==#TIPODIFF)((CHIUSA=#CHIUSA)||(#CHIUSA="T")) + USE IVADIFF KEY 4 SELECT (BETWEEN(DATAREGP;#DAL;#AL))(TIPOIVA==#TIPOIVA)(TIPODIFF==#TIPODIFF)((CHIUSA=#CHIUSA)||(#CHIUSA="T")) +FROM DATAREG=#DAL +TO DATAREG=#AL JOIN MOV INTO NUMREG==NUMREG JOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF \ No newline at end of file diff --git a/src/ic/ic0200.cpp b/src/ic/ic0200.cpp index d6719f489..ce81e5f86 100644 --- a/src/ic/ic0200.cpp +++ b/src/ic/ic0200.cpp @@ -20,7 +20,7 @@ public: void TICpag_print::main_loop() { - TMask m("ic0100a"); + TMask m("ic0200a"); while (m.run() == K_ENTER) { TICpag_report r("ic0200p"); diff --git a/src/ic/ic0200p.rep b/src/ic/ic0200p.rep index e911580c4..649ed8684 100644 --- a/src/ic/ic0200p.rep +++ b/src/ic/ic0200p.rep @@ -1,71 +1,71 @@ - + -

-
+