Patch level : 10.0

Files correlati     : pd5317.exe pd5317100.rep
Ricompilazione Demo : [ ]
Commento            :
Correzioni a calcolo e report spese carrelli


git-svn-id: svn://10.65.10.50/branches/R_10_00@22581 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2012-02-20 14:25:16 +00:00
parent e3ef04da2d
commit 36b5a19596
2 changed files with 129 additions and 88 deletions

View File

@ -1,11 +1,19 @@
#include <Textset.h>
#include <Applicat.h>
#include <Automask.h>
#include <Reprint.h>
#include <applicat.h>
#include <automask.h>
#include <currency.h>
#include <progind.h>
#include <relation.h>
#include <reprint.h>
#include <textset.h>
#include <utility.h>
#include "pd5317.h"
#include "pd5317100.h"
#include <doc.h>
#include <mov.h>
#include "../ca/rmovana.h"
//Stampa Listino Carrelli
//lvietri
@ -34,38 +42,33 @@ struct TStruttura_carrelli: public TObject
TString _user13;
TString _user14;
TDate _data_doc;
TString16 _num_doc;
TCurrency _importob;
TDate _data_gara;
TCurrency _prezzoAcq;
TString _descr_conto;
TString _modello;
TCurrency _noleggio;
TCurrency _manutenzione;
TCurrency _revisione, _manutenzione;
TString _venduto_a;
TCurrency _prezzo_vend;
TCurrency _prezzo_p1;
TCurrency _prezzo_autom;
TCurrency _prezzo_recup;
TStruttura_carrelli():_articolo(""),_user1 (""),_user2 (""),
_user3 (""),_user4 (""),_user5 (""),
_user6 (""),_user7 (""),_user8 (""),
_user9 (""),_user10(""),_user11(""),
_user12(""),_user13(""),_user14(""),
_data_doc(""),_data_gara(""),_modello(""),
_venduto_a("") {}
TStruttura_carrelli() {}
TStruttura_carrelli(TString articolo,TString user[],TDate dataDoc,
TStruttura_carrelli(TString articolo,TString user[],TDate dataDoc, const TString& numDoc,
TCurrency importob, TDate data_gara, TCurrency prezzoAcq,TString descrAcq,
TString modello,TCurrency noleggio,TCurrency manutenzione, TString venduto_a,
TString modello,TCurrency noleggio,TCurrency revisione,TCurrency manutenzione, TString venduto_a,
TCurrency prezzoVend,TCurrency prezzo_p1, TCurrency prezzo_autom,
TCurrency prezzo_recup):
_articolo(articolo),_user1 (user[0 ]),_user2 (user[1 ]),_user3 (user[2 ]),
_user4 (user[3 ]),_user5 (user[4 ]),_user6 (user[5 ]),_user7 (user[6 ]),
_user8 (user[7 ]),_user9 (user[8 ]),_user10(user[9 ]),_user11(user[10]),
_user12(user[11]),_user13(user[12]),_user14(user[13]),_data_doc(dataDoc),
_user12(user[11]),_user13(user[12]),_user14(user[13]),_data_doc(dataDoc), _num_doc(numDoc),
_importob(importob),_data_gara(data_gara) ,_prezzoAcq(prezzoAcq),
_descr_conto(descrAcq), _modello(modello),_noleggio(noleggio),
_descr_conto(descrAcq), _modello(modello),_noleggio(noleggio), _revisione(revisione),
_manutenzione(manutenzione),_venduto_a(venduto_a), _prezzo_vend(prezzoVend),
_prezzo_p1(prezzo_p1), _prezzo_autom(prezzo_autom),_prezzo_recup(prezzo_recup)
{}
@ -138,7 +141,7 @@ const TString& TCarrelli_app::get_query(int tipo, bool venduto, const TString& c
order_by<< "BY COMMESSA\n";
join << "JOIN ANAMAG TO SALDANA INTO CODART==COMMESSA \n";
join << "JOIN COMMESSE TO SALDANA INTO CODCMS==COMMESSA \n";
if(venduto)
if (venduto)
{
join << "FROM CONTO='004076000003' \n";
join << "TO CONTO='004076000003' \n";
@ -146,23 +149,34 @@ const TString& TCarrelli_app::get_query(int tipo, bool venduto, const TString& c
}
else if(tipo==1)//query su articolo\doc.
{
/*
select << "USE DOC KEY 3\n";
select << "SELECT ((TIPODOC='B01')&&";
between << "(BETWEEN(CODCMS,#COMM,#COMM)))\n";
join << "JOIN CLIFO TO DOC INTO TIPOCF==TIPOCF CODCF==CODCF\n";
join << "JOIN INDSPED TO DOC INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP\n";
join << "JOIN COMUNI TO CLIFO INTO COM==COMCF \n";
*/
select << "USE RDOC KEY 6 SELECT DOC.TIPODOC='B01'\n";
join << "JOIN DOC INTO PROVV=PROVV ANNO=ANNO CODNUM==CODNUM NDOC==NDOC\n";
join << "JOIN CLIFO TO DOC INTO TIPOCF==TIPOCF CODCF==CODCF\n";
join << "JOIN INDSPED TO DOC INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP\n";
join << "JOIN COMUNI TO CLIFO INTO COM==COMCF \n";
join << "FROM CODCMS=#COMM\n";
join << "TO CODCMS=#COMM\n";
}
else if(tipo==2)//query su saldana ACQUISTO DA
{
select << "USE SALDANA KEY 2\n";
select << "SELECT (((CONTO ?='003081*')||(CONTO =='003071000002'))&&";
between << "(BETWEEN(COMMESSA,#COMM,#COMM)))";
join << "\nFROM CONTO=003071000002";
join << "\nTO CONTO=003081999999";
}
else if(tipo==3)//query su piano dei conti.
{
select << "USE PCON KEY 1\n";
select << "SELECT ((GRUPPO=#GRUPPO1)&&(CONTO=#CONTO1)&&(SOTTOCONTO=#SOTTOCONTO1))";
select << "USE PCON\n"
<< "SELECT ((GRUPPO=#GRUPPO1)&&(CONTO=#CONTO1)&&(SOTTOCONTO=#SOTTOCONTO1))";
}
else if(tipo==4)//query su multirel per sapere se cespite
{
@ -189,28 +203,26 @@ const TString& TCarrelli_app::get_query(int tipo, bool venduto, const TString& c
class TRiepCarrelli: public TArray
{
public:
void add(TString articolo, TString user[], TDate dataDoc,
void add(const TString& articolo, TString user[], TDate dataDoc, const TString& numDoc,
TCurrency importob, TDate data_gara, TCurrency prezzoAcq,TString descrAcq,
TString modello,TCurrency noleggio,TCurrency manutenzione,
TString venduto_a, TCurrency prezzoVend,
TCurrency prezzo_p1, TCurrency prezzo_autom,
TCurrency prezzo_recup);
TRiepCarrelli():TArray(){}
TString modello,TCurrency noleggio,TCurrency revisione, TCurrency manutenzione,
TString venduto_a, TCurrency prezzoVend, TCurrency prezzo_p1, TCurrency prezzo_autom,
TCurrency prezzo_recup);
};
void TRiepCarrelli::add(TString articolo,TString user[],TDate dataDoc,
void TRiepCarrelli::add(const TString& articolo,TString user[],TDate dataDoc, const TString& numDoc,
TCurrency importob, TDate data_gara,
TCurrency prezzoAcq,TString descrAcq,
TString modello,TCurrency noleggio,TCurrency manutenzione,
TString modello,TCurrency noleggio,
TCurrency revisione, TCurrency manutenzione,
TString venduto_a, TCurrency prezzoVend,
TCurrency prezzo_p1, TCurrency prezzo_autom,
TCurrency prezzo_recup)
{
TStruttura_carrelli* struttura = new TStruttura_carrelli(
articolo,user,dataDoc,importob,data_gara,
prezzoAcq,descrAcq,modello, noleggio, manutenzione,
articolo,user,dataDoc,numDoc,importob,data_gara,
prezzoAcq,descrAcq,modello, noleggio, revisione, manutenzione,
venduto_a,prezzoVend,prezzo_p1,prezzo_autom, prezzo_recup);
TArray::add(struttura);
@ -220,9 +232,9 @@ void TRiepCarrelli::add(TString articolo,TString user[],TDate dataDoc,
void TCarrelli_app::elabora(const TMask& mask)const
{
bool search = true;
bool venduto = mask.get_bool(F_VENDUTO);
const bool venduto = mask.get_bool(F_VENDUTO);
if(!venduto && TVariant(mask.get(F_COD_CMS))==TVariant(mask.get(F_COD_CMS_TO)))
if(!venduto && !mask.field(F_COD_CMS).empty() && mask.get(F_COD_CMS)==mask.get(F_COD_CMS_TO))
{
TISAM_recordset carico(get_query(0,true));
@ -231,14 +243,15 @@ void TCarrelli_app::elabora(const TMask& mask)const
carico.set_var("#TO",TVariant(mask.get(F_COD_CMS_TO)));//
carico.set_var("#F_VEN",TVariant(mask.get(F_VENDUTO)));//
carico.set_var("#F_CAR",TVariant(mask.get(F_CARICO)));//
for(bool ok = carico.move_first();ok;ok=carico.move_next()){
search = false;
warning_box (TR("Attenzione:Il carrello risulta venduto!"));
for(bool ok = carico.move_first();ok;ok=carico.move_next())
{
search = warning_box (TR("Attenzione:Il carrello risulta venduto!"));
break;
}
}
if(search){
if(search)
{
TISAM_recordset riep(get_query(0,venduto));
//inserire parametri filtri
@ -256,11 +269,11 @@ void TCarrelli_app::elabora(const TMask& mask)const
TString campo;
TString ragsoc;
TString indir;
TString16 numDoc;
TDate dataDoc;
TDate data_gara;
TString descr_conto;
TString conto;
TString prov;
TString modello;
TString descr_null;
@ -269,15 +282,18 @@ void TCarrelli_app::elabora(const TMask& mask)const
TString venduto_a;
TCurrency prezzoVend;
TCurrency noleggio;
TCurrency manutenzione;
TCurrency manutenzione, revisione;
TCurrency prezzo_null;
TString commessa;
TString commessaOld;
TString commessa, commessaOld;
TProgind pi(riep.items(), title());
for(bool ok = riep.move_first();ok;ok=riep.move_next())
{
if (!pi.addstatus(1))
break;
commessa = riep.get("SALDANA.COMMESSA").as_string();
articolo = riep.get("ANAMAG.CODART").as_string();//A
search = true;
@ -326,23 +342,18 @@ void TCarrelli_app::elabora(const TMask& mask)const
TISAM_recordset bolle(get_query(1));
bolle.set_var("#COMM",TVariant(articolo));
for(bool ok2 = bolle.move_last();ok2;ok2=bolle.move_next())
if (bolle.move_last())
{
ragsoc = bolle.get("CLIFO.RAGSOC").as_string();
indir = bolle.get("INDSPED.LOCALITA").as_string();
dataDoc= bolle.get("DATADOC").as_date();
if(indir.empty())
{
indir = bolle.get("COMUNI.DENCOM").as_string();
prov = bolle.get("COMUNI.PROVCOM").as_string();
dataDoc= bolle.get("DOC.DATADOC").as_date();
numDoc = bolle.get("DOC.NDOC").as_string();
indir = bolle.get("COMUNI.DENCOM").as_string();
TString4 prov = bolle.get("COMUNI.PROVCOM").as_string();
if (prov.full())
indir.trim() << "(" << prov.trim() << ")";
}
break;
}
if(ragsoc.not_empty())
if (ragsoc.full())
{
user[11] = ragsoc;
user[12] = indir ;
@ -352,14 +363,14 @@ void TCarrelli_app::elabora(const TMask& mask)const
data_gara = riep.get("COMMESSE.DATAGARA").as_string();//Q
modello = riep.get("COMMESSE.DESCRIZ").as_string();//T
prezzoAcq.set_price(0);//R
prezzoAcq= ZERO; //R
conto="";
TISAM_recordset saldana(get_query(2));
saldana.set_var("#COMM",TVariant(articolo));
for(bool ok3 = saldana.move_first();ok3;ok3=saldana.move_next())
{
prezzoAcq = prezzoAcq + saldana.get("SALDANA.SALDO").as_real();
prezzoAcq += saldana.get("SALDANA.SALDO").as_real();
conto = saldana.get("SALDANA.CONTO").as_string();
}
@ -384,22 +395,14 @@ void TCarrelli_app::elabora(const TMask& mask)const
//RECUPERO FORNITORE
descr_conto=descr_null;//S
TISAM_recordset fornitore(get_query(5,false,commessa));
for(bool ok3 = fornitore.move_last();ok3;ok3=fornitore.move_next())
if (fornitore.move_last())
{
if(fornitore.get("MOVANA.NUMREGCG").as_int() == 0 ||
fornitore.get("MOVANA.NUMREGCG").as_string().empty() ){
}else{
if (fornitore.get("MOVANA.NUMREGCG").as_int() > 0)
descr_conto = fornitore.get("CLIFO.RAGSOC").as_string();
}
break;
}
/*if(fornitore.move_next()){
descr_conto = fornitore.get("CLIFO.RAGSOC").as_string();
}*/
//NOLEGGIO
noleggio.set_price(0);//U
noleggio = ZERO; //U
TISAM_recordset noleg(get_query_saldana("004076000004"));
noleg.set_var("#COMM",TVariant(articolo));
for(bool ok2 = noleg.move_first();ok2;ok2=noleg.move_next())
@ -408,12 +411,32 @@ void TCarrelli_app::elabora(const TMask& mask)const
}
//MANUTENZIONE
/*
manutenzione.set_price(0);//U
TISAM_recordset manut(get_query_saldana("003071000003"));
manut.set_var("#COMM",TVariant(articolo));
for(bool ok2 = manut.move_first();ok2;ok2=manut.move_next())
{
manutenzione = manutenzione + manut.get("SALDANA.SALDO").as_real();
manutenzione += manut.get("SALDANA.SALDO").as_real();
}
*/
revisione = manutenzione = ZERO;
TString query;
query << "USE RMOVANA KEY 4 SELECT CODCONTO='003071000003'"
<< "\nJOIN MOVANA INTO NUMREG==NUMREG"
<< "\nFROM CODCMS=#COMM\nTO CODCMS=#COMM";
TISAM_recordset manut2(query);
manut2.set_var("#COMM", articolo);
for(bool ok2 = manut2.move_first();ok2;ok2=manut2.move_next())
{
const TString& dacodnum = manut2.get("MOVANA.DCODNUM").as_string();
const long numreg = manut2.get("MOVANA.NUMREG").as_int();
const real imp = manut2.get(RMOVANA_IMPORTO).as_real();
if (dacodnum == "PREV")
revisione += imp;
else
manutenzione += imp;
}
/*
@ -475,19 +498,19 @@ void TCarrelli_app::elabora(const TMask& mask)const
}
}
const TCurrency prezzo_p1 = (prezzoAcq + manutenzione)*1.1;//Y
const TCurrency prezzo_autom = real((prezzo_p1.get_num() * real(1.1 * 1.2)) - (noleggio.get_num()/2.0)); //Z
const TCurrency prezzo_p1 = prezzoAcq + (revisione+manutenzione)*1.1;//Y
const TCurrency prezzo_autom(real(prezzo_p1.get_num() * 1.2 - noleggio.get_num()*0.8)); //Z
//const TCurrency prezzo_recup = noleggio - prezzoVend - prezzo_p1; //AB Vecchio modo
const TCurrency prezzo_recup = prezzoVend + noleggio - prezzo_p1; //AB Nuovo modo
riepilogo.add(articolo,user,dataDoc,importob,data_gara,
riepilogo.add(articolo,user,dataDoc,numDoc,importob,data_gara,
prezzoAcq,descr_conto,modello,
noleggio,manutenzione,venduto_a,prezzoVend,
noleggio,revisione,manutenzione,venduto_a,prezzoVend,
prezzo_p1, prezzo_autom,prezzo_recup);
prezzoAcq = prezzo_null;
manutenzione = prezzo_null;
manutenzione = revisione = prezzo_null;
noleggio = prezzo_null;
prezzoVend = prezzo_null;
}
@ -500,7 +523,7 @@ void TCarrelli_app::elabora(const TMask& mask)const
//scandisce clienti e tiene buoni solo quelli valorizzati
FOR_EACH_ARRAY_ITEM(riepilogo,c,obj)
{
TStruttura_carrelli& s = *(TStruttura_carrelli*) obj;
const TStruttura_carrelli& s = *(TStruttura_carrelli*)obj;
riep_set->new_rec();
int colonna = 0;
@ -560,6 +583,11 @@ void TCarrelli_app::elabora(const TMask& mask)const
colonna++;
riep_set->set(colonna,(s._prezzo_recup).string());//AB
colonna++;
riep_set->set(colonna,(s._revisione).string());//AC
colonna++;
riep_set->set(colonna,s._num_doc);//AD
colonna++;
}
//Crea file che contiene il recordset
@ -588,7 +616,7 @@ void TCarrelli_app::main_loop()
//Setto come check iniziale il venduto a Si
mask.set("#F_VEN","X");
while(mask.run()==K_ENTER)
while (mask.run()==K_ENTER)
{
elabora(mask);
}

View File

@ -2,7 +2,7 @@
<report name="pd5317100" orientation="2" lpi="6">
<description>Stampa Listino Carrelli</description>
<font face="Courier New" size="9" />
<section type="Head" height="6">
<section type="Head" height="6" pattern="1">
<field x="44.5" type="Testo" valign="center" align="center" width="38" height="2" pattern="1" text="Stampa Carrelli">
<font face="Courier New" bold="1" size="13" />
</field>
@ -15,20 +15,20 @@
<prescript>MESSAGE _PAGENO</prescript>
</field>
<field border="3" x="0.5" y="3" type="Rettangolo" width="143" height="3" pattern="1" />
<field border="1" x="6.5" y="3" type="Linea" height="3" pattern="1" />
<field x="6.5" y="3" type="Testo" align="center" width="10" pattern="1" text="Modello">
<font face="Courier New" bold="1" size="8" />
</field>
<field border="1" x="6.5" y="3" type="Linea" height="3" pattern="1" />
<field border="1" x="16.5" y="3" type="Linea" height="3" pattern="1" />
<field x="17.5" y="3" type="Testo" align="center" width="10" pattern="1" text="Matricola">
<font face="Courier New" bold="1" size="8" />
</field>
<field border="1" x="27.5" y="3" type="Linea" height="3" pattern="1" />
<field x="27.5" y="3" type="Testo" align="center" width="10" pattern="1" text="Volt-AH">
<font face="Courier New" bold="1" size="8" />
</field>
<field border="1" x="27.5" y="3" type="Linea" height="3" pattern="1" />
<field border="1" x="37.5" y="3" type="Linea" height="3" pattern="1" />
<field x="57.5" y="3" type="Testo" width="10" pattern="1" text="Mese">
<field x="57" y="3" type="Testo" width="10" pattern="1" text="Data Doc.">
<font face="Courier New" bold="1" size="8" />
</field>
<field border="1" x="67.5" y="3" type="Linea" height="3" pattern="1" />
@ -48,6 +48,9 @@
<font face="Courier New" bold="1" size="6" />
<source>"(PA+RIP+TRANS)*1.10"</source>
</field>
<field x="38" y="3.25" type="Testo" width="10" pattern="1" text="Num Doc.">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="1.5" y="4" type="Testo" align="center" width="5" pattern="1" text="N&#B0;">
<font face="Courier New" bold="1" size="8" />
</field>
@ -69,7 +72,7 @@
<field x="67.5" y="4" type="Testo" align="center" width="10" pattern="1" text="Data">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="77.5" y="4" type="Testo" align="center" width="20" pattern="1" text="N&#B0;Fatt-Cons">
<field x="77.5" y="4" type="Testo" align="center" width="20" pattern="1" text="N&#B0; Fattura">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="97.5" y="4" type="Testo" align="center" width="10" pattern="1" text="Nol.Utile">
@ -90,7 +93,10 @@
<field x="38" y="5" type="Testo" width="10" pattern="1" text="Via">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="77.5" y="5" type="Testo" align="center" width="20" pattern="1" text="Prezzo Acq.">
<field x="78" y="5" type="Testo" width="10" pattern="1" text="Prezzo Acq.">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="87" y="5" type="Testo" align="right" width="10" pattern="1" text="I Rev.">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="97.5" y="5" type="Testo" align="center" width="10" pattern="1" text="Costi Man">
@ -106,26 +112,30 @@
<font face="Courier New" bold="1" size="8" />
</field>
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1" height="3.2">
<section type="Head" level="1" pattern="1" />
<section type="Body" pattern="1" />
<section type="Body" level="1" height="3" pattern="1">
<field border="1" x="0.5" type="Linea" height="3" pattern="1" />
<field border="1" x="6.5" type="Linea" height="3" pattern="1" />
<field x="6.5" type="Stringa" align="center" width="10" pattern="1">
<font face="Courier New" size="8" />
<source>T</source>
</field>
<field border="1" x="6.5" type="Linea" height="3" pattern="1" />
<field x="16.5" type="Stringa" align="center" width="11" pattern="1">
<font face="Courier New" size="7" />
<source>F</source>
</field>
<field border="1" x="16.5" type="Linea" height="3" pattern="1" />
<field border="1" x="27.5" type="Linea" height="3" pattern="1" />
<field x="27.5" type="Stringa" align="center" width="10" pattern="1">
<font face="Courier New" size="8" />
<source>J</source>
</field>
<field border="1" x="27.5" type="Linea" height="3" pattern="1" />
<field border="1" x="37.5" type="Linea" height="3" pattern="1" />
<field x="38" type="Stringa" width="19.5" pattern="1">
<font face="Courier New" size="8" />
<source>AD</source>
</field>
<field x="57.5" type="Stringa" width="10" pattern="1">
<font face="Courier New" size="8" />
<source>O</source>
@ -203,10 +213,14 @@
<font face="Courier New" size="8" />
<source>N</source>
</field>
<field x="78" y="2" type="Stringa" align="center" width="19.5" pattern="1">
<field x="78" y="2" type="Valuta" align="right" width="9" pattern="1" text="###.###.###,@@">
<font face="Courier New" size="8" />
<source>R</source>
</field>
<field x="88" y="2" type="Valuta" align="right" width="9" pattern="1" text="###.###.###,@@">
<font face="Courier New" size="8" />
<source>R+AC</source>
</field>
<field x="97.5" y="2" type="Stringa" align="center" width="10" pattern="1">
<font face="Courier New" size="8" />
<source>V</source>
@ -228,8 +242,7 @@
<source>K</source>
</field>
<field border="1" x="0.5" y="3" type="Linea" width="143" height="0" pattern="1" />
<field border="1" x="0.5" y="3.2" type="Linea" width="143" height="0" pattern="1" />
</section>
<section type="Foot" />
<section type="Foot" level="1" />
<section type="Foot" pattern="1" />
<section type="Foot" level="1" pattern="1" />
</report>