Patch level :10.0

Files correlati     :lv2.exe
Ricompilazione Demo : [ ]
Commento            :
aggiunta gestione prezzi  filtri cliente sulla fatturazione


git-svn-id: svn://10.65.10.50/trunk@18659 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
rajitgill 2009-04-02 16:32:58 +00:00
parent c23d8c8a2d
commit ef0d3f189b
2 changed files with 88 additions and 26 deletions

View File

@ -4,8 +4,11 @@
#include "lvlib.h"
#include "lv2500a.h"
#include "cfven.h"
#include "lvcondv.h"
#include "lvrcondv.h"
#include "rdoc.h"
#include "../ve/ve6200.h"
#include "../ve/ve6200a.h"
@ -107,12 +110,11 @@ void TFatturazione_lavanderie::post_process_output(TLista_documenti& doc_out)
for (int id = 0; id < doc_out.items(); id++)
{
TDocumento& doc = doc_out[id];
const int rows = doc.physical_rows();
const long clifo = doc.get_long(DOC_CODCF);
const int indsped = doc.get_int(DOC_CODINDSP);
TLaundry_contract contr(clifo,indsped,_data_elab);
for (int i = 1; i <= rows; i++)
for (int i = 1; i <= doc.physical_rows(); i++)
{
TRiga_documento& rout = doc[i];
const TString80 codart=rout.get(RDOC_CODART);
@ -134,16 +136,13 @@ void TFatturazione_lavanderie::post_process_output(TLista_documenti& doc_out)
case 0:
break;
case 1:
rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_PREZZO));
break;
case 2:
{
rout.put(RDOC_QTA, UNO);
// rout.put(RDOC_QTA, UNO);
rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_IMPFISART));
// gestione in base codice per valore fisso ??? tolta la scelta dell'articolo o del cliente
}
break;
case 3:
case 2:
{
int tipolist=contr.get_int(LVCONDV_TIPOLIS);
@ -155,32 +154,46 @@ void TFatturazione_lavanderie::post_process_output(TLista_documenti& doc_out)
query << "USE UMART KEY 2 \n"
<< "FROM " << "CODART=#CODART UM=#UM \n"
<< "TO " << "TCODART=#CODART UM=#UM \n";
TISAM_recordset recset(query);
TISAM_recordset recset(query);
recset.set_var("#CODART",clifo);
recset.set_var("#UM",rcont.get(LVRCONDV_UM));
rout.put(RDOC_PREZZO,recset.get(UMART_PREZZO).as_real());
}
rout.put(RDOC_QTA, dot);
}
break;
case 4:
case 3:
{
rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_PREZZO));
const real cicl=rcont.get_real(LVRCONDV_MINCIC)*dot;
const real qta=rout.get(RDOC_QTA);
rout.put(RDOC_QTA, cicl > qta ? cicl : qta);
const real qta=rout.get(RDOC_QTA);
const real consumo=qta * rout.get_real(RDOC_PREZZO);
const real ciclaggio=dot * rcont.get_real(LVRCONDV_PREZZO) * rcont.get_real(LVRCONDV_MINCIC);
if (consumo<ciclaggio)
{
const bool cicl2rig=contr.get_bool(LVCONDV_CICLAGGIO);
const real cicl=rcont.get_real(LVRCONDV_MINCIC)*dot;
if (cicl2rig)
{
TRiga_documento& congrow=doc.insert_row(++i, "01");
doc.copy_data(congrow,rout);
congrow.put(RDOC_DESCR,"Pareggio minimo fatturabile");
rout.put(RDOC_QTA, cicl-qta);
congrow.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_PREZZO));
}
else
{
rout.put(RDOC_QTA, cicl);
rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_PREZZO));
}
}
}
break;
case 5:
case 4:
{
rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_VALCONV));
rout.put(RDOC_QTA, dot*rcont.get_real(LVRCONDV_FORFPERCL));
}
break;
case 6:
case 5:
{
rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_PREZZO));
@ -196,7 +209,6 @@ void TFatturazione_lavanderie::post_process_output(TLista_documenti& doc_out)
}
void TFatturazione_lavanderie::add_rows(TRiga_documento & rout, TRiga_documento & rin)
{
/*const TString8 causale = rin.get(RDOC_CODAGG1);
@ -268,7 +280,26 @@ void TFatturazione_lavanderie::create_row(TDocumento& doc_out, const TRiga_docum
const TString80 codart=rin.get(RDOC_CODARTMAG);
const real qta=rin.get_real(RDOC_QTA);
const real qta1=rin.get_real(RDOC_QTAGG1);
const TRectype & rcont=contr.row(codart);
const int tipoprezzo=ini_get_int(CONFIG_DITTA, "lv", "TipoPr");
real prezzo=rin.get_real(RDOC_PREZZO);
if (tipoprezzo == 0)
{
if (rcont.empty())
{
TArticolo& art=cached_article(codart);
const TString& um=rin.get(RDOC_UMQTA);
const int index=art.find_um(um);
if (index>=0)
prezzo=art.um()[index].get_real(UMART_PREZZO);
}
else
prezzo=rcont.get_real(LVRCONDV_PREZZO);
}
// Guardo se è una causale di rotto e se è abilitato nella testata del contratto la fatturazione dei rotti
if (cau.get_bool("B3") && contr.get_int(LVCONDV_ADDCAPROT) && !qta1.is_zero())
{
@ -276,11 +307,17 @@ void TFatturazione_lavanderie::create_row(TDocumento& doc_out, const TRiga_docum
rd.add(RDOC_QTA, qta1);
rd.put(RDOC_PREZZO,contr.row(codart).get_real(LVRCONDV_PREZDAN));
}
if (cau.get_bool("B0")) // movimenta ritirato
if (cau.get_bool("B0") && !qta1.is_zero()) // movimenta ritirato
{
const TCausale_magazzino& rit = cached_causale_magazzino(cau.get("S1"));
TRiga_documento& rr=find_or_create_row(doc_out,rin,'R');
rr.add(RDOC_QTA,rit.sgn(s_consmese) * qta1);
const real sgnrit = rit.sgn(s_consmese);
if (!sgnrit.is_zero())
{
TRiga_documento& rr=find_or_create_row(doc_out,rin,'C');
rr.add(RDOC_QTA,sgnrit * qta1);
rr.put(RDOC_PREZZO,prezzo);
}
}
if (cau.get_bool("B1") && !qta.is_zero()) // movimenta consegnato
{
@ -299,6 +336,7 @@ void TFatturazione_lavanderie::create_row(TDocumento& doc_out, const TRiga_docum
{
TRiga_documento& rc=find_or_create_row(doc_out,rin,'I');
rc.add(RDOC_QTA,sgndotin * qta);
rc.put(RDOC_PREZZO,prezzo);
}
const real sgncons=con.sgn(s_consmese);
@ -306,6 +344,7 @@ void TFatturazione_lavanderie::create_row(TDocumento& doc_out, const TRiga_docum
{
TRiga_documento& rc=find_or_create_row(doc_out,rin,'C');
rc.add(RDOC_QTA,sgncons * qta);
rc.put(RDOC_PREZZO,prezzo);
}
}
@ -348,13 +387,17 @@ protected:
void TFatturazione_lav_app::main_loop()
{
TFatturazione_msk msk;
const TString4 mskzona=msk.get(F_CODZONA);
const TString4 mskcat=(F_CODCATC);
TLocalisamfile doc(LF_DOC);
TLocalisamfile rdoc(LF_RIGHEDOC);
while (msk.run()!=K_QUIT)
{
TString query;
query << "USE DOC KEY 3 SELECT (TIPOCF==\"C\")&&(BETWEEN(DATADOC,#DADATA,#ADATA))&&(STATO==\"2\")&&(TIPODOC==\"B01\")\n"
//&&(BETWEEN(DATADOC,#DADATA,#ADATA))&&(STATO==\"2\")&&(TIPODOC==\"B01\")
query << "USE DOC KEY 3 SELECT (TIPOCF==\"C\")\n"
<< "BY TIPOCF CODCF DATADOC\n"
<< "FROM " << "DATADOC=#DADATA PROVV=D ANNO=#ANNO\n"
<< "TO " << " DATADOC=#ADATA PROVV=D ANNO=#ANNO\n";
@ -405,7 +448,27 @@ void TFatturazione_lav_app::main_loop()
lastcli = clifo;
}
if (elab.is_document_ok(recset.cursor()->curr()))
TToken_string key;
key.add('C');
key.add(clifo);
const TRectype& clienti=cache().get(LF_CFVEN,key);
bool cliok=elab.is_document_ok(recset.cursor()->curr());
if (cliok)
{
if (mskzona.full())
{
const TString& codzona=clienti.get(CFV_CODZONA);
cliok = (codzona==mskzona);
}
if (cliok && mskcat.full())
{
const TString& codcat=clienti.get(CFV_CODCATC);
cliok= (codcat==mskcat);
}
}
if (cliok)
{
indsped = recset.get(DOC_CODINDSP).as_int();
TLaundry_contract contr(clifo, indsped, datafat);

View File

@ -10,13 +10,12 @@ PAGE "Fatturazione" -1 -1 40 5
DATE F_DADATA
BEGIN
PROMPT 2 1 "Fattura dal "
FLAGS "H"
END
DATE F_ADATA
BEGIN
PROMPT 45 1 "al "
FLAGS "H"
FLAGS "A"
END
DATE F_DATAFAT