Patch level : 10.0 patch 314
Files correlati : lv0 Ricompilazione Demo : [ ] Commento : Corretta gestione della dotazione per cliente git-svn-id: svn://10.65.10.50/trunk@18915 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
19de246317
commit
5db608b53c
175
lv/lv0400.cpp
175
lv/lv0400.cpp
@ -24,7 +24,7 @@ long lv_new_contract(long cliente, int indsped)
|
||||
if (unicont) //se la numerazione è per ditta, cerco in tutto LVCONDV il codcont più grande
|
||||
{
|
||||
TISAM_recordset recset ("USE LVCONDV");
|
||||
for (bool ok=recset.move_first(); ok; ok=recset.move_next())
|
||||
for (bool ok=recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
const long codice=recset.get("CODCONT").as_int();
|
||||
if (codice>codcont)
|
||||
@ -83,13 +83,12 @@ bool TContratti_msk::on_art_select()
|
||||
TDate datasc(TODAY);
|
||||
const int annoes = esercizi().date2esc(datasc);
|
||||
|
||||
//estraggo l'indice dal record corrispondente su LF_CLIFOGIAC
|
||||
int index = artrec.find_clifomag(annoes);
|
||||
|
||||
//estraggo il record corrispondente su LF_CLIFOGIAC
|
||||
const TRecmag_lavanderie& reclav = artrec.find_rec(annoes);
|
||||
//recupero la maschera di riga
|
||||
TMask& rowmask = ss.sheet_mask();
|
||||
|
||||
if (ini_get_string(CONFIG_DITTA, "lv", "Qtamodi") != "X")
|
||||
if (ini_get_string(CONFIG_DITTA, "lv", "Qtamodi") == "X")
|
||||
{
|
||||
field(F_DOTTMP).disable();
|
||||
rowmask.field(S_DOTIN).disable();
|
||||
@ -99,31 +98,31 @@ bool TContratti_msk::on_art_select()
|
||||
|
||||
//se esiste il record su LF_CLIFOGIAC, recupero l'unità di misura dalla riga dello sheet selezionata
|
||||
//e setto i campi delle dotazioni e dei consegnati ai valori corretti riportati alla giusta unità di misura
|
||||
if (index > 0)
|
||||
if (!reclav.empty())
|
||||
{
|
||||
const TString4 umcont(row.get(ss.cid2index(S_UM))); //unità di misura
|
||||
|
||||
if (rowmask.get(S_DOTIN).blank())
|
||||
{
|
||||
//calcolo dotazione iniziale, scritta sia sulla maschera che sullo sheet
|
||||
const real dotin = artrec.convert_to_um(artrec.clifomag(annoes)[index].get_real(CLIFOGIAC_DOTIN),umcont);
|
||||
const real dotin = artrec.convert_to_um(reclav.get_real(CLIFOGIAC_DOTIN), umcont);
|
||||
rowmask.set(S_DOTIN, dotin);
|
||||
row.add(dotin.stringa(), ss.cid2index(S_DOTIN));
|
||||
//calcolo dotazione odierna, scritta sia sulla maschera che sullo sheet
|
||||
const real dotod = artrec.convert_to_um(reclav.get_real(CLIFOGIAC_DOTOD),umcont);
|
||||
rowmask.set(S_DOTOD, dotod);
|
||||
row.add(dotod.stringa(), ss.cid2index(S_DOTOD));
|
||||
//calcolo dotazione temporanea, scritta sia sulla maschera che sullo sheet
|
||||
const real dottmp = artrec.convert_to_um(reclav.get_real(CLIFOGIAC_DOTTM),umcont);
|
||||
rowmask.set(S_DOTTMP, dottmp);
|
||||
row.add(dottmp.stringa(), ss.cid2index(S_DOTTMP));
|
||||
}
|
||||
//calcolo dotazione odierna, scritta sia sulla maschera che sullo sheet
|
||||
const real dotod = artrec.convert_to_um(artrec.clifomag(annoes)[index].get_real(CLIFOGIAC_DOTOD),umcont);
|
||||
rowmask.set(S_DOTOD, dotod);
|
||||
row.add(dotod.stringa(), ss.cid2index(S_DOTOD));
|
||||
//calcolo dotazione temporanea, scritta sia sulla maschera che sullo sheet
|
||||
const real dottmp = artrec.convert_to_um(artrec.clifomag(annoes)[index].get_real(CLIFOGIAC_DOTTM),umcont);
|
||||
rowmask.set(S_DOTTMP, dottmp);
|
||||
row.add(dottmp.stringa(), ss.cid2index(S_DOTTMP));
|
||||
//calcolo consegnato anno, scritto sia sulla maschera che sullo sheet
|
||||
const real consyear = artrec.convert_to_um(artrec.clifomag(annoes)[index].get_real("CONSANNO"),umcont);
|
||||
rowmask.set(S_CONSANNO, consyear);
|
||||
row.add(consyear.stringa(), ss.cid2index(S_CONSANNO));
|
||||
const real consyear = artrec.convert_to_um(reclav.get_real("CONSANNO"),umcont);
|
||||
rowmask.set(S_CONSANNO, consyear);
|
||||
row.add(consyear.stringa(), ss.cid2index(S_CONSANNO));
|
||||
//calcolo consegnato mese, scritto sia sulla maschera che sullo sheet
|
||||
const real consmonth = artrec.convert_to_um(artrec.clifomag(annoes)[index].get_real("CONSMESE"),umcont);
|
||||
const real consmonth = artrec.convert_to_um(reclav.get_real("CONSMESE"),umcont);
|
||||
rowmask.set(S_CONSMESE, consmonth);
|
||||
row.add(consmonth.stringa(), ss.cid2index(S_CONSMESE));
|
||||
}
|
||||
@ -469,61 +468,41 @@ void TContratti_app::save_rows(const TMask& m)
|
||||
fr->write(row->get(pos), file.curr());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//leggo il codart
|
||||
const TString80 codart=row->get(0);
|
||||
//se il codart è pieno
|
||||
if (codart.full())
|
||||
const TString80 codart = row->get(righe.cid2index(S_CODART));
|
||||
//se il codart è pieno e le quantità sono modificabili (da configurazione)
|
||||
if (codart.full() && ini_get_string(CONFIG_DITTA, "lv", "Qtamodi") != "X")
|
||||
{
|
||||
//scrivo o aggiorno il record sul file
|
||||
file.rewrite_write();
|
||||
|
||||
//gestione LF_CLIFOGIAC
|
||||
bool found = false;
|
||||
magcli.zero();
|
||||
TArticolo_lavanderie& artrec = cached_article_laundry(codart, 'C', clifo, indsp);
|
||||
TRecmag_lavanderie& reclav = (TRecmag_lavanderie&)artrec.find_rec(year);
|
||||
|
||||
//se sono in dicembre, allora leggo i dati dell'anno successivo
|
||||
if (oggi.month() == 12)
|
||||
//gestione LF_CLIFOGIAC
|
||||
if(!reclav.empty())
|
||||
{
|
||||
magcli.put(CLIFOGIAC_ANNOES, year+1);
|
||||
magcli.put(CLIFOGIAC_TIPOCF, 'C');
|
||||
magcli.put(CLIFOGIAC_CODCF, clifo);
|
||||
magcli.put(CLIFOGIAC_INDSPED, indsp);
|
||||
magcli.put(CLIFOGIAC_CODART, codart);
|
||||
magcli.put(CLIFOGIAC_NRIGA, 1);
|
||||
found = magcli.read() == NOERR;
|
||||
//riscrivo la dotazione iniziale convertita nell'unità di misura principale
|
||||
const real dotin = artrec.convert_to_um(row->get(righe.cid2index(S_DOTIN)), NULL);
|
||||
reclav.put(CLIFOGIAC_DOTIN, dotin);
|
||||
|
||||
//riscrivo la dotazione odierna convertita nell'unità di misura principale
|
||||
const real dotod = artrec.convert_to_um(row->get(righe.cid2index(S_DOTOD)), NULL);
|
||||
reclav.put(CLIFOGIAC_DOTOD, dotod);
|
||||
|
||||
//riscrivo la dotazione temporanea convertita nell'unità di misura principale
|
||||
const real dottm = artrec.convert_to_um(row->get(righe.cid2index(S_DOTTMP)), NULL);
|
||||
reclav.put(CLIFOGIAC_DOTTM, dottm);
|
||||
|
||||
//riscrivo il consegnato anno convertito nell'unità di misura principale
|
||||
const real conan = artrec.convert_to_um(row->get(righe.cid2index(S_CONSANNO)), NULL);
|
||||
reclav.put(CLIFOGIAC_CONSANNO, conan);
|
||||
|
||||
reclav.rewrite_write(magcli);
|
||||
}
|
||||
//se fallisce la read o non sono in dicembre, allora cerco nell'anno attuale (record svuotato dalla read)
|
||||
if (!found)
|
||||
{
|
||||
magcli.zero();
|
||||
magcli.put(CLIFOGIAC_ANNOES, year);
|
||||
magcli.put(CLIFOGIAC_TIPOCF, 'C');
|
||||
magcli.put(CLIFOGIAC_CODCF, clifo);
|
||||
magcli.put(CLIFOGIAC_INDSPED, indsp);
|
||||
magcli.put(CLIFOGIAC_CODART, codart);
|
||||
magcli.put(CLIFOGIAC_NRIGA, 1);
|
||||
found = magcli.read()==NOERR;
|
||||
//se la read fallisce ancora, allora devo inserire tutto da capo (record svuotato dalla read)
|
||||
if (!found) // FORZO LA SCRITTURA DELLA CHIAVE
|
||||
{
|
||||
magcli.zero();
|
||||
magcli.put(CLIFOGIAC_ANNOES, year);
|
||||
magcli.put(CLIFOGIAC_TIPOCF, 'C');
|
||||
magcli.put(CLIFOGIAC_CODCF, clifo);
|
||||
magcli.put(CLIFOGIAC_INDSPED, indsp);
|
||||
magcli.put(CLIFOGIAC_CODART, codart);
|
||||
magcli.put(CLIFOGIAC_NRIGA, 1);
|
||||
}
|
||||
}
|
||||
//setto i valori delle dotazioni
|
||||
magcli.put(CLIFOGIAC_DOTIN,row->get(righe.cid2index(S_DOTIN)));
|
||||
magcli.put(CLIFOGIAC_DOTOD,row->get(righe.cid2index(S_DOTOD)));
|
||||
magcli.put(CLIFOGIAC_DOTTM,row->get(righe.cid2index(S_DOTTMP)));
|
||||
//scrivo o aggiorno il record corrispondente su LF_CLIFOGIAC
|
||||
magcli.rewrite_write();
|
||||
}
|
||||
}
|
||||
} //fine FOR_EACH_ROW
|
||||
}
|
||||
|
||||
//BUILD_QUERY: metodo che crea la query sulle righe contratti
|
||||
@ -603,7 +582,8 @@ bool TContratti_app:: get_next_key(TToken_string& key)
|
||||
}
|
||||
|
||||
//READ: ridefinizione del metodo read() delle TRealtion_application
|
||||
int TContratti_app:: read(TMask& m)
|
||||
//AGGIUNGERE LA CONVERSIONE
|
||||
int TContratti_app::read(TMask& m)
|
||||
{
|
||||
//eseguo la read() standard
|
||||
int err = TRelation_application::read(m);
|
||||
@ -614,7 +594,7 @@ int TContratti_app:: read(TMask& m)
|
||||
TISAM_recordset righeset(build_query(m));
|
||||
const TRectype& rec = righeset.cursor()->curr();
|
||||
|
||||
//instanzio un TLcalisamfile su LF:CLIFOGIAC
|
||||
//instanzio un TLcalisamfile su LF_CLIFOGIAC
|
||||
TLocalisamfile magcli(LF_CLIFOGIAC);
|
||||
//setto alcune variabili di interesse
|
||||
const TDate oggi(TODAY);
|
||||
@ -639,44 +619,33 @@ int TContratti_app:: read(TMask& m)
|
||||
row.add(fr->read(rec),righe.cid2index(f->dlg()));
|
||||
}
|
||||
|
||||
const TString80 codart(row.get(righe.cid2index(S_CODART)));
|
||||
|
||||
//estraggo il record corrispondente su LF_CLIFOGIAC
|
||||
TArticolo_lavanderie& artrec = cached_article_laundry(codart, 'C', clifo, indsp);
|
||||
const TRecmag_lavanderie& reclav = artrec.find_rec(year);
|
||||
//lettura dei dati da LF_CLIFOGIAC
|
||||
bool found = false;
|
||||
magcli.zero();
|
||||
//se esiste il record su LF_CLIFOGIAC, recupero l'unità di misura dalla riga dello sheet selezionata
|
||||
//e setto i campi delle dotazioni e dei consegnati ai valori corretti riportati alla giusta unità di misura
|
||||
if (!reclav.empty())
|
||||
{
|
||||
const TString4 umcont(row.get(righe.cid2index(S_UM))); //unità di misura
|
||||
|
||||
const TString codart=row.get(0);
|
||||
//se sono in dicembre, allora leggo i dati dell'anno successivo
|
||||
if (oggi.month() == 12)
|
||||
{
|
||||
magcli.put(CLIFOGIAC_ANNOES, year+1);
|
||||
magcli.put(CLIFOGIAC_TIPOCF, 'C');
|
||||
magcli.put(CLIFOGIAC_CODCF, clifo);
|
||||
magcli.put(CLIFOGIAC_INDSPED, indsp);
|
||||
magcli.put(CLIFOGIAC_CODART, codart);
|
||||
magcli.put(CLIFOGIAC_NRIGA, 1);
|
||||
found = magcli.read() == NOERR;
|
||||
}
|
||||
//se fallisce la read o non sono in dicembre, allora cerco nell'anno attuale (record svuotato dalla read)
|
||||
if (!found)
|
||||
{
|
||||
magcli.zero();
|
||||
magcli.put(CLIFOGIAC_ANNOES, year);
|
||||
magcli.put(CLIFOGIAC_TIPOCF, 'C');
|
||||
magcli.put(CLIFOGIAC_CODCF, clifo);
|
||||
magcli.put(CLIFOGIAC_INDSPED, indsp);
|
||||
magcli.put(CLIFOGIAC_CODART, codart);
|
||||
magcli.put(CLIFOGIAC_NRIGA, 1);
|
||||
found = magcli.read() == NOERR;
|
||||
}
|
||||
//se la read riesce, leggo tutti i dati di interesse e li metto nella riga attuale dell sheet
|
||||
if (found)
|
||||
{
|
||||
const int dotin = magcli.get_int(CLIFOGIAC_DOTIN);
|
||||
const int dotod = magcli.get_int(CLIFOGIAC_DOTOD);
|
||||
const int dottmp = magcli.get_int(CLIFOGIAC_DOTTM);
|
||||
|
||||
row.add(dotin, righe.cid2index(S_DOTIN));
|
||||
row.add(dotod, righe.cid2index(S_DOTOD));
|
||||
row.add(dottmp, righe.cid2index(S_DOTTMP));
|
||||
if (msk.get(S_DOTIN).blank())
|
||||
{
|
||||
//calcolo dotazione iniziale, scritta sia sulla maschera che sullo sheet
|
||||
const real dotin = artrec.convert_to_um(reclav.get_real(CLIFOGIAC_DOTIN), umcont);
|
||||
//rowmask.set(S_DOTIN, dotin);
|
||||
row.add(dotin.stringa(), righe.cid2index(S_DOTIN));
|
||||
}
|
||||
//calcolo dotazione odierna, scritta sia sulla maschera che sullo sheet
|
||||
const real dotod = artrec.convert_to_um(reclav.get_real(CLIFOGIAC_DOTOD),umcont);
|
||||
//rowmask.set(S_DOTOD, dotod);
|
||||
row.add(dotod.stringa(), righe.cid2index(S_DOTOD));
|
||||
//calcolo dotazione temporanea, scritta sia sulla maschera che sullo sheet
|
||||
const real dottmp = artrec.convert_to_um(reclav.get_real(CLIFOGIAC_DOTTM),umcont);
|
||||
//rowmask.set(S_DOTTMP, dottmp);
|
||||
row.add(dottmp.stringa(), righe.cid2index(S_DOTTMP));
|
||||
}
|
||||
//forzo una check_row
|
||||
righe.check_row(righe.items()-1, 3);
|
||||
|
Loading…
x
Reference in New Issue
Block a user