git-svn-id: svn://10.65.10.50/branches/R_10_00@23127 c028cbd2-c16b-5b4b-a496-9718f37d4682

This commit is contained in:
guy 2015-07-10 14:57:47 +00:00
parent 805d9691eb
commit 013ae1d657
17 changed files with 180 additions and 80 deletions

View File

@ -7,6 +7,7 @@ int main(int argc, char** argv)
switch (a) switch (a)
{ {
case 1: ps0883200(argc, argv); break; case 1: ps0883200(argc, argv); break;
case 2: ps0883300(argc, argv); break;
default: ps0883100(argc, argv); break; default: ps0883100(argc, argv); break;
} }
return 0; return 0;

View File

@ -1,3 +1,4 @@
int ps0883100(int argc, char* argv[]); int ps0883100(int argc, char* argv[]);
int ps0883200(int argc, char* argv[]); int ps0883200(int argc, char* argv[]);
int ps0883300(int argc, char* argv[]);

View File

@ -6,9 +6,14 @@ ENDPAGE
PAGE "Vettori" 0 2 0 0 PAGE "Vettori" 0 2 0 0
STRING 101 2 GROUPBOX DLG_NULL 78 6
BEGIN BEGIN
PROMPT 1 1 "Codice IATA " PROMPT 1 1 "@bDati vettore"
END
STRING 101 3
BEGIN
PROMPT 2 2 "Codice IATA "
USE &PS0883VET USE &PS0883VET
INPUT CODTAB 101 INPUT CODTAB 101
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
@ -24,7 +29,7 @@ END
STRING 102 50 STRING 102 50
BEGIN BEGIN
PROMPT 1 2 "Descrizione " PROMPT 2 3 "Descrizione "
USE &PS0883VET KEY 2 USE &PS0883VET KEY 2
INPUT S0 102 INPUT S0 102
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
@ -38,7 +43,7 @@ END
NUMBER 103 6 NUMBER 103 6
BEGIN BEGIN
PROMPT 1 4 "Codice cliente " PROMPT 2 4 "Codice cliente "
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "C" INPUT TIPOCF "C"
INPUT CODCF 103 INPUT CODCF 103
@ -46,13 +51,14 @@ BEGIN
DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT 103 CODCF OUTPUT 103 CODCF
OUTPUT 104 RAGSOC OUTPUT 104 RAGSOC
CHECKTYPE REQUIRED CHECKTYPE NORMAL
ADD RUN cg0 -1 C
FIELD I0 FIELD I0
END END
STRING 104 50 STRING 104 50
BEGIN BEGIN
PROMPT 1 5 "Ragione sociale " PROMPT 2 5 "Ragione sociale "
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "C" INPUT TIPOCF "C"
INPUT RAGSOC 104 INPUT RAGSOC 104
@ -60,6 +66,51 @@ BEGIN
DISPLAY "Codice" CODCF DISPLAY "Codice" CODCF
COPY OUTPUT 103 COPY OUTPUT 103
CHECKTYPE NORMAL 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 END
ENDPAGE ENDPAGE

View File

@ -246,8 +246,8 @@ Item_00_00 = 30004,Cambio &studio...
Item_00_01 = 32001,Cambio &ditta... Item_00_01 = 32001,Cambio &ditta...
Item_00_02 = 30007,Cambio &utente... Item_00_02 = 30007,Cambio &utente...
Item_00_03 = -1,Separator Item_00_03 = -1,Separator
Item_00_04 = 30002,&Aspetto Item_00_04 = 30002,&Aspetto...
Item_00_05 = 30003,&Editors Item_00_05 = 30003,&Editors...
Item_00_06 = 30008,&Mail... Item_00_06 = 30008,&Mail...
Item_01 = 32350,&Preferiti Item_01 = 32350,&Preferiti
Item_01_00 = 30005,&Aggiungi Item_01_00 = 30005,&Aggiungi

View File

@ -1,3 +1,3 @@
33 33
0 0
$doc|0|0|723|0|Documenti di vendita||| $doc|0|0|723|0|Testate documenti|||

View File

@ -1,3 +1,3 @@
34 34
0 0
$rdoc|||595|0|Righe documenti di vendita||| $rdoc|||614|0|Righe documenti|||

View File

@ -1,5 +1,5 @@
34 34
65 70
CODNUM|1|4|0|Codice Numeriazione CODNUM|1|4|0|Codice Numeriazione
ANNO|2|4|0|Anno ANNO|2|4|0|Anno
PROVV|1|1|0|Tipo numerazione <P>rovvisoria <D>efinitiva PROVV|1|1|0|Tipo numerazione <P>rovvisoria <D>efinitiva
@ -21,13 +21,13 @@ PREZZO|4|18|5|Prezzo o valore
PREZZOL|4|18|5|Prezzo o valore per documenti al lordo PREZZOL|4|18|5|Prezzo o valore per documenti al lordo
RIDPREZZO|4|18|5|Riduzione prezzo per scontrini RIDPREZZO|4|18|5|Riduzione prezzo per scontrini
UMQTA|1|2|0|Unita di misura UMQTA|1|2|0|Unita di misura
QTA|4|15|5|Quantita' QTA|4|15|5|Quantità
QTAEVASA|4|13|5|Quantita' evasa QTAEVASA|4|13|5|Quantità evasa
QTAGG1|4|13|5|1a quantita' aggiuntiva QTAGG1|4|13|5|1a quantità aggiuntiva
QTAGG2|4|13|5|2a quantita' aggiuntiva QTAGG2|4|13|5|2a quantità aggiuntiva
QTAGG3|4|13|5|3a quantita' aggiuntiva QTAGG3|4|13|5|3a quantità aggiuntiva
QTAGG4|4|13|5|4a quantita' aggiuntiva QTAGG4|4|13|5|4a quantità aggiuntiva
QTAGG5|4|13|5|5a quantita' aggiuntiva QTAGG5|4|13|5|5a quantità aggiuntiva
RIGAEVASA|8|1|0|Riga evasa RIGAEVASA|8|1|0|Riga evasa
TARA|4|15|2|Tara TARA|4|15|2|Tara
PNETTO|4|15|2|Peso netto 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 IDRIGA|3|6|0|Identificatore univoco e immutabile riga documento
DACODNUM|1|4|0|Numerazione del documento originale DACODNUM|1|4|0|Numerazione del documento originale
DAANNO|2|4|0|Anno 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 DANDOC|3|7|0|Numero del documento originale
DAIDRIGA|3|6|0|Identificatore riga 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 CODCMS|1|20|0|Codice Commessa
FASCMS|1|10|0|Fase Commessa FASCMS|1|10|0|Fase Commessa
CODCOSTO|1|20|0|Centro di costo CODCOSTO|1|20|0|Centro di costo
CODAGG1|1|20|0|Codice aggiuntivo 1 CODAGG1|1|20|0|Codice aggiuntivo 1
CODAGG2|1|20|0|Codice aggiuntivo 2 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à TIPODET|1|1|0|Tipo detraibilità
RG1|11|10|0|Campo memo per formule e campi virtuali RG1|11|10|0|Campo memo per formule e campi virtuali
DATAINIATT|5|8|0|Data inizio attività DATAINIATT|5|8|0|Data inizio attività
DATAFINATT|5|8|0|Data fine attività DATAFINATT|5|8|0|Data fine attività
IDRIGACOLL|3|6|0|Identificatore riga documento collegata IDRIGACOLL|3|6|0|Identificatore riga documento collegata
TIPOCOLL|1|1|0|Tipo legame riga collegata TIPOCOLL|1|1|0|Tipo legame riga collegata
7 8
CODNUM+ANNO+PROVV+NDOC+NRIGA| CODNUM+ANNO+PROVV+NDOC+NRIGA|
CODNUM+ANNO+PROVV+CODART+LIVELLO+CODMAG|X CODNUM+ANNO+PROVV+CODART+LIVELLO+CODMAG|X
PROVV+ANNO+CODNUM+NDOC+NRIGA|X PROVV+ANNO+CODNUM+NDOC+NRIGA|X
@ -73,3 +78,4 @@ DAPROVV+DAANNO+DACODNUM+DANDOC+DAIDRIGA|X
CODART+ANNO+CODNUM+PROVV+NDOC|X CODART+ANNO+CODNUM+PROVV+NDOC|X
CODCMS+CODCOSTO+PROVV+ANNO+CODNUM+NDOC+NRIGA|X CODCMS+CODCOSTO+PROVV+ANNO+CODNUM+NDOC+NRIGA|X
CODCOSTO+CODCMS+PROVV+ANNO+CODNUM+NDOC+NRIGA|X CODCOSTO+CODCMS+PROVV+ANNO+CODNUM+NDOC+NRIGA|X
APROVV+AANNO+ACODNUM+ANDOC+AIDRIGA|X

View File

@ -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 book; // Destinazione dell'intera stampa
TDoc_book* mail_book = NULL; // Destinazione della singola mail TDoc_book* mail_book = NULL; // Destinazione della singola mail
TLog_report mail_log(TR("Invio documenti per email")); 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; bool attach_mail = mode==out_mail || mode==out_signed_mail;
if (attach_mail && is_power_station()) 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); 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++) for (short loop = mail_requested ? 0 : 1; loop < 2; loop++)
{ {
const bool mail_loop = (loop == 0); 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++) for (int i = 0; i < docs; i++)
{ {
if (!pi.addstatus(1)) if (!pi.add_status())
break; break;
doc.move_to(i); doc.move_to(i);

View File

@ -399,26 +399,16 @@ TGestione_listini_semplice_mask::TGestione_listini_semplice_mask(const TString&
_pos_um = sf_righe.cid2index(S_UM); //4 _pos_um = sf_righe.cid2index(S_UM); //4
//inizializza il tipo di condv che serve ('L'istino, 'C'ontratto, 'O'fferta) //inizializza il tipo di condv che serve ('L'istino, 'C'ontratto, 'O'fferta)
char tipo = main_app().argv(2)[0]; const char tipo = toupper(mask_name.right(1)[0]);
tipo = toupper(tipo); if (tipo == 'L')
switch (tipo)
{ {
case 'C': //in base alla cervellotica configurazione impostata dall'utonto abilita/disabilita campi
break; const bool gesliscv = ini_get_bool(CONFIG_DITTA, "ve", "GESLISCV");
case 'O': enable(FA_L_CATVEN, gesliscv);
break; enable(FA_L_DESVEN, gesliscv);
default: //il default è L //attenzione!!! il campo CATVEN è in chiave 1! per disabilitarlo ci vuole questo trucco!
{ if (!gesliscv)
//in base alla cervellotica configurazione impostata dall'utonto abilita/disabilita campi efield(FA_L_CATVEN).reset_key(1);
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;
} }
} }
@ -830,7 +820,7 @@ void TGestione_listini_semplice::save_rows()
const TString& TGestione_listini_semplice::find_descr(TToken_string& row) const TString& TGestione_listini_semplice::find_descr(TToken_string& row)
{ {
const char tiporiga = row.get_char(0); const char tiporiga = row.get_char(0);
const TString& codriga = row.get(1); const TFixed_string codriga = row.get(1);
switch (tiporiga) switch (tiporiga)
{ {
case 'A': case 'A':
@ -1112,12 +1102,12 @@ void TGestione_listini_semplice::init_modify_mode(TMask& m)
bool TGestione_listini_semplice::user_create() 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; Tdninst dninst;
if (!dninst.can_I_run(true)) 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'; _tipo = 'L';
_codice = 0L; _codice = 0L;
if (argc() > 2) //se la chiamata ha un parametro ulteriore ('ve2 -4 c', ad esempio).. 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... if (trans.len() == 1) //se è lungo 1 -> chiamata da menu...
{ {
_tipo = trans[0]; _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))); _codice = max(0, atol(argv(3)));
} }
else else
@ -1137,13 +1127,17 @@ bool TGestione_listini_semplice::user_create()
if (trans.exist()) if (trans.exist())
{ {
TConfig ini(trans, "52"); TConfig ini(trans, "52");
_tipo = ini.get_char("TIPO"); _tipo = ini.get_char(CONDV_TIPO);
if (_tipo == 'C') if (_tipo < 'C')
_codice = ini.get_char(CONDV_CODCF); _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); _rel = new TRelation(LF_CONDV);

View File

@ -65,7 +65,7 @@ BEGIN
CHECKTYPE FORCED CHECKTYPE FORCED
END END
STRING FA_C_DESCF 50 41 STRING FA_C_DESCF 50 40
BEGIN BEGIN
PROMPT 35 1 "" PROMPT 35 1 ""
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
@ -93,7 +93,7 @@ BEGIN
DISPLAY "Codice" COD DISPLAY "Codice" COD
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
DISPLAY "Valuta" CODVAL DISPLAY "Valuta" CODVAL
DISPLAY "Fine validita'" VALFIN DISPLAY "Fine validità" VALFIN
OUTPUT FA_C_TIPOCF TIPOCF OUTPUT FA_C_TIPOCF TIPOCF
OUTPUT FA_C_CODCF CODCF OUTPUT FA_C_CODCF CODCF
OUTPUT FA_COD COD OUTPUT FA_COD COD
@ -114,7 +114,7 @@ BEGIN
DISPLAY "Cod.CF" CODCF DISPLAY "Cod.CF" CODCF
DISPLAY "Codice" COD DISPLAY "Codice" COD
DISPLAY "Valuta" CODVAL DISPLAY "Valuta" CODVAL
DISPLAY "Fine validita'" VALFIN DISPLAY "Fine validità" VALFIN
COPY OUTPUT FA_COD COPY OUTPUT FA_COD
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END

View File

@ -2,13 +2,13 @@
DATA FA_VALINI DATA FA_VALINI
BEGIN BEGIN
PROMPT 1 3 "Inizio validita` " PROMPT 1 3 "Inizio validità "
FIELD VALIN FIELD VALIN
END END
DATA FA_VALFIN DATA FA_VALFIN
BEGIN BEGIN
PROMPT 35 3 "Fine validita` " PROMPT 35 3 "Fine validità "
FIELD VALFIN FIELD VALFIN
END END

View File

@ -600,6 +600,12 @@ public:
const TRectype* find_original_rdoc() const; const TRectype* find_original_rdoc() const;
const TRectype* find_original_doc() 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 TRiga_documento& operator =(const TRiga_documento& r) { return copy(r);}
virtual TRectype& operator =(const TRectype & r); virtual TRectype& operator =(const TRectype & r);
virtual TRectype& operator =(const char * r); virtual TRectype& operator =(const char * r);

View File

@ -1391,7 +1391,7 @@ const TToken_string & TRiga_documento::get_original_rdoc_key() const
return key; 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); TToken_string& key = get_tmp_string(32);
key.add(get(RDOC_CODNUM)); 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) 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) switch (depth)
{ {
@ -1480,6 +1480,39 @@ const TRectype* TRiga_documento::find_original_doc() const
return NULL; 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 void TTipo_riga_documento::set_defaults(TSheet_field& s, int row) const
{ {
if (_defaults.items() == 0) // Carica lo string_array con i defaults if (_defaults.items() == 0) // Carica lo string_array con i defaults

View File

@ -677,15 +677,17 @@ bool TCopia_documento::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
TDocumento& doc_dest = doc_out[d]; TDocumento& doc_dest = doc_out[d];
doc_dest.copy_contents(doc_src); doc_dest.copy_contents(doc_src);
const TString4 tipodoc = tipo_finale(); const TString& tipodoc = tipo_finale();
doc_dest.put(DOC_TIPODOC, tipodoc); doc_dest.put(DOC_TIPODOC, tipodoc);
const TString4 stato = stato_finale(); const TString& stato = stato_finale();
doc_dest.put(DOC_STATO, stato); doc_dest.put(DOC_STATO, stato);
// Scancello tutti gli inutili riferimenti al documento origine // Scancello tutti gli inutili riferimenti al documento origine
if (!_preserve_original_rif) 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()) if (data_elab.ok())
doc_dest.put(DOC_DATADOC, data_elab); doc_dest.put(DOC_DATADOC, data_elab);

View File

@ -13,10 +13,6 @@
#include "../cg/cg2101.h" #include "../cg/cg2101.h"
#endif #endif
#ifndef __RECARRAY_H
#include <recarray.h>
#endif
class TLista_documenti : public TObject // velib04 class TLista_documenti : public TObject // velib04
{ {
TArray _documenti; TArray _documenti;
@ -204,9 +200,9 @@ public:
const TString& codice_numerazione_finale() const { return get("S6"); } const TString& codice_numerazione_finale() const { return get("S6"); }
const TString& applicazione_esterna() const { return get("S3"); } const TString& applicazione_esterna() const { return get("S3"); }
void set_params(const TParametri_elaborazione & parms) { _parms = parms;} void set_params(const TParametri_elaborazione& parms) { _parms = parms;}
bool is_document_ok(const TRectype & doc) const ; bool is_document_ok(const TRectype& doc) const ;
TParametri_elaborazione & params() { return _parms;} TParametri_elaborazione& params() { return _parms;}
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab, bool interattivo = false); const TDate& data_elab, bool interattivo = false);
@ -267,14 +263,13 @@ protected:
TToken_string & campi_riga, const TDate & dcons, const TDate & ddoc); TToken_string & campi_riga, const TDate & dcons, const TDate & ddoc);
void init(); void init();
virtual bool get_num_tip_out(const TDocumento& doc_out, TString& codnum, TString& tipodoc) const;
public: public:
virtual bool raggruppa(TDocumento& din, TDocumento& dout); virtual bool raggruppa(TDocumento& din, TDocumento& dout);
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab, bool interattivo = false); const TDate& data_elab, bool interattivo = false);
bool change_clifo() { return get_bool("B14"); } 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 char* cod);
TFatturazione_bolle(const TRectype& rec); TFatturazione_bolle(const TRectype& rec);

View File

@ -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, 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 const bool rindesc = r.sola_descrizione(); // La riga di input e' descrittiva
if (ignora_desc && rindesc) 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 // se la riga non contiene solo una descrizione
if (ragg_rig && !rindesc && da_raggruppare(rin)) // Se devo raggruppare le righe ... 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 if (rout->sola_descrizione()) // Ignora le righe descrittive
continue; 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 ... if (rin.raggruppabile(*rout, campi_riga)) // Se esiste una riga compatibile ...
{ {
add_rows(*rout, rin); add_rows(*rout, rin);
r.set_final_rdoc_key(*rout);
elaborata = true; // Ricorda di averla gia' elaborata elaborata = true; // Ricorda di averla gia' elaborata
break; break;
} }
} }
} }
if (!elaborata) // Se la riga non e' stata gia' sommata ... if (!elaborata) // Se la riga non e' stata gia' sommata ...
{
create_row(doc_out, rin); 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) bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)

View File

@ -1417,6 +1417,12 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
} }
mov_rec.put(MOV_DATACOMPI, dataintra); 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); TGeneric_distrib d(anticipo.get_num(), ndec);
d.add(totimponibili.get_num()); d.add(totimponibili.get_num());
d.add(imposte); d.add(imposte_effettive);
d.add(totspese.get_num()); d.add(totspese.get_num());
const TCurrency_documento pagtotimponibili(totimponibili.get_num() - d.get(), doc); const TCurrency_documento pagtotimponibili(totimponibili.get_num() - d.get(), doc);
@ -2829,9 +2835,9 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc, bool recontabiliz
} }
else else
{ {
pag.set_total( pagtotimponibili, pagtotimposte, pagtotspese); pag.set_total(pagtotimponibili, pagtotimposte, pagtotspese);
} }
pag.set_rate_auto( ); pag.set_rate_auto();
} }
else else
pag.zap_rate(); pag.zap_rate();
@ -2865,7 +2871,6 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc, bool recontabiliz
const int nr = pag.n_rate(); const int nr = pag.n_rate();
/*
real imponibile, imponibile_val; real imponibile, imponibile_val;
for (int i = nr-1; i >= 0; i--) 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_val += pag.tval_rata(i);
imponibile += pag.tlit_rata(i); imponibile += pag.tlit_rata(i);
} }
*/
partita.put(PART_IMPORTO, pag.imponibile(false)); partita.put(PART_IMPORTO, imponibile);
partita.put(PART_IMPORTOVAL, in_valuta ? pag.imponibile(true) : ZERO); partita.put(PART_IMPORTOVAL, in_valuta ? imponibile_val : ZERO);
partita.put(PART_IMPOSTA, pag.imposta(in_valuta)); partita.put(PART_IMPOSTA, pag.imposta(in_valuta));
partita.put(PART_SPESE, totspese.get_num()); partita.put(PART_SPESE, totspese.get_num());