Patch level : 10.0 patch ???
Files correlati : lv3 Ricompilazione Demo : [ ] Commento : NEI BUONI DI PRELIEVO NON POSSIAMO RIPETERE DUE VOLTE LO STESSO ARTICOLI PERCHE' IL TERMINALINO LEGGE SOLO UNA VOLTA L'ARTICOLO git-svn-id: svn://10.65.10.50/trunk@20281 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4d13f394f5
commit
834aed14a2
135
lv/lv3400.cpp
135
lv/lv3400.cpp
@ -154,19 +154,17 @@ TQuantita_riga::TQuantita_riga(bool evaso, long qtadc, long qtac, int pacchi)
|
|||||||
class TRighe_array: public TAssoc_array
|
class TRighe_array: public TAssoc_array
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//TQuantita_riga* quantita(TString& codart, TDate& data, TString& cau, bool create); //cazzone
|
TQuantita_riga* quantita(TString& codart, TDate& data, TString& cau, bool create);
|
||||||
TQuantita_riga* quantita(TString& codart, TDate& data, bool create);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//QUANTITA: metodo che cerca nel TAssoc_array le quantità della riga interessata in base ai parametri passati
|
//QUANTITA: metodo che cerca nel TAssoc_array le quantità della riga interessata in base ai parametri passati
|
||||||
//e lo crea in automatico se il parametro create vale "true"
|
//e lo crea in automatico se il parametro create vale "true"
|
||||||
//TQuantita_riga* TRighe_array::quantita(TString& codart, TDate& data, TString& cau, bool create) //cazzone
|
TQuantita_riga* TRighe_array::quantita(TString& codart, TDate& data, TString& cau, bool create)
|
||||||
TQuantita_riga* TRighe_array::quantita(TString& codart, TDate& data, bool create)
|
|
||||||
{
|
{
|
||||||
TToken_string key;
|
TToken_string key;
|
||||||
key.add(codart);
|
key.add(codart);
|
||||||
key.add(data);
|
key.add(data);
|
||||||
//key.add(cau); //cazzone
|
key.add(cau);
|
||||||
|
|
||||||
TQuantita_riga* qr = (TQuantita_riga*)objptr(key);
|
TQuantita_riga* qr = (TQuantita_riga*)objptr(key);
|
||||||
|
|
||||||
@ -281,9 +279,8 @@ bool TEvasione_ter_msk::precarica_righe()
|
|||||||
|
|
||||||
if (rdoc.qta_dacons() > 0)
|
if (rdoc.qta_dacons() > 0)
|
||||||
{
|
{
|
||||||
//TString4 cau = rdoc.causale(); //cazzone
|
TString4 cau = rdoc.causale();
|
||||||
//TQuantita_riga* qr = _ra.quantita(codart, oggi, cau, true);
|
TQuantita_riga* qr = _ra.quantita(codart, oggi, cau, 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());
|
||||||
qr->set_qta_rit(rdoc.qta_ritirata());
|
qr->set_qta_rit(rdoc.qta_ritirata());
|
||||||
@ -779,7 +776,8 @@ void TEvasione_ter_msk::registra()
|
|||||||
|
|
||||||
FOR_EACH_ASSOC_OBJECT(_pacchi, o, codpacco, rifdoc)
|
FOR_EACH_ASSOC_OBJECT(_pacchi, o, codpacco, rifdoc)
|
||||||
{
|
{
|
||||||
TDoc_key kdoc = *(TToken_string*)rifdoc;
|
TToken_string& tmp = *(TToken_string*)rifdoc;
|
||||||
|
TDoc_key kdoc(tmp.get_int(0), tmp.get(1), tmp.get_long(2));
|
||||||
|
|
||||||
TRiga_pacco rp(codpacco);
|
TRiga_pacco rp(codpacco);
|
||||||
const TString80 codart = rp.articolo();
|
const TString80 codart = rp.articolo();
|
||||||
@ -937,7 +935,7 @@ void TEvasione_ter_msk::evadi_da_terminale()
|
|||||||
|
|
||||||
if (codpacco.full())
|
if (codpacco.full())
|
||||||
{
|
{
|
||||||
const TRiga_pacco rp(codpacco);
|
TRiga_pacco rp(codpacco);
|
||||||
|
|
||||||
if (rp.empty())
|
if (rp.empty())
|
||||||
{
|
{
|
||||||
@ -969,11 +967,16 @@ void TEvasione_ter_msk::evadi_da_terminale()
|
|||||||
key.add(codart);
|
key.add(codart);
|
||||||
key.add(oggi);
|
key.add(oggi);
|
||||||
|
|
||||||
TDoc_key kdoc(get_date(F_TDATADOC).year(), ini_get_string(CONFIG_DITTA, "lv", "NUM_PRE", NULL, 0), get_int(F_TNDOC));
|
TToken_string kdoc;
|
||||||
|
kdoc.add(get_date(F_TDATADOC).year());
|
||||||
|
kdoc.add(ini_get_string(CONFIG_DITTA, "lv", "NUM_PRE", NULL, 0));
|
||||||
|
kdoc.add(get_int(F_TNDOC));
|
||||||
//se il pacco è già stato pistolettato lo tolgo dai pacchi da evadere, altrimenti cerco di sommarlo
|
//se il pacco è già stato pistolettato lo tolgo dai pacchi da evadere, altrimenti cerco di sommarlo
|
||||||
//a una riga documento esistente
|
//a una riga documento esistente
|
||||||
if (_pacchi.is_key(codpacco) && yesno_box(TR("Si desidera annullare il pacco selezionato?")))
|
if (_pacchi.is_key(codpacco) && yesno_box(TR("Si desidera annullare il pacco selezionato?")))
|
||||||
{
|
{
|
||||||
|
TToken_string& tmp = *(TToken_string*)_pacchi.objptr(codpacco);
|
||||||
|
key.add(tmp.get(3));
|
||||||
_pacchi.remove(codpacco);
|
_pacchi.remove(codpacco);
|
||||||
|
|
||||||
if (_ra.is_key(key))
|
if (_ra.is_key(key))
|
||||||
@ -994,29 +997,124 @@ void TEvasione_ter_msk::evadi_da_terminale()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (_ra.is_key(key))
|
bool trovato = false;
|
||||||
|
bool associato = false;
|
||||||
|
bool evaso1 = false;
|
||||||
|
bool evaso2 = false;
|
||||||
|
|
||||||
|
TToken_string chiave1;
|
||||||
|
TToken_string chiave2;
|
||||||
|
|
||||||
|
FOR_EACH_ASSOC_OBJECT(_ra, obj, key, itm)
|
||||||
{
|
{
|
||||||
|
//TString& tmp = *(TString*)key;
|
||||||
|
chiave1 = key;
|
||||||
|
//se trovo una riga di quell'artticolo allora
|
||||||
|
TString cod = chiave1.get(0);
|
||||||
|
if(cod == codart)
|
||||||
|
{
|
||||||
|
trovato = true;
|
||||||
TQuantita_riga& qr = *(TQuantita_riga*)_ra.objptr(key);
|
TQuantita_riga& qr = *(TQuantita_riga*)_ra.objptr(key);
|
||||||
|
|
||||||
if (qr.get_evaso())
|
//se la riga trovata non è già evasa e manca da consegnare almeno la qta
|
||||||
{
|
//di un pacco, allora lo associo
|
||||||
if(yesno_box(TR("Si desidera sommare il pacco a una riga già evasa?")))
|
evaso1 = qr.get_evaso();
|
||||||
|
if (!evaso1 && qr.get_qta_da_con() >= qtapacco)
|
||||||
{
|
{
|
||||||
|
associato = true;
|
||||||
qr.add_pacchi();
|
qr.add_pacchi();
|
||||||
qr.add_qta_con(qtapacco);
|
qr.add_qta_con(qtapacco);
|
||||||
|
|
||||||
|
if(qr.get_qta_con() == qr.get_qta_da_con())
|
||||||
|
qr.set_evaso(true);
|
||||||
|
|
||||||
|
kdoc.add(chiave1.get(2));
|
||||||
|
_pacchi.add(codpacco, kdoc);
|
||||||
|
set(F_TPACCHI, qr.get_pacchi());
|
||||||
|
set(F_TQTAPACCO, qtapacco);
|
||||||
|
set(F_TQTACON, qr.get_qta_con());
|
||||||
|
set(F_TQTADACON, qr.get_qta_da_con());
|
||||||
|
set(F_CODART, rp.articolo());
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//se ho trovato la riga di quell'articolo ma non l'ho associato,
|
||||||
|
//cerco un eventuale altra riga per quell'articolo
|
||||||
|
if(trovato && !associato)
|
||||||
|
{
|
||||||
|
trovato = false;
|
||||||
|
|
||||||
|
FOR_EACH_ASSOC_OBJECT(_ra, obj, key, itm)
|
||||||
|
{
|
||||||
|
chiave2 = *(TToken_string*)key;
|
||||||
|
//se trovo una riga di quell'artticolo allora
|
||||||
|
if(chiave2.get(0) == codart && chiave1 != chiave2)
|
||||||
|
{
|
||||||
|
trovato = true;
|
||||||
|
TQuantita_riga& qr = *(TQuantita_riga*)_ra.objptr(key);
|
||||||
|
|
||||||
|
//se la riga trovata non è già evasa e manca da consegnare almeno la qta
|
||||||
|
//di un pacco, allora lo associo
|
||||||
|
evaso2= qr.get_evaso();
|
||||||
|
if (!evaso2 && qr.get_qta_da_con() >= qtapacco)
|
||||||
|
{
|
||||||
|
associato = true;
|
||||||
|
qr.add_pacchi();
|
||||||
|
qr.add_qta_con(qtapacco);
|
||||||
|
|
||||||
|
if(qr.get_qta_con() == qr.get_qta_da_con())
|
||||||
|
qr.set_evaso(true);
|
||||||
|
|
||||||
|
kdoc.add(chiave2.get(2));
|
||||||
|
_pacchi.add(codpacco, kdoc);
|
||||||
|
set(F_TPACCHI, qr.get_pacchi());
|
||||||
|
set(F_TQTAPACCO, qtapacco);
|
||||||
|
set(F_TQTACON, qr.get_qta_con());
|
||||||
|
set(F_TQTADACON, qr.get_qta_da_con());
|
||||||
|
set(F_CODART, rp.articolo());
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//se risulta ancora trovato, ma non associato, allora lo associo alla riga non ancora evasa
|
||||||
|
if(trovato && !associato)
|
||||||
|
{
|
||||||
|
TQuantita_riga qr;
|
||||||
|
if(!evaso1)
|
||||||
|
{
|
||||||
|
qr = *(TQuantita_riga*)_ra.objptr(chiave1);
|
||||||
|
kdoc.add(chiave1.get(2));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
if(!evaso2)
|
||||||
{
|
{
|
||||||
|
qr = *(TQuantita_riga*)_ra.objptr(chiave2);
|
||||||
|
kdoc.add(chiave2.get(2));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(yesno_box(TR("Si desidera sommare il pacco ad un riga già evasa?")))
|
||||||
|
{
|
||||||
|
qr = *(TQuantita_riga*)_ra.objptr(chiave1);
|
||||||
|
kdoc.add(chiave1.get(2));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
|
||||||
qr.add_pacchi();
|
qr.add_pacchi();
|
||||||
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"));
|
|
||||||
|
|
||||||
if(qr.get_qta_con() >= qr.get_qta_da_con())
|
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());
|
||||||
set(F_TQTAPACCO, qtapacco);
|
set(F_TQTAPACCO, qtapacco);
|
||||||
@ -1024,7 +1122,8 @@ void TEvasione_ter_msk::evadi_da_terminale()
|
|||||||
set(F_TQTADACON, qr.get_qta_da_con());
|
set(F_TQTADACON, qr.get_qta_da_con());
|
||||||
set(F_CODART, rp.articolo());
|
set(F_CODART, rp.articolo());
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
if(!trovato)
|
||||||
{
|
{
|
||||||
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));
|
||||||
TBuono_prelievo bpre(kdoc);
|
TBuono_prelievo bpre(kdoc);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user