From 013ae1d6574faa122423d51f78010a2c8e8adc35 Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 10 Jul 2015 14:57:47 +0000 Subject: [PATCH] git-svn-id: svn://10.65.10.50/branches/R_10_00@23127 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ps/ps0883.cpp | 1 + ps/ps0883.h | 1 + ps/ps0883vet.uml | 63 +++++++++++++++++++++++++++++++++++++++++++----- res/resource.ini | 4 +-- ve/f33.dir | 2 +- ve/f34.dir | 2 +- ve/f34.trr | 28 ++++++++++++--------- ve/ve1300.cpp | 4 +-- ve/ve2500.cpp | 50 +++++++++++++++++--------------------- ve/ve2500ac.uml | 6 ++--- ve/ve2500ax.uml | 4 +-- ve/velib.h | 6 +++++ ve/velib02.cpp | 37 ++++++++++++++++++++++++++-- ve/velib04.cpp | 10 +++++--- ve/velib04.h | 13 +++------- ve/velib04a.cpp | 10 ++++++-- ve/velib04b.cpp | 19 +++++++++------ 17 files changed, 180 insertions(+), 80 deletions(-) diff --git a/ps/ps0883.cpp b/ps/ps0883.cpp index 10b3a36de..b2261af58 100644 --- a/ps/ps0883.cpp +++ b/ps/ps0883.cpp @@ -7,6 +7,7 @@ int main(int argc, char** argv) switch (a) { case 1: ps0883200(argc, argv); break; + case 2: ps0883300(argc, argv); break; default: ps0883100(argc, argv); break; } return 0; diff --git a/ps/ps0883.h b/ps/ps0883.h index ca6e7bb43..7b1830985 100644 --- a/ps/ps0883.h +++ b/ps/ps0883.h @@ -1,3 +1,4 @@ int ps0883100(int argc, char* argv[]); int ps0883200(int argc, char* argv[]); +int ps0883300(int argc, char* argv[]); \ No newline at end of file diff --git a/ps/ps0883vet.uml b/ps/ps0883vet.uml index 567a3cbcc..2ee791c10 100644 --- a/ps/ps0883vet.uml +++ b/ps/ps0883vet.uml @@ -6,9 +6,14 @@ ENDPAGE PAGE "Vettori" 0 2 0 0 -STRING 101 2 +GROUPBOX DLG_NULL 78 6 BEGIN - PROMPT 1 1 "Codice IATA " + PROMPT 1 1 "@bDati vettore" +END + +STRING 101 3 +BEGIN + PROMPT 2 2 "Codice IATA " USE &PS0883VET INPUT CODTAB 101 DISPLAY "Codice" CODTAB @@ -24,7 +29,7 @@ END STRING 102 50 BEGIN - PROMPT 1 2 "Descrizione " + PROMPT 2 3 "Descrizione " USE &PS0883VET KEY 2 INPUT S0 102 DISPLAY "Descrizione@50" S0 @@ -38,7 +43,7 @@ END NUMBER 103 6 BEGIN - PROMPT 1 4 "Codice cliente " + PROMPT 2 4 "Codice cliente " USE LF_CLIFO INPUT TIPOCF "C" INPUT CODCF 103 @@ -46,13 +51,14 @@ BEGIN DISPLAY "Ragione Sociale@50" RAGSOC OUTPUT 103 CODCF OUTPUT 104 RAGSOC - CHECKTYPE REQUIRED + CHECKTYPE NORMAL + ADD RUN cg0 -1 C FIELD I0 END STRING 104 50 BEGIN - PROMPT 1 5 "Ragione sociale " + PROMPT 2 5 "Ragione sociale " USE LF_CLIFO KEY 2 INPUT TIPOCF "C" INPUT RAGSOC 104 @@ -60,6 +66,51 @@ BEGIN DISPLAY "Codice" CODCF COPY OUTPUT 103 CHECKTYPE NORMAL + ADD RUN cg0 -1 C +END + +GROUPBOX DLG_NULL 78 4 +BEGIN + PROMPT 1 8 "@bParametri fatturazione" +END + +STRING 105 20 +BEGIN + PROMPT 2 9 "Codice articolo servizio standard " + FIELD S4 + FLAGS "U" + USE LF_RCONDV + JOIN LF_ANAMAG INTO CODART==CODRIGA + INPUT TIPO "C" + INPUT TIPOCF "C" + INPUT CODCF 103 SELECT + INPUT COD 101 SELECT + INPUT TIPORIGA "A" + INPUT CODRIGA 105 + DISPLAY "Codice@20" CODRIGA + DISPLAY "Descrizione@50" LF_ANAMAG->DESCR + DISPLAY "Gr.Mer." LF_ANAMAG->GRMERC + OUTPUT 105 CODRIGA + CHECKTYPE NORMAL + ADD RUN ve2 -4 +END + +STRING 106 20 +BEGIN + PROMPT 2 10 "Codice articolo BINGO sheet " + FIELD S5 + FLAGS "U" + COPY USE 105 + INPUT TIPO "C" + INPUT TIPOCF "C" + INPUT CODCF 103 SELECT + INPUT COD 101 SELECT + INPUT TIPORIGA "A" + INPUT CODRIGA 106 + COPY DISPLAY 105 + OUTPUT 106 CODRIGA + CHECKTYPE NORMAL + ADD RUN ve2 -4 END ENDPAGE diff --git a/res/resource.ini b/res/resource.ini index 691d43e39..fcc6fee85 100755 --- a/res/resource.ini +++ b/res/resource.ini @@ -246,8 +246,8 @@ Item_00_00 = 30004,Cambio &studio... Item_00_01 = 32001,Cambio &ditta... Item_00_02 = 30007,Cambio &utente... Item_00_03 = -1,Separator -Item_00_04 = 30002,&Aspetto -Item_00_05 = 30003,&Editors +Item_00_04 = 30002,&Aspetto... +Item_00_05 = 30003,&Editors... Item_00_06 = 30008,&Mail... Item_01 = 32350,&Preferiti Item_01_00 = 30005,&Aggiungi diff --git a/ve/f33.dir b/ve/f33.dir index e6d01598e..9d0efea25 100755 --- a/ve/f33.dir +++ b/ve/f33.dir @@ -1,3 +1,3 @@ 33 0 -$doc|0|0|723|0|Documenti di vendita||| +$doc|0|0|723|0|Testate documenti||| diff --git a/ve/f34.dir b/ve/f34.dir index 1dd83fd9a..9899dc1b9 100755 --- a/ve/f34.dir +++ b/ve/f34.dir @@ -1,3 +1,3 @@ 34 0 -$rdoc|||595|0|Righe documenti di vendita||| +$rdoc|||614|0|Righe documenti||| diff --git a/ve/f34.trr b/ve/f34.trr index e1408e87f..2bcb1c4e5 100755 --- a/ve/f34.trr +++ b/ve/f34.trr @@ -1,5 +1,5 @@ 34 -65 +70 CODNUM|1|4|0|Codice Numeriazione ANNO|2|4|0|Anno PROVV|1|1|0|Tipo numerazione

rovvisoria efinitiva @@ -21,13 +21,13 @@ PREZZO|4|18|5|Prezzo o valore PREZZOL|4|18|5|Prezzo o valore per documenti al lordo RIDPREZZO|4|18|5|Riduzione prezzo per scontrini UMQTA|1|2|0|Unita di misura -QTA|4|15|5|Quantita' -QTAEVASA|4|13|5|Quantita' evasa -QTAGG1|4|13|5|1a quantita' aggiuntiva -QTAGG2|4|13|5|2a quantita' aggiuntiva -QTAGG3|4|13|5|3a quantita' aggiuntiva -QTAGG4|4|13|5|4a quantita' aggiuntiva -QTAGG5|4|13|5|5a quantita' aggiuntiva +QTA|4|15|5|Quantità +QTAEVASA|4|13|5|Quantità evasa +QTAGG1|4|13|5|1a quantità aggiuntiva +QTAGG2|4|13|5|2a quantità aggiuntiva +QTAGG3|4|13|5|3a quantità aggiuntiva +QTAGG4|4|13|5|4a quantità aggiuntiva +QTAGG5|4|13|5|5a quantità aggiuntiva RIGAEVASA|8|1|0|Riga evasa TARA|4|15|2|Tara PNETTO|4|15|2|Peso netto @@ -50,22 +50,27 @@ LINEA|1|5|0|Codice linea di produzione MRP IDRIGA|3|6|0|Identificatore univoco e immutabile riga documento DACODNUM|1|4|0|Numerazione del documento originale DAANNO|2|4|0|Anno del documento originale -DAPROVV|1|1|0|Provvisorieta' del documento originale +DAPROVV|1|1|0|Provvisorietà del documento originale DANDOC|3|7|0|Numero del documento originale DAIDRIGA|3|6|0|Identificatore riga originale +ACODNUM|1|4|0|Numerazione del documento finale +AANNO|2|4|0|Anno del documento finale +APROVV|1|1|0|Provvisorietà del documento finale +ANDOC|3|7|0|Numero del documento finale +AIDRIGA|3|6|0|Identificatore riga finale CODCMS|1|20|0|Codice Commessa FASCMS|1|10|0|Fase Commessa CODCOSTO|1|20|0|Centro di costo CODAGG1|1|20|0|Codice aggiuntivo 1 CODAGG2|1|20|0|Codice aggiuntivo 2 -PRIORITY|3|7|0|Priorita' MSP +PRIORITY|3|7|0|Priorità MSP TIPODET|1|1|0|Tipo detraibilità RG1|11|10|0|Campo memo per formule e campi virtuali DATAINIATT|5|8|0|Data inizio attività DATAFINATT|5|8|0|Data fine attività IDRIGACOLL|3|6|0|Identificatore riga documento collegata TIPOCOLL|1|1|0|Tipo legame riga collegata -7 +8 CODNUM+ANNO+PROVV+NDOC+NRIGA| CODNUM+ANNO+PROVV+CODART+LIVELLO+CODMAG|X PROVV+ANNO+CODNUM+NDOC+NRIGA|X @@ -73,3 +78,4 @@ DAPROVV+DAANNO+DACODNUM+DANDOC+DAIDRIGA|X CODART+ANNO+CODNUM+PROVV+NDOC|X CODCMS+CODCOSTO+PROVV+ANNO+CODNUM+NDOC+NRIGA|X CODCOSTO+CODCMS+PROVV+ANNO+CODNUM+NDOC+NRIGA|X +APROVV+AANNO+ACODNUM+ANDOC+AIDRIGA|X diff --git a/ve/ve1300.cpp b/ve/ve1300.cpp index d123ad27e..4882afb7d 100755 --- a/ve/ve1300.cpp +++ b/ve/ve1300.cpp @@ -1215,7 +1215,6 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def TDoc_book book; // Destinazione dell'intera stampa TDoc_book* mail_book = NULL; // Destinazione della singola mail TLog_report mail_log(TR("Invio documenti per email")); - TProgind pi(docs, TR("Elaborazione documenti..."), true, true); bool attach_mail = mode==out_mail || mode==out_signed_mail; if (attach_mail && is_power_station()) @@ -1232,6 +1231,7 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def const bool mail_requested = (mode == out_mail || mode == out_signed_mail); + TProgress_monitor pi(docs, TR("Elaborazione documenti...")); for (short loop = mail_requested ? 0 : 1; loop < 2; loop++) { const bool mail_loop = (loop == 0); @@ -1239,7 +1239,7 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def for (int i = 0; i < docs; i++) { - if (!pi.addstatus(1)) + if (!pi.add_status()) break; doc.move_to(i); diff --git a/ve/ve2500.cpp b/ve/ve2500.cpp index a13a7b326..bbcbfa8fb 100755 --- a/ve/ve2500.cpp +++ b/ve/ve2500.cpp @@ -399,26 +399,16 @@ TGestione_listini_semplice_mask::TGestione_listini_semplice_mask(const TString& _pos_um = sf_righe.cid2index(S_UM); //4 //inizializza il tipo di condv che serve ('L'istino, 'C'ontratto, 'O'fferta) - char tipo = main_app().argv(2)[0]; - tipo = toupper(tipo); - - switch (tipo) + const char tipo = toupper(mask_name.right(1)[0]); + if (tipo == 'L') { - case 'C': - break; - case 'O': - break; - default: //il default è L - { - //in base alla cervellotica configurazione impostata dall'utonto abilita/disabilita campi - const bool gesliscv = ini_get_bool(CONFIG_DITTA, "ve", "GESLISCV"); - enable(FA_L_CATVEN, gesliscv); - enable(FA_L_DESVEN, gesliscv); - //attenzione!!! il campo CATVEN è in chiave 1! per disabilitarlo ci vuole questo trucco! - if (!gesliscv) - efield(FA_L_CATVEN).reset_key(1); - } - break; + //in base alla cervellotica configurazione impostata dall'utonto abilita/disabilita campi + const bool gesliscv = ini_get_bool(CONFIG_DITTA, "ve", "GESLISCV"); + enable(FA_L_CATVEN, gesliscv); + enable(FA_L_DESVEN, gesliscv); + //attenzione!!! il campo CATVEN è in chiave 1! per disabilitarlo ci vuole questo trucco! + if (!gesliscv) + efield(FA_L_CATVEN).reset_key(1); } } @@ -830,7 +820,7 @@ void TGestione_listini_semplice::save_rows() const TString& TGestione_listini_semplice::find_descr(TToken_string& row) { const char tiporiga = row.get_char(0); - const TString& codriga = row.get(1); + const TFixed_string codriga = row.get(1); switch (tiporiga) { case 'A': @@ -1112,12 +1102,12 @@ void TGestione_listini_semplice::init_modify_mode(TMask& m) bool TGestione_listini_semplice::user_create() { - //controlla se la chiave ha l'autorizzazione a questo programma + /* Controlla se la chiave ha l'autorizzazione a questo programma Tdninst dninst; if (!dninst.can_I_run(true)) - return error_box(TR("Programma non autorizzato!")); + return error_box(TR("Programma non autorizzato!")); */ - //decide il tipo di condizione di vendita: 'L'istino, 'C'ontratto 'O'fferta + //decide il tipo di condizione di vendita: 'L'istino, 'C'ontratto, 'O'fferta _tipo = 'L'; _codice = 0L; if (argc() > 2) //se la chiamata ha un parametro ulteriore ('ve2 -4 c', ad esempio).. @@ -1126,7 +1116,7 @@ bool TGestione_listini_semplice::user_create() if (trans.len() == 1) //se è lungo 1 -> chiamata da menu... { _tipo = trans[0]; - if (argc() > 3) // Es. Hardy: ve2 -4 c 210100 + if (argc() > 3) // Es. Hardy: ve2 -4 c 210100 _codice = max(0, atol(argv(3))); } else @@ -1137,13 +1127,17 @@ bool TGestione_listini_semplice::user_create() if (trans.exist()) { TConfig ini(trans, "52"); - _tipo = ini.get_char("TIPO"); - if (_tipo == 'C') - _codice = ini.get_char(CONDV_CODCF); + _tipo = ini.get_char(CONDV_TIPO); + if (_tipo < 'C') + _tipo = ini.get_char(CONDV_TIPO, "53"); + _codice = ini.get_long(CONDV_CODCF); } } } - _tipo = toupper(_tipo); + if (_codice > 0 && _tipo < 'C') + _tipo = 'C'; + else + _tipo = toupper(_tipo); } _rel = new TRelation(LF_CONDV); diff --git a/ve/ve2500ac.uml b/ve/ve2500ac.uml index 7a36e5d47..f5968c9d0 100755 --- a/ve/ve2500ac.uml +++ b/ve/ve2500ac.uml @@ -65,7 +65,7 @@ BEGIN CHECKTYPE FORCED END -STRING FA_C_DESCF 50 41 +STRING FA_C_DESCF 50 40 BEGIN PROMPT 35 1 "" USE LF_CLIFO KEY 2 @@ -93,7 +93,7 @@ BEGIN DISPLAY "Codice" COD DISPLAY "Descrizione@50" DESCR DISPLAY "Valuta" CODVAL - DISPLAY "Fine validita'" VALFIN + DISPLAY "Fine validità" VALFIN OUTPUT FA_C_TIPOCF TIPOCF OUTPUT FA_C_CODCF CODCF OUTPUT FA_COD COD @@ -114,7 +114,7 @@ BEGIN DISPLAY "Cod.CF" CODCF DISPLAY "Codice" COD DISPLAY "Valuta" CODVAL - DISPLAY "Fine validita'" VALFIN + DISPLAY "Fine validità" VALFIN COPY OUTPUT FA_COD CHECKTYPE REQUIRED END diff --git a/ve/ve2500ax.uml b/ve/ve2500ax.uml index aa480b518..be4669775 100755 --- a/ve/ve2500ax.uml +++ b/ve/ve2500ax.uml @@ -2,13 +2,13 @@ DATA FA_VALINI BEGIN - PROMPT 1 3 "Inizio validita` " + PROMPT 1 3 "Inizio validità " FIELD VALIN END DATA FA_VALFIN BEGIN - PROMPT 35 3 "Fine validita` " + PROMPT 35 3 "Fine validità " FIELD VALFIN END diff --git a/ve/velib.h b/ve/velib.h index daa606494..315654147 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -600,6 +600,12 @@ public: const TRectype* find_original_rdoc() const; const TRectype* find_original_doc() const; + void set_final_rdoc_key(const TRectype& orig); + void reset_final_rdoc_key(); + const TRectype* find_final_rdoc() const; + const TRectype* find_final_doc() const; + void update_rdoc_links(TRiga_documento& dest); // Update key links between rows + virtual TRiga_documento& operator =(const TRiga_documento& r) { return copy(r);} virtual TRectype& operator =(const TRectype & r); virtual TRectype& operator =(const char * r); diff --git a/ve/velib02.cpp b/ve/velib02.cpp index ea5323df3..011e8ee4d 100755 --- a/ve/velib02.cpp +++ b/ve/velib02.cpp @@ -1391,7 +1391,7 @@ const TToken_string & TRiga_documento::get_original_rdoc_key() const return key; } -const TToken_string & TRiga_documento::get_rdoc_key() const +const TToken_string& TRiga_documento::get_rdoc_key() const { TToken_string& key = get_tmp_string(32); key.add(get(RDOC_CODNUM)); @@ -1404,7 +1404,7 @@ const TToken_string & TRiga_documento::get_rdoc_key() const void TRiga_documento::set_original_rdoc_key(const TRectype& orig, int depth) { - CHECK(orig.num() == LF_RIGHEDOC, "Bad document row"); + CHECK(orig.num() == num(), "Bad document row"); switch (depth) { @@ -1480,6 +1480,39 @@ const TRectype* TRiga_documento::find_original_doc() const return NULL; } +void TRiga_documento::set_final_rdoc_key(const TRectype& dest) +{ + CHECK(dest.num() == num(), "Bad document row"); + put(RDOC_ACODNUM, dest.get(RDOC_CODNUM)); + put(RDOC_AANNO, dest.get(RDOC_ANNO)); + put(RDOC_APROVV, dest.get(RDOC_PROVV)); + put(RDOC_ANDOC, dest.get(RDOC_NDOC)); + put(RDOC_AIDRIGA, dest.get(RDOC_IDRIGA)); +} + +void TRiga_documento::reset_final_rdoc_key() +{ + zero(RDOC_ACODNUM); + zero(RDOC_AANNO); + zero(RDOC_APROVV); + zero(RDOC_ANDOC); + zero(RDOC_AIDRIGA); +} + +void TRiga_documento::update_rdoc_links(TRiga_documento& dest) +{ + if (dest.get_int(RDOC_ANNO) > 0) + { + set_final_rdoc_key(dest); + dest.set_original_rdoc_key(*this, 0); + } + else + { + reset_final_rdoc_key(); + dest.reset_original_rdoc_key(); + } +} + void TTipo_riga_documento::set_defaults(TSheet_field& s, int row) const { if (_defaults.items() == 0) // Carica lo string_array con i defaults diff --git a/ve/velib04.cpp b/ve/velib04.cpp index 3a8c82e6a..bbf9552fc 100755 --- a/ve/velib04.cpp +++ b/ve/velib04.cpp @@ -677,15 +677,17 @@ bool TCopia_documento::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o TDocumento& doc_dest = doc_out[d]; doc_dest.copy_contents(doc_src); - const TString4 tipodoc = tipo_finale(); + const TString& tipodoc = tipo_finale(); doc_dest.put(DOC_TIPODOC, tipodoc); - const TString4 stato = stato_finale(); + const TString& stato = stato_finale(); doc_dest.put(DOC_STATO, stato); // Scancello tutti gli inutili riferimenti al documento origine if (!_preserve_original_rif) - for (int r = doc_dest.physical_rows(); r > 0; r--) - doc_dest[r].reset_original_rdoc_key(); + { + FOR_EACH_PHYSICAL_RDOC(doc_dest, r, rdoc) + rdoc->reset_original_rdoc_key(); + } if (data_elab.ok()) doc_dest.put(DOC_DATADOC, data_elab); diff --git a/ve/velib04.h b/ve/velib04.h index 57e05953a..a73d7b285 100755 --- a/ve/velib04.h +++ b/ve/velib04.h @@ -13,10 +13,6 @@ #include "../cg/cg2101.h" #endif -#ifndef __RECARRAY_H -#include -#endif - class TLista_documenti : public TObject // velib04 { TArray _documenti; @@ -204,9 +200,9 @@ public: const TString& codice_numerazione_finale() const { return get("S6"); } const TString& applicazione_esterna() const { return get("S3"); } - void set_params(const TParametri_elaborazione & parms) { _parms = parms;} - bool is_document_ok(const TRectype & doc) const ; - TParametri_elaborazione & params() { return _parms;} + void set_params(const TParametri_elaborazione& parms) { _parms = parms;} + bool is_document_ok(const TRectype& doc) const ; + TParametri_elaborazione& params() { return _parms;} virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, const TDate& data_elab, bool interattivo = false); @@ -267,14 +263,13 @@ protected: TToken_string & campi_riga, const TDate & dcons, const TDate & ddoc); void init(); - virtual bool get_num_tip_out(const TDocumento& doc_out, TString& codnum, TString& tipodoc) const; - public: virtual bool raggruppa(TDocumento& din, TDocumento& dout); virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, const TDate& data_elab, bool interattivo = false); bool change_clifo() { return get_bool("B14"); } + virtual bool get_num_tip_out(const TDocumento& doc_out, TString& codnum, TString& tipodoc) const; TFatturazione_bolle(const char* cod); TFatturazione_bolle(const TRectype& rec); diff --git a/ve/velib04a.cpp b/ve/velib04a.cpp index 9248da091..122515ca4 100755 --- a/ve/velib04a.cpp +++ b/ve/velib04a.cpp @@ -107,7 +107,7 @@ void TFatturazione_bolle::create_row(TDocumento& doc_out, const TRiga_documento& } void TFatturazione_bolle::elabora_riga(TRiga_documento& r, TDocumento& doc_out, bool usa_dcons, bool ragg_rig, bool ignora_desc, - TToken_string & campi_riga, const TDate & dcons, const TDate & ddoc) + TToken_string& campi_riga, const TDate & dcons, const TDate & ddoc) { const bool rindesc = r.sola_descrizione(); // La riga di input e' descrittiva if (ignora_desc && rindesc) @@ -147,7 +147,7 @@ void TFatturazione_bolle::elabora_riga(TRiga_documento& r, TDocumento& doc_out, // se la riga non contiene solo una descrizione if (ragg_rig && !rindesc && da_raggruppare(rin)) // Se devo raggruppare le righe ... { - FOR_EACH_PHYSICAL_RDOC(doc_out, r, rout) // ... cerca una riga compatibile + FOR_EACH_PHYSICAL_RDOC(doc_out, nr, rout) // ... cerca una riga compatibile { if (rout->sola_descrizione()) // Ignora le righe descrittive continue; @@ -155,13 +155,19 @@ void TFatturazione_bolle::elabora_riga(TRiga_documento& r, TDocumento& doc_out, if (rin.raggruppabile(*rout, campi_riga)) // Se esiste una riga compatibile ... { add_rows(*rout, rin); + r.set_final_rdoc_key(*rout); elaborata = true; // Ricorda di averla gia' elaborata break; } } } if (!elaborata) // Se la riga non e' stata gia' sommata ... + { create_row(doc_out, rin); + // Aggiorna collegamento alla riga di destinazione, cioè l'ultima del docuemnto di output + TRiga_documento& riga_fatt = doc_out[doc_out.physical_rows()]; + r.update_rdoc_links(riga_fatt); + } } bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out) diff --git a/ve/velib04b.cpp b/ve/velib04b.cpp index 6b9aeea6e..8693656ee 100755 --- a/ve/velib04b.cpp +++ b/ve/velib04b.cpp @@ -1417,6 +1417,12 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc) } mov_rec.put(MOV_DATACOMPI, dataintra); } + else + { + // Imposta nelle fatture di vendita normali il flag di split payment + if (mov_rec.get_char(MOV_SPLITPAY) <= ' ') + mov_rec.put(MOV_SPLITPAY, is_split_payment(mov_rec) ? 'S': 'N'); + } } } @@ -2800,7 +2806,7 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc, bool recontabiliz TGeneric_distrib d(anticipo.get_num(), ndec); d.add(totimponibili.get_num()); - d.add(imposte); + d.add(imposte_effettive); d.add(totspese.get_num()); const TCurrency_documento pagtotimponibili(totimponibili.get_num() - d.get(), doc); @@ -2829,9 +2835,9 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc, bool recontabiliz } else { - pag.set_total( pagtotimponibili, pagtotimposte, pagtotspese); + pag.set_total(pagtotimponibili, pagtotimposte, pagtotspese); } - pag.set_rate_auto( ); + pag.set_rate_auto(); } else pag.zap_rate(); @@ -2865,7 +2871,6 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc, bool recontabiliz const int nr = pag.n_rate(); - /* real imponibile, imponibile_val; for (int i = nr-1; i >= 0; i--) { @@ -2873,9 +2878,9 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc, bool recontabiliz imponibile_val += pag.tval_rata(i); imponibile += pag.tlit_rata(i); } - */ - partita.put(PART_IMPORTO, pag.imponibile(false)); - partita.put(PART_IMPORTOVAL, in_valuta ? pag.imponibile(true) : ZERO); + + partita.put(PART_IMPORTO, imponibile); + partita.put(PART_IMPORTOVAL, in_valuta ? imponibile_val : ZERO); partita.put(PART_IMPOSTA, pag.imposta(in_valuta)); partita.put(PART_SPESE, totspese.get_num());