Patch level : 10.0 patch 592
Files correlati : lv3 Ricompilazione Demo : [ ] Commento : Adesso la quantità da consegnare sulle righe spezzate viene arrotondata git-svn-id: svn://10.65.10.50/trunk@19999 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
28354c9e34
commit
6888f5a1dd
@ -42,6 +42,7 @@ protected:
|
|||||||
void riordina_righe();
|
void riordina_righe();
|
||||||
void genera_documento();
|
void genera_documento();
|
||||||
void evadi_tutto();
|
void evadi_tutto();
|
||||||
|
int arrotonda(const int quantita);
|
||||||
void spezza_riga();
|
void spezza_riga();
|
||||||
void salva();
|
void salva();
|
||||||
void annulla_operazioni();
|
void annulla_operazioni();
|
||||||
@ -655,6 +656,45 @@ void TEvasione_msk::evadi_tutto()
|
|||||||
genera_documento();
|
genera_documento();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TEvasione_msk::arrotonda(const int quantita)
|
||||||
|
{
|
||||||
|
int perarr = ini_get_int(CONFIG_DITTA, "lv", "Perarr");
|
||||||
|
int qta = quantita;
|
||||||
|
|
||||||
|
const TString& codart = get(FR_CODART);
|
||||||
|
//instanzio una cache sulla tabella del magazzino
|
||||||
|
const TRectype& anamag = cache().get(LF_ANAMAG,codart);
|
||||||
|
//recupero i dati di interesse dall'anagrafica di magazzino
|
||||||
|
const long ppconf = anamag.get_long(ANAMAG_PPCONF);
|
||||||
|
if (ppconf > 0)
|
||||||
|
{
|
||||||
|
//recupero dal documento i dati di interesse per recuperare...
|
||||||
|
//...i dati dalla riga contratto
|
||||||
|
const long codcf = get_long(F_CODCF);
|
||||||
|
const long codcn = get_long(F_CODCONT);
|
||||||
|
|
||||||
|
const TLaundry_contract cont(codcf, codcn);
|
||||||
|
//leggo la riga del contratto per l'articolo corrente
|
||||||
|
const TRectype& rcont = cont.row(codart);
|
||||||
|
//recupero i dati di interesse dalla riga del contratto
|
||||||
|
if (rcont.get_int(LVRCONDV_CALCCONS) == 1)
|
||||||
|
{
|
||||||
|
//calcolo di quanti pezzi sforo
|
||||||
|
long arr = quantita % ppconf;
|
||||||
|
|
||||||
|
//calcolo quanti pezzi in più o in meno gli devo dare e aggiorno la quantità
|
||||||
|
if (arr > ppconf * perarr / 100) //arr <= ppconf*perarr/100 -> formula calcolo congualgio di Tassan
|
||||||
|
{
|
||||||
|
arr = ppconf - arr;
|
||||||
|
qta += arr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
qta -= arr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return qta;
|
||||||
|
}
|
||||||
|
|
||||||
//SPEZZA_RIGA: metodo che spezza una riga del buono in due righe, una per la quota evasa e una per la quota da evadere
|
//SPEZZA_RIGA: metodo che spezza una riga del buono in due righe, una per la quota evasa e una per la quota da evadere
|
||||||
void TEvasione_msk::spezza_riga()
|
void TEvasione_msk::spezza_riga()
|
||||||
{
|
{
|
||||||
@ -669,7 +709,7 @@ void TEvasione_msk::spezza_riga()
|
|||||||
riga2 = *riga1;
|
riga2 = *riga1;
|
||||||
|
|
||||||
//scrivi le quantità sulla seconda riga
|
//scrivi le quantità sulla seconda riga
|
||||||
const int dacons2 = riga2.get_int(sheet.cid2index(S_RITIRATO)) - riga2.get_int(sheet.cid2index(S_CONSEGNATO));
|
const int dacons2 = arrotonda(riga2.get_int(sheet.cid2index(S_RITIRATO)) - riga2.get_int(sheet.cid2index(S_CONSEGNATO)));
|
||||||
riga2.add(dacons2, sheet.cid2index(S_RITIRATO));
|
riga2.add(dacons2, sheet.cid2index(S_RITIRATO));
|
||||||
riga2.add(dacons2, sheet.cid2index(S_DACONS));
|
riga2.add(dacons2, sheet.cid2index(S_DACONS));
|
||||||
riga2.add(0L, sheet.cid2index(S_CONSEGNATO));
|
riga2.add(0L, sheet.cid2index(S_CONSEGNATO));
|
||||||
|
@ -198,6 +198,7 @@ protected:
|
|||||||
void registra();
|
void registra();
|
||||||
|
|
||||||
void riempi_sheet();
|
void riempi_sheet();
|
||||||
|
int arrotonda(int quantita);
|
||||||
void spezza_riga();
|
void spezza_riga();
|
||||||
|
|
||||||
bool controlla();
|
bool controlla();
|
||||||
@ -793,6 +794,52 @@ void TEvasione_ter_msk::riempi_sheet()
|
|||||||
sheet.force_update();
|
sheet.force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TEvasione_ter_msk::arrotonda(const int quantita)
|
||||||
|
{
|
||||||
|
int perarr = ini_get_int(CONFIG_DITTA, "lv", "Perarr");
|
||||||
|
int qta = quantita;
|
||||||
|
|
||||||
|
const TString& codart = get(FR_CODART);
|
||||||
|
//instanzio una cache sulla tabella del magazzino
|
||||||
|
const TRectype& anamag = cache().get(LF_ANAMAG,codart);
|
||||||
|
//recupero i dati di interesse dall'anagrafica di magazzino
|
||||||
|
const long ppconf = anamag.get_long(ANAMAG_PPCONF);
|
||||||
|
if (ppconf > 0)
|
||||||
|
{
|
||||||
|
//recupero dal documento i dati di interesse per recuperare...
|
||||||
|
//...i dati dalla riga contratto
|
||||||
|
const long codcf = get_long(F_TCODCF);
|
||||||
|
const TDate data = get_date(F_TDATADOC);
|
||||||
|
|
||||||
|
TToken_string key;
|
||||||
|
key.add('C');
|
||||||
|
key.add(codcf);
|
||||||
|
const int codindsp = atoi(cache().get(LF_CFVEN, key, CFV_CODINDSP));
|
||||||
|
const TLaundry_contract cont(codcf, codindsp, data);
|
||||||
|
const long codcn = cont.get_int(LVCONDV_CODCONT);
|
||||||
|
|
||||||
|
|
||||||
|
//leggo la riga del contratto per l'articolo corrente
|
||||||
|
const TRectype& rcont = cont.row(codart);
|
||||||
|
//recupero i dati di interesse dalla riga del contratto
|
||||||
|
if (rcont.get_int(LVRCONDV_CALCCONS) == 1)
|
||||||
|
{
|
||||||
|
//calcolo di quanti pezzi sforo
|
||||||
|
long arr = quantita % ppconf;
|
||||||
|
|
||||||
|
//calcolo quanti pezzi in più o in meno gli devo dare e aggiorno la quantità
|
||||||
|
if (arr > ppconf * perarr / 100) //arr <= ppconf*perarr/100 -> formula calcolo congualgio di Tassan
|
||||||
|
{
|
||||||
|
arr = ppconf - arr;
|
||||||
|
qta += arr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
qta -= arr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return qta;
|
||||||
|
}
|
||||||
|
|
||||||
//SPEZZA_RIGHE: metodo che spezza le righe documento se richiesto
|
//SPEZZA_RIGHE: metodo che spezza le righe documento se richiesto
|
||||||
void TEvasione_ter_msk::spezza_riga()
|
void TEvasione_ter_msk::spezza_riga()
|
||||||
{
|
{
|
||||||
@ -822,7 +869,7 @@ void TEvasione_ter_msk::spezza_riga()
|
|||||||
TQuantita_riga qr1;
|
TQuantita_riga qr1;
|
||||||
qr1.set_evaso(false);
|
qr1.set_evaso(false);
|
||||||
qr1.set_qta_rit(qtadacon - qtacon);
|
qr1.set_qta_rit(qtadacon - qtacon);
|
||||||
qr1.set_qta_da_con(qtadacon - qtacon);
|
qr1.set_qta_da_con(arrotonda(qtadacon.integer() - qtacon.integer()));
|
||||||
qr1.set_qta_con(ZERO);
|
qr1.set_qta_con(ZERO);
|
||||||
qr1.set_pacchi(0);
|
qr1.set_pacchi(0);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user