Patch level : 10.0 patch 518
Files correlati : lv2 Ricompilazione Demo : [ ] Commento : - La fatturazione del nolo deve essere fatta anche se non ci sono quantità in consegna nel mese: dotazione per prezzo nolo. git-svn-id: svn://10.65.10.50/trunk@19629 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
3d1c15555c
commit
999789248e
@ -12,6 +12,7 @@
|
||||
#include "../ve/ve6200.h"
|
||||
#include "../ve/ve6200a.h"
|
||||
|
||||
|
||||
////////////////////////////////////////
|
||||
//// TFatturazione_lavanderie ////
|
||||
////////////////////////////////////////
|
||||
@ -184,10 +185,10 @@ void TFatturazione_lavanderie::post_process_output(TLista_documenti& doc_out)
|
||||
|
||||
const int rigamerce = doc[1].is_descrizione()?2:1;
|
||||
|
||||
for (int i=rigamerce; i<=rows; i++)
|
||||
for (int i=rigamerce; i <= rows; i++)
|
||||
doc.destroy_row(i);
|
||||
|
||||
TRiga_documento& riga=doc.new_row("01");
|
||||
TRiga_documento& riga = doc.new_row("01");
|
||||
|
||||
const TString80 codartcfg = ini_get_string(CONFIG_DITTA, "lv", "Codartcafix");
|
||||
const TString80 descart = cache().get(LF_ANAMAG, codartcfg, ANAMAG_DESCR);
|
||||
@ -746,6 +747,7 @@ public:
|
||||
TFatturazione_msk();
|
||||
};
|
||||
|
||||
|
||||
TFatturazione_msk::TFatturazione_msk():TAutomask("lv2500a")
|
||||
{
|
||||
//imposto il periodo di fatturazione dal primo del mese precedente all'ultimo del mese precedente
|
||||
@ -775,33 +777,94 @@ TFatturazione_msk::TFatturazione_msk():TAutomask("lv2500a")
|
||||
//classe TFatturazione_lav_app
|
||||
class TFatturazione_lav_app: public TSkeleton_application
|
||||
{
|
||||
TFatturazione_msk* _msk;
|
||||
protected:
|
||||
virtual void main_loop();
|
||||
|
||||
void genera_bolle_nolo(TAssoc_array& cliela, TFatturazione_lavanderie& elab);
|
||||
};
|
||||
|
||||
//GENERA_BOLLE_NOLO: metodo che genera le fatture di solo nolo per quei clienti a cui non è stato consegnato niente
|
||||
void TFatturazione_lav_app::genera_bolle_nolo(TAssoc_array& cliela, TFatturazione_lavanderie& elab)
|
||||
{
|
||||
TString4 codnum = ini_get_string(CONFIG_DITTA, "lv", "NUM_GEN");
|
||||
TString4 tipodoc = ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_GEN");
|
||||
char stato = cache().get("%TIP", tipodoc, "S2").left(1)[0];
|
||||
|
||||
//preparo la query sui contratti
|
||||
TString str;
|
||||
str << "USE LVCONDV";
|
||||
|
||||
if (_msk->get_long(F_DACODCF) > 0)
|
||||
str << "\nFROM CODCF=" << _msk->get_long(F_DACODCF);
|
||||
|
||||
if (_msk->get_long(F_ACODCF) > 0)
|
||||
str << "\nTO CODCF=" << _msk->get_long(F_ACODCF);
|
||||
|
||||
TISAM_recordset contr(str);
|
||||
|
||||
TLista_documenti doc_in;
|
||||
TLista_documenti doc_out;
|
||||
|
||||
TDocumento doc('D', _msk->get_date(F_DATAFAT).year(), codnum, 0);
|
||||
|
||||
doc.put(DOC_TIPODOC, tipodoc);
|
||||
doc.put(DOC_STATO, stato);
|
||||
doc.put(DOC_TIPOCF, 'C');
|
||||
|
||||
for(bool ok = contr.move_first(); ok; ok = contr.move_next())
|
||||
{
|
||||
//scarto i contratti scaduti
|
||||
if (_msk->get_date(F_DADATA) <= contr.get(LVCONDV_DATAIN).as_date() || _msk->get_date(F_ADATA) >= contr.get(LVCONDV_DATASC).as_date())
|
||||
continue;
|
||||
|
||||
//scarto tutti quelli che non sono in periodo di fatturazione corretto
|
||||
if (contr.get(LVCONDV_PERFAT).as_int() > _msk->get_int(F_PERFAT))
|
||||
continue;
|
||||
|
||||
//sacrto tutti quelli a cui ho già fatturato
|
||||
if(!cliela.is_key(contr.get(LVCONDV_CODCF).as_string()))
|
||||
continue;
|
||||
|
||||
doc.put(DOC_CODCF, contr.get(LVCONDV_CODCF).as_int());
|
||||
|
||||
doc_in.add(doc);
|
||||
|
||||
if (ini_get_bool(CONFIG_DITTA, "lv", "RifTest"))
|
||||
elab.put("B15", true); //forzo la descrizione abbreviata
|
||||
elab.elabora(doc_in, doc_out, _msk->get_date(F_DATAFAT));
|
||||
|
||||
doc_out.write();
|
||||
doc_out.destroy(-1);
|
||||
|
||||
doc_in.destroy(-1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TFatturazione_lav_app::main_loop()
|
||||
{
|
||||
//instanzio la maschera
|
||||
TFatturazione_msk msk;
|
||||
_msk = new TFatturazione_msk();
|
||||
|
||||
//instanzio i localisamfile che mi servono
|
||||
TLocalisamfile doc(LF_DOC);
|
||||
TLocalisamfile rdoc(LF_RIGHEDOC);
|
||||
|
||||
while (msk.run()!=K_QUIT)
|
||||
while (_msk->run()!= K_QUIT)
|
||||
{
|
||||
//leggo i dati di primo interesse
|
||||
const TString4 mskzona = msk.get(F_CODZONA);
|
||||
const TString4 mskcat = msk.get(F_CODCATC);
|
||||
const TString4 mskzona = _msk->get(F_CODZONA);
|
||||
const TString4 mskcat = _msk->get(F_CODCATC);
|
||||
//preparo le date estremi (dal - al) della query e l'anno dell'esercizio
|
||||
TDate al = msk.get_date(F_ADATA);
|
||||
TDate al = _msk->get_date(F_ADATA);
|
||||
//se la data "al" non è corretta, la pongo uguale alla data fattura
|
||||
if (!al.ok())
|
||||
al = msk.get_date(F_DATAFAT);
|
||||
al = _msk->get_date(F_DATAFAT);
|
||||
|
||||
const long year = al.year();
|
||||
|
||||
TDate dal = msk.get_date(F_DADATA);
|
||||
TDate dal = _msk->get_date(F_DADATA);
|
||||
//se la data "dal" non è corretta, la pongo uguale a 1/1/annoes
|
||||
if (!dal.ok())
|
||||
{
|
||||
@ -811,20 +874,20 @@ void TFatturazione_lav_app::main_loop()
|
||||
}
|
||||
|
||||
//instanzio una TFatturaziome_lavanderie
|
||||
TFatturazione_lavanderie elab(msk.get(F_COD_ELAB));
|
||||
TFatturazione_lavanderie elab(_msk->get(F_COD_ELAB));
|
||||
//preparo le variabili di interesse
|
||||
TLista_documenti docsin;
|
||||
TLista_documenti docsout;
|
||||
long lastcli = 0;
|
||||
const int period = msk.get_int(F_PERFAT);
|
||||
const TDate datafat = msk.get_date(F_DATAFAT);
|
||||
const int period = _msk->get_int(F_PERFAT);
|
||||
const TDate datafat = _msk->get_date(F_DATAFAT);
|
||||
long indsped;
|
||||
|
||||
//preparo la query
|
||||
TString query;
|
||||
//&&(BETWEEN(DATADOC,#DADATA,#ADATA))&&(STATO==\"2\")&&(TIPODOC==\"B01\")
|
||||
query << "USE DOC KEY 3 SELECT (TIPOCF==\"C\")&&"
|
||||
<< "(BETWEEN(CODCF," << msk.get_int(F_DACODCF) << ',' << msk.get_int(F_ACODCF) << "))\n"
|
||||
<< "(BETWEEN(CODCF," << _msk->get_long(F_DACODCF) << ',' << _msk->get_long(F_ACODCF) << "))\n"
|
||||
<< "BY TIPOCF CODCF DATADOC\n"
|
||||
<< "FROM " << "DATADOC=" << dal << " PROVV=D ANNO=" << year << "\n"
|
||||
<< "TO " << "DATADOC=" << al << " PROVV=D ANNO=" << year << "\n";
|
||||
@ -836,6 +899,9 @@ void TFatturazione_lav_app::main_loop()
|
||||
TISAM_recordset recset(query);
|
||||
TProgind pi(recset.items(), "Fatturazione", true, true);
|
||||
long last_clifo=0;
|
||||
|
||||
//TAssoc_array dei clienti per cui ho generato dei documenti
|
||||
TAssoc_array cliela;
|
||||
//scorro tutti documenti che la query mi restiuisce
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
@ -867,6 +933,9 @@ void TFatturazione_lav_app::main_loop()
|
||||
docsin.destroy(-1);
|
||||
}
|
||||
lastcli = clifo;
|
||||
TString tmp;
|
||||
tmp << lastcli;
|
||||
cliela.add(tmp, tmp);
|
||||
}
|
||||
|
||||
//preparo la chiave e recupero da CFVEN i dati di quel cliente
|
||||
@ -917,11 +986,14 @@ void TFatturazione_lav_app::main_loop()
|
||||
if (ini_get_bool(CONFIG_DITTA, "lv", "RifTest"))
|
||||
elab.put("B15", true); //forzo la descrizione abbreviata
|
||||
elab.elabora(docsin, docsout, datafat);
|
||||
|
||||
docsout.write();
|
||||
docsout.destroy(-1);
|
||||
docsin.rewrite();
|
||||
docsin.destroy(-1);
|
||||
}
|
||||
|
||||
genera_bolle_nolo(cliela, elab);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user