diff --git a/cd/test/bs1090a.ini b/cd/test/bs1090a.ini index 5e512596b..03186ac35 100644 --- a/cd/test/bs1090a.ini +++ b/cd/test/bs1090a.ini @@ -7,7 +7,7 @@ Patch = 1090 Versione = 21511200 [bs] -Data = 15-10-2021 +Data = 26-10-2021 Descrizione = Bee Store Dischi = 1 Moduli = ve diff --git a/cd/test/bs1090a1.zip b/cd/test/bs1090a1.zip index 77106513b..9d94b130c 100644 Binary files a/cd/test/bs1090a1.zip and b/cd/test/bs1090a1.zip differ diff --git a/cd/test/ve1094.txt b/cd/test/ve1094.txt new file mode 100644 index 000000000..4818e2b59 --- /dev/null +++ b/cd/test/ve1094.txt @@ -0,0 +1,9 @@ +ve0.exe +ve0200e.msk +ve0200f.msk +ve1.exe +ve3400.msk + +Aggiornate segnalazioni nell'inserimento documenti. +Parametro "Separa la riga esenzioni " per avere una riga vuota prima della riga esenzioni. +ridistribuita la maschera ve3400 \ No newline at end of file diff --git a/cd/test/ve1094a.ini b/cd/test/ve1094a.ini new file mode 100644 index 000000000..35ca8e4f4 --- /dev/null +++ b/cd/test/ve1094a.ini @@ -0,0 +1,141 @@ +[Main] +Demo=0 + +[ve0] +Edit_163 = ve0 -6 +Edit_33 = ve0 -0 +Edit_4 = ve0 -4 +Edit_5 = ve0 -4 +File(20) = ve0.exe|X +File(31) = ve0200e.msk|X +File(32) = ve0200f.msk|X +Patch = 1094 +Versione = 21511200 + +[ve1] +File(48) = ve1.exe|X +File(77) = ve3400.msk|X +Patch = 1094 +Versione = 21511200 + +[ve99] +Kill(0) = batbcld.msk|x +Kill(1) = bastspp.rep|x +Kill(2) = bastbnp.msk|x +Kill(3) = batbeld.msk|x +Kill(4) = batbgsa.msk|x +Kill(5) = bastfrm.msk|x +Kill(6) = bastcaa.rep|x +Kill(7) = bastcra.rep|x +Kill(8) = batbfrr.msk|x +Kill(9) = bastgcg.rep|x +Kill(10) = bastfrr.rep|x +Kill(11) = batbfrm.msk|x +Kill(12) = bastgca.msk|x +Kill(13) = batbfrd.msk|x +Kill(14) = basttri.rep|x +Kill(15) = batbprv.msk|x +Kill(16) = ve7400conf.ini|x +Kill(17) = bastfca.msk|x +Kill(18) = batbasf.msk|x +Kill(19) = batbpro.msk|x +Kill(20) = batbbnp.msk|x +Kill(21) = bastums.rep|x +Kill(22) = bastctr.msk|x +Kill(23) = ve7.exe|x +Kill(24) = basteld.rep|x +Kill(25) = batbtri.msk|x +Kill(26) = efstbnp.rep|x +Kill(27) = ve7500a.msk|x +Kill(28) = batbgca.msk|x +Kill(29) = basteld.msk|x +Kill(30) = bastasf.rep|x +Kill(31) = batbrfa.msk|x +Kill(32) = batbgcg.msk|x +Kill(33) = bastctr.rep|x +Kill(34) = eftbbnp.msk|x +Kill(35) = batbrfc.msk|x +Kill(36) = basttag.rep|x +Kill(37) = bastgca.rep|x +Kill(38) = batbfca.msk|x +Kill(39) = ve7300a.frm|x +Kill(40) = bastabe.msk|x +Kill(41) = bastfca.rep|x +Kill(42) = bastspp.msk|x +Kill(43) = ve7300a.msk|x +Kill(44) = bastubi.msk|x +Kill(45) = batbcaa.msk|x +Kill(46) = bastcau.rep|x +Kill(47) = bastcaa.msk|x +Kill(48) = bastrfa.msk|x +Kill(49) = bastimb.rep|x +Kill(50) = bastgmc.msk|x +Kill(51) = batbubi.msk|x +Kill(52) = bastgcg.msk|x +Kill(53) = batbstd.msk|x +Kill(54) = batbfid.msk|x +Kill(55) = basttag.msk|x +Kill(56) = batbctr.msk|x +Kill(57) = batbspp.msk|x +Kill(58) = bastums.msk|x +Kill(59) = bastfrm.rep|x +Kill(60) = ve7100a.msk|x +Kill(61) = bastasf.msk|x +Kill(62) = bastabe.rep|x +Kill(63) = bastrfc.msk|x +Kill(64) = batbfsa.msk|x +Kill(65) = batbabe.msk|x +Kill(66) = batbtip.msk|x +Kill(67) = bastubi.rep|x +Kill(68) = bastrfc.rep|x +Kill(69) = batbprs.msk|x +Kill(70) = basttip.rep|x +Kill(71) = bastcau.msk|x +Kill(72) = bastnum.rep|x +Kill(73) = ve7400a.ini|x +Kill(74) = ve7200a.frm|x +Kill(75) = ve7200a.msk|x +Kill(76) = baststd.rep|x +Kill(77) = ve7400a.msk|x +Kill(78) = batbcau.msk|x +Kill(79) = bastrfa.rep|x +Kill(80) = baststd.msk|x +Kill(81) = bastimb.msk|x +Kill(82) = bastprs.msk|x +Kill(83) = bastfrr.msk|x +Kill(84) = ve7600a.msk|x +Kill(85) = batbmre.msk|x +Kill(86) = batbtag.msk|x +Kill(87) = batbnum.msk|x +Kill(88) = bastnum.msk|x +Kill(89) = batbums.msk|x +Kill(90) = bastprs.rep|x +Kill(91) = batbcra.msk|x +Kill(92) = ve7700a.msk|x +Kill(93) = batbspt.msk|x +Kill(94) = basttri.msk|x +Kill(95) = bastbnp.rep|x +Kill(96) = efstbnp.msk|x +Kill(97) = ve7701a.ini|x +Kill(98) = batbacr.msk|x +Kill(99) = batbimb.msk|x +Kill(100) = batbgmc.msk|x +Kill(101) = bastcra.msk|x +Kill(102) = bastgmc.rep|x +Kill(103) = bastfrd.msk|x +Kill(104) = basttip.msk|x +Kill(105) = bastfrd.rep|x + +[ve] +Data = 21-10-2021 +Descrizione = Vendite +Dischi = 1 +Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9 +OEM = +Patch = 1094 +PostProcess = bainst -0 VE +PreProcess = +Prezzo(1) = +Prezzo(2) = +Versione = 21511200 + diff --git a/cd/test/ve1094a1.zip b/cd/test/ve1094a1.zip new file mode 100644 index 000000000..ef795d8a7 Binary files /dev/null and b/cd/test/ve1094a1.zip differ diff --git a/src/ve/ve0200e.uml b/src/ve/ve0200e.uml index 41e6cbf01..897049e9d 100755 --- a/src/ve/ve0200e.uml +++ b/src/ve/ve0200e.uml @@ -249,7 +249,7 @@ END STRING F_CMSCNTFIELD 10 BEGIN PROMPT 2 20 "Campo commesse per reperire la causale" - FLAGS "U" + FLAGS "U" FIELD CMSCNTFIELD END diff --git a/src/ve/ve0200f.uml b/src/ve/ve0200f.uml index ca99cbde9..bb3092295 100755 --- a/src/ve/ve0200f.uml +++ b/src/ve/ve0200f.uml @@ -261,9 +261,15 @@ BEGIN FIELD DESESENZ END +BOOLEAN F_SEPARA_ESENZ +BEGIN + PROMPT 2 8 "Separa la riga esenzioni " + FIELD SEPARA_ESENZ +END + STRING F_SCTRIGA 4 BEGIN - PROMPT 2 8 "Tipo riga sconti testa " + PROMPT 2 9 "Tipo riga sconti testa " FLAGS "U" USE %TRI SELECT S7=="C" FIELD TRSCONTI diff --git a/src/ve/ve0300.cpp b/src/ve/ve0300.cpp index 3f454d4ca..bd7c82d7c 100755 --- a/src/ve/ve0300.cpp +++ b/src/ve/ve0300.cpp @@ -1377,7 +1377,7 @@ void TMask_generator::genera_testata_1() else { _m->prompt(2, 4, "Fornitore "); - _m->warning("IlFornitore #0 non esiste"); + _m->warning("Il Fornitore #0 non esiste"); _m->help("Ragione sociale del fornitore del documento"); } _m->flag( "R" ); diff --git a/src/ve/ve2400.cpp b/src/ve/ve2400.cpp index 8ccfcc4d5..5c546fe58 100755 --- a/src/ve/ve2400.cpp +++ b/src/ve/ve2400.cpp @@ -1054,6 +1054,7 @@ bool TMask_anamag::handle_sheet_um(TMask_field &fld, KEY k) { TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente TMask_anamag & m= (TMask_anamag &)(fld.mask()); + if (k == K_ENTER && !m.query_mode()) { const int items = f.items(); diff --git a/src/ve/ve5300.cpp b/src/ve/ve5300.cpp index 4e9de6614..b6e511884 100755 --- a/src/ve/ve5300.cpp +++ b/src/ve/ve5300.cpp @@ -41,7 +41,7 @@ int TCopydoc_mask::fill_sheet() for (t = 0; t < num1.ntipi_doc(); t++) { const TString& td = num1.tipo_doc(t); - tipi.add(td, NULL); + tipi.add(td); } const TCodice_numerazione num2(n2); diff --git a/src/ve/veconf.h b/src/ve/veconf.h index b8adf15f1..a5fbad337 100755 --- a/src/ve/veconf.h +++ b/src/ve/veconf.h @@ -171,6 +171,7 @@ #define F_SPADD 144 #define F_MAXADD 145 #define F_IMPMINEFF 146 +#define F_SEPARA_ESENZ 147 // Campi per ve0200g.uml #define F_EXPLODEDB 101 diff --git a/src/ve/velib03.cpp b/src/ve/velib03.cpp index 607ebf603..dad5309e4 100755 --- a/src/ve/velib03.cpp +++ b/src/ve/velib03.cpp @@ -1066,7 +1066,11 @@ void TDocumento::set_riga_esenzione() _des_esenz.insert("Fattura non imponibile"); } + TString d = _des_esenz; + + if (ini_get_bool(CONFIG_STUDIO, "ve", "SEPARA_ESENZ")) + d.insert(" \n"); // nonè uno spazio ma chr(255) const int pos = d.len(); TLi_manager & plaf = plafond(); TString protinf; diff --git a/src/ve/velib06a.cpp b/src/ve/velib06a.cpp index a29449334..3821bed85 100755 --- a/src/ve/velib06a.cpp +++ b/src/ve/velib06a.cpp @@ -533,14 +533,14 @@ bool data_hndl( TMask_field& field, KEY key ) const TDate dataprev = doc.get_date(DOC_DATADOC); same_key = doc.curr().same_key(m.doc().head(), 1, 1); if (same_key && datadoc < dataprev) - return field.error_box("Data documento inferiore alla data del documento precedente"); + return field.error_box("Data documento inferiore alla data del documento precedente(a %s - s %s)", datadoc.stringa(), doc.get_date(DOC_DATADOC).stringa()); } doc.curr() = m.doc().head(); doc.read(_isgreat); same_key = doc.curr().same_key(m.doc().head(), 1, 1); - if (doc.good() && same_key && datadoc > doc.get_date(DOC_DATADOC)) - return field.error_box("Data documento superiore alla data del documento successivo"); + if (doc.good() && same_key && datadoc > doc.get_date(DOC_DATADOC)) + return field.error_box("Data documento superiore alla data del documento successivo (a %s - s %s)", datadoc.stringa(), doc.get_date(DOC_DATADOC).stringa()); } if (key == K_ENTER || field.to_check(key)) { @@ -600,46 +600,40 @@ bool iva_handler( TMask_field& f, KEY key ) if (key == K_ENTER && f.empty()) { - const TString& codiva = mask.condv().clifo().vendite().get(CFV_ASSFIS); - - if (codiva.full()) - f.set(codiva); - f.check(); - } - - if (key == K_ENTER && f.empty()) - { - const TString& codiva = mask.doc().codesiva(); - - if (codiva.full()) - f.set(codiva); - f.check(); - } - - if (key == K_ENTER && f.empty()) - { - const int r = row_mask.get_sheet()->selected() + 1; - const TRiga_documento& riga = mask.doc()[r]; - const int pos_ai = row_mask.id2pos(FR_ADDIVA); - bool addiva = false; - - if (pos_ai >= 0) - addiva = row_mask.fld(pos_ai).get() == "X"; // Controlla le righe Omaggio solo se è settato l'addebito IVA - - const bool check = riga.is_merce() || riga.is_spese() || riga.is_prestazione() || - (riga.is_omaggio() && addiva); - + const int r = row_mask.get_sheet()->selected() + 1; + const TRiga_documento& riga = mask.doc()[r]; + const int pos_ai = row_mask.id2pos(FR_ADDIVA); + const bool addiva = (pos_ai >= 0) && row_mask.fld(pos_ai).get() == "X"; // Controlla le righe Omaggio solo se è settato l'addebito IVA + const bool check = riga.is_merce() || riga.is_spese() || riga.is_prestazione() || (riga.is_omaggio() && addiva); + if (check) { - const int pos_p = row_mask.id2pos(FR_PREZZO); - const int pos_q = row_mask.id2pos(FR_QTA); - const bool pe = pos_p >= 0 && row_mask.fld(pos_p).enabled(); - const bool qe = pos_q >= 0 && row_mask.fld(pos_q).enabled(); - const bool pf = pe && row_mask.fld(pos_p).get().not_empty(); - const bool qf = qe && row_mask.fld(pos_q).get().not_empty(); - const bool required = pf && !(qe && !qf); - if (required) - return f.error_box(TR("Il codice IVA è obbligatorio.")); + const TString& codiva = mask.condv().clifo().vendite().get(CFV_ASSFIS); + + if (codiva.full()) + f.set(codiva); + else + { + const TString& codivaes = mask.doc().codesiva(); + + if (codivaes.full()) + f.set(codivaes); + } + f.check(); + + if (f.empty()) + { + const int pos_p = row_mask.id2pos(FR_PREZZO); + const int pos_q = row_mask.id2pos(FR_QTA); + const bool pe = pos_p >= 0 && row_mask.fld(pos_p).enabled(); + const bool qe = pos_q >= 0 && row_mask.fld(pos_q).enabled(); + const bool pf = pe && row_mask.fld(pos_p).get().full(); + const bool qf = qe && row_mask.fld(pos_q).get().full(); + const bool required = pf && !(qe && !qf); + + if (required) + return f.error_box(FR("Il codice IVA è obbligatorio nella riga %d"), r); + } } } if (f.running_check(key))