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 genera_documento();
|
||||
void evadi_tutto();
|
||||
int arrotonda(const int quantita);
|
||||
void spezza_riga();
|
||||
void salva();
|
||||
void annulla_operazioni();
|
||||
@ -165,7 +166,7 @@ void TEvasione_msk::setta_campi_cliente()
|
||||
|
||||
TString query = "USE LVRCONSPLAN KEY 3\n";
|
||||
query << "FROM CODCF=" << get(F_CODCF) << " CODCONT=" << get(F_CODCONT) << " DTCONS=" << data << "\n";
|
||||
query << "TO CODCF=" << get(F_CODCF) << " CODCONT=" << get(F_CODCONT) << " DTCONS=" << adata << "\n";
|
||||
query << "TO CODCF=" << get(F_CODCF) << " CODCONT=" << get(F_CODCONT) << " DTCONS=" << adata << "\n";
|
||||
TISAM_recordset consegne(query);
|
||||
|
||||
if (consegne.items() >= 2)
|
||||
@ -655,6 +656,45 @@ void TEvasione_msk::evadi_tutto()
|
||||
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
|
||||
void TEvasione_msk::spezza_riga()
|
||||
{
|
||||
@ -668,8 +708,8 @@ void TEvasione_msk::spezza_riga()
|
||||
TToken_string& riga2 = sheet.row(-1);
|
||||
riga2 = *riga1;
|
||||
|
||||
//scrivi le quantità sulla seconda riga
|
||||
const int dacons2 = riga2.get_int(sheet.cid2index(S_RITIRATO)) - riga2.get_int(sheet.cid2index(S_CONSEGNATO));
|
||||
//scrivi le quantità sulla seconda riga
|
||||
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_DACONS));
|
||||
riga2.add(0L, sheet.cid2index(S_CONSEGNATO));
|
||||
|
@ -198,6 +198,7 @@ protected:
|
||||
void registra();
|
||||
|
||||
void riempi_sheet();
|
||||
int arrotonda(int quantita);
|
||||
void spezza_riga();
|
||||
|
||||
bool controlla();
|
||||
@ -793,6 +794,52 @@ void TEvasione_ter_msk::riempi_sheet()
|
||||
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
|
||||
void TEvasione_ter_msk::spezza_riga()
|
||||
{
|
||||
@ -822,7 +869,7 @@ void TEvasione_ter_msk::spezza_riga()
|
||||
TQuantita_riga qr1;
|
||||
qr1.set_evaso(false);
|
||||
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_pacchi(0);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user