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;
}
//class TEvasione_ter_msk
/////////////////////////////////
//// TEVASIONE_TER_MSK ////
/////////////////////////////////
//Classe TEvasione_ter_msk
class TEvasione_ter_msk: public TAutomask
{
int _ndoc;
@ -192,6 +197,7 @@ public:
TEvasione_ter_msk();
};
//ON_KEY: metodo che gestisce i tatsi funzione
bool TEvasione_ter_msk::on_key(KEY key)
{
if (key >= K_F3 && key <= K_F7)
@ -213,7 +219,7 @@ bool TEvasione_ter_msk::on_key(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()
{
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);
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);
/*TDate dataeva = rdoc.dataeva();
if (!dataeva.ok())
dataeva = oggi;*/
TBuono_prelievo_row rdoc(*row);
TString80 codart = rdoc.codart();
if (codart.blank())
continue;
TQuantita_riga* qr = _ra.quantita(codart, oggi, true);
qr->set_nriga(i);
qr->set_evaso(rdoc.evaso());
@ -270,6 +274,7 @@ void TEvasione_ter_msk::genera_buono()
TDate adata = datagen;
adata.addmonth();
//se _ndoc non è inizializzato, lo inizializzo all'ultimo ndoc utilizzato
if(_ndoc == 0)
{
TString query2;
@ -281,6 +286,7 @@ void TEvasione_ter_msk::genera_buono()
_ndoc = bolle.get(DOC_NDOC).as_int();
}
//recupero i dati di interesse dal planning
TString query1 = "USE LVRCONSPLAN KEY 3\n";
query1 << "FROM CODCF=" << codcf << " CODCONT=" << codcont << " DTCONS=#DADATA\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 codaut = consegne.get(LVRCONSPLAN_CODAUT).as_int();
//recupero il codpag
//recupero il codpag e i codici banca
TToken_string key;
key.add('C');
key.add(codcf);
@ -358,6 +364,7 @@ void TEvasione_ter_msk::genera_buono()
key.add(1);
const TString4 um = cache().get(LF_UMART, key, UMART_UM);
//creo la nuova riga documento
TRiga_documento& rdoc = doc.new_row("21");
rdoc.put(RDOC_CODART, codart);
rdoc.put(RDOC_CODARTMAG,codart);
@ -434,20 +441,19 @@ void TEvasione_ter_msk::genera_buono()
if (err == NOERR)
{
if (yesno_box(TR("Il documento è stato generato; si desiderla stamparlo?")))
{
//stampa automatica
TString80 str;
str << "ve1 -2 " << codnum << ' ' << datagen.year() << " D " << _ndoc << " S D";
TExternal_app stampa(str);
stampa.run();
}
//stampa automatica
TString80 str;
str << "ve1 -2 " << codnum << ' ' << datagen.year() << " D " << _ndoc << " S D";
TExternal_app stampa(str);
stampa.run();
}
else
warning_box(TR("Non è stato possibile generare nessun documento"));
//riazzero ndoc
set(F_TNDOC, 0L, 1);
//nascondo i campi che non mi servono
hide(F_TCODCF);
hide(F_TRAGSOC);
hide(F_TBARCODE);
@ -456,12 +462,14 @@ void TEvasione_ter_msk::genera_buono()
hide(F_TQTACON);
hide(F_TQTADACON);
//mostro i campi che servono per la selezione del documento
show(F_TCODNUM);
show(F_TTPDOC);
show(F_TDESCR);
show(F_TANNO);
show(F_TDATAPRCO);
//disabilito i bottoni
disable(DLG_SELECT);
disable(DLG_PREVIEW);
disable(DLG_ELABORA);
@ -588,11 +596,11 @@ void TEvasione_ter_msk::registra()
movmag.write(movi);
}
//
//RIEMPI_SHEET: metodo che riempie lo sheet di riepilogo delle righe documento ancora da evadere
void TEvasione_ter_msk::riempi_sheet()
{
TSheet_field& sheet = sfield(F_TRIGHE);
//sheet.destroy();
sheet.destroy();
FOR_EACH_ASSOC_OBJECT(_ra, obj, key, itm)
{
@ -600,8 +608,8 @@ void TEvasione_ter_msk::riempi_sheet()
TQuantita_riga& qr = *(TQuantita_riga*)itm;
if(!qr.get_evaso())
{
TToken_string& riga = sheet.row(-1);
{
TToken_string& riga = sheet.row(-1);
riga.add(chiave.get(0), 0);
riga.add(qr.get_qta_da_con(), 1);
riga.add(qr.get_qta_con(), 2);
@ -610,6 +618,7 @@ void TEvasione_ter_msk::riempi_sheet()
sheet.force_update();
}
//SPEZZA_RIGHE: metodo che spezza le righe documento se richiesto
void TEvasione_ter_msk::spezza_riga()
{
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 evaso = true;
@ -732,10 +742,10 @@ void TEvasione_ter_msk::evadi_da_terminale()
qr.add_qta_con(qtapacco);
if(qr.get_qta_con() > qr.get_qta_da_con())
{
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);
}
}
_pacchi.add(codpacco, kdoc);
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_TQTADACON, qr.get_qta_da_con());
}
else
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 (!f.empty())
{
//f.check();
hide(F_TCODNUM);
hide(F_TTPDOC);
hide(F_TDESCR);

View File

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