Patch level : 10.0 patch 540

Files correlati     : lv3 lv3400a.msk
Ricompilazione Demo : [ ]
Commento            :
Corretto il check su NDOC

Corretto il caricamento delle righe documento per evitare di utilizzare le righe virtuali

Corretta l'evasione di una riga quando raggiunge la quantita' da consegnare


git-svn-id: svn://10.65.10.50/trunk@19718 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2009-12-03 10:13:12 +00:00
parent 95fccf4c9d
commit 22781a27cc
2 changed files with 36 additions and 26 deletions

View File

@ -160,7 +160,12 @@ TQuantita_riga* TRighe_array::quantita(TString& codart, TDate& data, bool create
return qr; return qr;
} }
//class TEvasione_ter_msk /////////////////////////////////
//// TEVASIONE_TER_MSK ////
/////////////////////////////////
//Classe TEvasione_ter_msk
class TEvasione_ter_msk: public TAutomask class TEvasione_ter_msk: public TAutomask
{ {
int _ndoc; int _ndoc;
@ -192,6 +197,7 @@ public:
TEvasione_ter_msk(); TEvasione_ter_msk();
}; };
//ON_KEY: metodo che gestisce i tatsi funzione
bool TEvasione_ter_msk::on_key(KEY key) bool TEvasione_ter_msk::on_key(KEY key)
{ {
if (key >= K_F3 && key <= K_F7) if (key >= K_F3 && key <= K_F7)
@ -213,7 +219,7 @@ bool TEvasione_ter_msk::on_key(KEY key)
return TAutomask::on_key(key); return TAutomask::on_key(key);
} }
//PRECARICA_RIGHE: metodo che carica in un TAssoc_array le righe documento //PRECARICA_RIGHE: metodo che carica in un TAssoc_array le righe fisiche del documento
void TEvasione_ter_msk::precarica_righe() void TEvasione_ter_msk::precarica_righe()
{ {
TDoc_key kdoc(get_date(F_TDATADOC).year(), ini_get_string(CONFIG_DITTA, "lv", "NUM_PRE", NULL, 0), get_long(F_TNDOC)); TDoc_key kdoc(get_date(F_TDATADOC).year(), ini_get_string(CONFIG_DITTA, "lv", "NUM_PRE", NULL, 0), get_long(F_TNDOC));
@ -222,17 +228,15 @@ void TEvasione_ter_msk::precarica_righe()
TDate oggi(TODAY); TDate oggi(TODAY);
for(int i = 1; i <= doc.rows(); i++) FOR_EACH_PHYSICAL_RDOC(doc, i, row)
{ {
TRiga_documento& row = doc[i]; TBuono_prelievo_row rdoc(*row);
TBuono_prelievo_row rdoc(row);
/*TDate dataeva = rdoc.dataeva();
if (!dataeva.ok())
dataeva = oggi;*/
TString80 codart = rdoc.codart(); TString80 codart = rdoc.codart();
if (codart.blank())
continue;
TQuantita_riga* qr = _ra.quantita(codart, oggi, true); TQuantita_riga* qr = _ra.quantita(codart, oggi, true);
qr->set_nriga(i); qr->set_nriga(i);
qr->set_evaso(rdoc.evaso()); qr->set_evaso(rdoc.evaso());
@ -270,6 +274,7 @@ void TEvasione_ter_msk::genera_buono()
TDate adata = datagen; TDate adata = datagen;
adata.addmonth(); adata.addmonth();
//se _ndoc non è inizializzato, lo inizializzo all'ultimo ndoc utilizzato
if(_ndoc == 0) if(_ndoc == 0)
{ {
TString query2; TString query2;
@ -281,6 +286,7 @@ void TEvasione_ter_msk::genera_buono()
_ndoc = bolle.get(DOC_NDOC).as_int(); _ndoc = bolle.get(DOC_NDOC).as_int();
} }
//recupero i dati di interesse dal planning
TString query1 = "USE LVRCONSPLAN KEY 3\n"; TString query1 = "USE LVRCONSPLAN KEY 3\n";
query1 << "FROM CODCF=" << codcf << " CODCONT=" << codcont << " DTCONS=#DADATA\n"; query1 << "FROM CODCF=" << codcf << " CODCONT=" << codcont << " DTCONS=#DADATA\n";
query1 << "TO CODCF=" << codcf << " CODCONT=" << codcont << " DTCONS=#ADATA\n"; query1 << "TO CODCF=" << codcf << " CODCONT=" << codcont << " DTCONS=#ADATA\n";
@ -292,7 +298,7 @@ void TEvasione_ter_msk::genera_buono()
const int coditi = consegne.get(LVRCONSPLAN_CODITI).as_int(); const int coditi = consegne.get(LVRCONSPLAN_CODITI).as_int();
const int codaut = consegne.get(LVRCONSPLAN_CODAUT).as_int(); const int codaut = consegne.get(LVRCONSPLAN_CODAUT).as_int();
//recupero il codpag //recupero il codpag e i codici banca
TToken_string key; TToken_string key;
key.add('C'); key.add('C');
key.add(codcf); key.add(codcf);
@ -358,6 +364,7 @@ void TEvasione_ter_msk::genera_buono()
key.add(1); key.add(1);
const TString4 um = cache().get(LF_UMART, key, UMART_UM); const TString4 um = cache().get(LF_UMART, key, UMART_UM);
//creo la nuova riga documento
TRiga_documento& rdoc = doc.new_row("21"); TRiga_documento& rdoc = doc.new_row("21");
rdoc.put(RDOC_CODART, codart); rdoc.put(RDOC_CODART, codart);
rdoc.put(RDOC_CODARTMAG,codart); rdoc.put(RDOC_CODARTMAG,codart);
@ -434,20 +441,19 @@ void TEvasione_ter_msk::genera_buono()
if (err == NOERR) if (err == NOERR)
{ {
if (yesno_box(TR("Il documento è stato generato; si desiderla stamparlo?"))) //stampa automatica
{ TString80 str;
//stampa automatica str << "ve1 -2 " << codnum << ' ' << datagen.year() << " D " << _ndoc << " S D";
TString80 str; TExternal_app stampa(str);
str << "ve1 -2 " << codnum << ' ' << datagen.year() << " D " << _ndoc << " S D"; stampa.run();
TExternal_app stampa(str);
stampa.run();
}
} }
else else
warning_box(TR("Non è stato possibile generare nessun documento")); warning_box(TR("Non è stato possibile generare nessun documento"));
//riazzero ndoc
set(F_TNDOC, 0L, 1); set(F_TNDOC, 0L, 1);
//nascondo i campi che non mi servono
hide(F_TCODCF); hide(F_TCODCF);
hide(F_TRAGSOC); hide(F_TRAGSOC);
hide(F_TBARCODE); hide(F_TBARCODE);
@ -456,12 +462,14 @@ void TEvasione_ter_msk::genera_buono()
hide(F_TQTACON); hide(F_TQTACON);
hide(F_TQTADACON); hide(F_TQTADACON);
//mostro i campi che servono per la selezione del documento
show(F_TCODNUM); show(F_TCODNUM);
show(F_TTPDOC); show(F_TTPDOC);
show(F_TDESCR); show(F_TDESCR);
show(F_TANNO); show(F_TANNO);
show(F_TDATAPRCO); show(F_TDATAPRCO);
//disabilito i bottoni
disable(DLG_SELECT); disable(DLG_SELECT);
disable(DLG_PREVIEW); disable(DLG_PREVIEW);
disable(DLG_ELABORA); disable(DLG_ELABORA);
@ -588,11 +596,11 @@ void TEvasione_ter_msk::registra()
movmag.write(movi); movmag.write(movi);
} }
// //RIEMPI_SHEET: metodo che riempie lo sheet di riepilogo delle righe documento ancora da evadere
void TEvasione_ter_msk::riempi_sheet() void TEvasione_ter_msk::riempi_sheet()
{ {
TSheet_field& sheet = sfield(F_TRIGHE); TSheet_field& sheet = sfield(F_TRIGHE);
//sheet.destroy(); sheet.destroy();
FOR_EACH_ASSOC_OBJECT(_ra, obj, key, itm) FOR_EACH_ASSOC_OBJECT(_ra, obj, key, itm)
{ {
@ -610,6 +618,7 @@ void TEvasione_ter_msk::riempi_sheet()
sheet.force_update(); sheet.force_update();
} }
//SPEZZA_RIGHE: metodo che spezza le righe documento se richiesto
void TEvasione_ter_msk::spezza_riga() void TEvasione_ter_msk::spezza_riga()
{ {
const TDate oggi(TODAY); const TDate oggi(TODAY);
@ -644,6 +653,7 @@ void TEvasione_ter_msk::spezza_riga()
} }
} }
//CONTROLLA: metodo che controlla se tutte le righe del buono sono evase
bool TEvasione_ter_msk::controlla() bool TEvasione_ter_msk::controlla()
{ {
bool evaso = true; bool evaso = true;
@ -732,10 +742,10 @@ void TEvasione_ter_msk::evadi_da_terminale()
qr.add_qta_con(qtapacco); qr.add_qta_con(qtapacco);
if(qr.get_qta_con() > qr.get_qta_da_con()) if(qr.get_qta_con() > qr.get_qta_da_con())
{
warning_box(TR("ATTENZIONE: si sta consegnando un quantitativo maggiore al dovuto")); warning_box(TR("ATTENZIONE: si sta consegnando un quantitativo maggiore al dovuto"));
if(qr.get_qta_con() >= qr.get_qta_da_con())
qr.set_evaso(true); qr.set_evaso(true);
}
} }
_pacchi.add(codpacco, kdoc); _pacchi.add(codpacco, kdoc);
set(F_TPACCHI, qr.get_pacchi()); set(F_TPACCHI, qr.get_pacchi());
@ -743,7 +753,6 @@ void TEvasione_ter_msk::evadi_da_terminale()
set(F_TQTACON, qr.get_qta_con()); set(F_TQTACON, qr.get_qta_con());
set(F_TQTADACON, qr.get_qta_da_con()); set(F_TQTADACON, qr.get_qta_da_con());
} }
else else
warning_box(TR("Non è stato possibile sommare il pacco a nessuna riga del buono")); warning_box(TR("Non è stato possibile sommare il pacco a nessuna riga del buono"));
} }
@ -841,6 +850,7 @@ bool TEvasione_ter_msk::on_field_event(TOperable_field& f, TField_event e, long
if (e == fe_modify) if (e == fe_modify)
if (!f.empty()) if (!f.empty())
{ {
//f.check();
hide(F_TCODNUM); hide(F_TCODNUM);
hide(F_TTPDOC); hide(F_TTPDOC);
hide(F_TDESCR); hide(F_TDESCR);

View File

@ -80,7 +80,6 @@ BEGIN
INPUT ANNO F_TANNO SELECT INPUT ANNO F_TANNO SELECT
INPUT CODNUM F_TCODNUM SELECT INPUT CODNUM F_TCODNUM SELECT
INPUT NDOC F_TNDOC INPUT NDOC F_TNDOC
INPUT TIPOCF "C"
DISPLAY "Num." CODNUM DISPLAY "Num." CODNUM
DISPLAY "Data\ndocumento" DATADOC DISPLAY "Data\ndocumento" DATADOC
DISPLAY "Ragione Sociale@10" LF_CLIFO->RAGSOC DISPLAY "Ragione Sociale@10" LF_CLIFO->RAGSOC
@ -88,6 +87,7 @@ BEGIN
OUTPUT F_TDATADOC DATADOC OUTPUT F_TDATADOC DATADOC
OUTPUT F_TCODCF CODCF OUTPUT F_TCODCF CODCF
OUTPUT F_TRAGSOC LF_CLIFO->RAGSOC OUTPUT F_TRAGSOC LF_CLIFO->RAGSOC
CHECTYPE REQUIRED
END END
DATE F_TDATADOC DATE F_TDATADOC