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)
{
case 1: ps0883200(argc, argv); break;
case 2: ps0883300(argc, argv); break;
default: ps0883100(argc, argv); break;
}
return 0;

View File

@ -1,3 +1,4 @@
int ps0883100(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
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

View File

@ -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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
34
65
70
CODNUM|1|4|0|Codice Numeriazione
ANNO|2|4|0|Anno
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
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

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* 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);

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -13,10 +13,6 @@
#include "../cg/cg2101.h"
#endif
#ifndef __RECARRAY_H
#include <recarray.h>
#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);

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,
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)

View File

@ -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());