Patch level : 10.0

Files correlati     : lv0.exe lv0600a.msk lv0600a.rep lv3.exe
Ricompilazione Demo : [ ]
Commento            :
Riportate Bonazzate


git-svn-id: svn://10.65.10.50/branches/R_10_00@22500 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-11-22 16:17:42 +00:00
parent b0b9dcb98e
commit dc91a5c341
4 changed files with 181 additions and 88 deletions

View File

@ -689,63 +689,6 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
}
//PROPONI PREZZO
TToken_string key;
key.add('C');
key.add(field(F_CODCF).get());
const TRectype& cfven = cache().get(LF_CFVEN, key);
bool trvlst = false;
if (!cfven.empty())
{
//se è settata la categoria merceologica, leggo sia il listino che la cat merc, altrimenti solo il listino
TString8 codlis = cfven.get(CFV_CODLIST);
TString8 catven;
if (!ini_get_bool(CONFIG_DITTA,"ve", "GESLISCV"))
catven = "";
else
catven = cfven.get(CFV_CATVEN);
//cerco il prezzo sul listino
key.cut(0);
key.add('L'); //tipo
key.add(catven); //catven
key.add(""); //tipocf
key.add(""); //codcf
key.add(codlis); //codlis
key.add('A'); //tiporiga
key.add(codart); //codriga
key.add(""); //um
key.add(""); //nscagl
const TRectype& rcondv = cache().get(LF_RCONDV, key);
if (!rcondv.empty())
{
m.set(S_PREZZOST, rcondv.get_real(RCONDV_PREZZO));
trvlst = true;
}
}
real prezzo;
//se non ho trovato un listino, o se non c'è un listino impostato
//propongo come prezzo il valore convenzionale
if (!trvlst)
{
key.cut(0);
key.add(codart);
key.add(1);
const TRectype& umart = cache().get(LF_UMART, key);
m.set(S_PREZZOST, umart.get_real(UMART_PREZZO));
if (umart.get(UMART_PREZZO).full())
{
prezzo = umart.get_real(UMART_PREZZO);
trvlst = true;
}
}
if (!trvlst && insert_mode())
warning_box(TR("Non è stato trovato nessun prezzo da proporre"));
//se ho scritto un articolo diverso da quello che esisteva prima
//e se si desidera veramente modificarlo, allora permetto la modifica
@ -753,14 +696,74 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
//e lascio tutto invariato
if (codart != _artrig)
{
TToken_string& row = ss.row(ss.selected());
real prezzo(row.get(ss.cid2index(S_PREZZOST)));
if (_artrig.empty() || noyes_box("Si desidera veramente modificare l'articolo %s",(const char*) _artrig))
{
_artrig = codart;
//PROPONI PREZZO
TToken_string key;
key.add('C');
key.add(field(F_CODCF).get());
const TRectype& cfven = cache().get(LF_CFVEN, key);
bool trvlst = false;
if (!cfven.empty())
{
//se è settata la categoria merceologica, leggo sia il listino che la cat merc, altrimenti solo il listino
TString8 codlis = cfven.get(CFV_CODLIST);
TString8 catven;
if (!ini_get_bool(CONFIG_DITTA,"ve", "GESLISCV"))
catven = "";
else
catven = cfven.get(CFV_CATVEN);
//cerco il prezzo sul listino
key.cut(0);
key.add('L'); //tipo
key.add(catven); //catven
key.add(""); //tipocf
key.add(""); //codcf
key.add(codlis); //codlis
key.add('A'); //tiporiga
key.add(codart); //codriga
key.add(""); //um
key.add(""); //nscagl
const TRectype& rcondv = cache().get(LF_RCONDV, key);
if (!rcondv.empty())
{
prezzo = rcondv.get_real(RCONDV_PREZZO);
trvlst = true;
}
}
//se non ho trovato un listino, o se non c'è un listino impostato
//propongo come prezzo il valore convenzionale
if (!trvlst)
{
key.cut(0);
key.add(codart);
key.add(1);
const TRectype& umart = cache().get(LF_UMART, key);
m.set(S_PREZZOST, umart.get_real(UMART_PREZZO));
if (umart.get(UMART_PREZZO).full())
{
prezzo = umart.get_real(UMART_PREZZO);
trvlst = true;
}
}
if (!trvlst && insert_mode())
warning_box(TR("Non è stato trovato nessun prezzo da proporre"));
}
else
m.set(S_CODART, _artrig);
TToken_string& row = ss.row(ss.selected());
row.add(_artrig, ss.cid2index(S_CODART));
row.add(prezzo.string(), ss.cid2index(S_PREZZOST));
row.add(_artrig, ss.cid2index(S_CODART));
ss.force_update(ss.selected());
}
//se all'articolo è associata un'unità di misura, la propongo

View File

@ -2,7 +2,7 @@
<report name="lv0600a" orientation="1" lpi="6" command="lv0 -1 lv0600a">
<description>Stampa Storico Consegne per Cliente</description>
<font face="Courier New" size="10" />
<section type="Head" height="3">
<section type="Head" height="3" pattern="1">
<field x="24.5" y="0.5" type="Testo" align="center" width="55" height="2" pattern="1" text="Stampa Storico Consegne per Cliente">
<font face="Courier New" bold="1" size="14" />
</field>
@ -15,8 +15,8 @@
<prescript description="H0.0 PRESCRIPT">MESSAGE _PAGENO</prescript>
</field>
</section>
<section type="Head" level="1" />
<section repeat="1" type="Head" level="2" height="4.5" page_break="1">
<section type="Head" level="1" pattern="1" />
<section repeat="1" type="Head" level="2" height="4.5" page_break="1" pattern="1">
<groupby>33.CODCF</groupby>
<field border="2" type="Linea" width="90" height="0" pattern="1" />
<field x="1" y="1" type="Testo" width="8" pattern="1" text="Cliente">
@ -37,6 +37,9 @@
<field x="22" y="2" type="Testo" width="18" pattern="1" text="Descr. Articolo">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="14" y="3" type="Testo" width="7" pattern="1" text="N.Doc.">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="22" y="3" type="Testo" width="10" pattern="1" text="Data Doc.">
<font face="Courier New" bold="1" size="10" />
</field>
@ -54,7 +57,7 @@
</field>
<field border="2" y="4" type="Linea" width="90" height="0" pattern="1" />
</section>
<section type="Head" level="3">
<section type="Head" level="3" pattern="1">
<groupby>CODART</groupby>
<field x="1" type="Stringa" width="20" pattern="1">
<source>34.CODART</source>
@ -63,8 +66,11 @@
<source>3000@.DESCR</source>
</field>
</section>
<section type="Body" />
<section type="Body" level="1" height="1">
<section type="Body" pattern="1" />
<section type="Body" level="1" height="1" pattern="1">
<field x="14" type="Numero" align="right" width="7" pattern="1">
<source>34.NDOC</source>
</field>
<field x="22" type="Data" width="10" pattern="1">
<source>1000@.DATADOC</source>
</field>
@ -78,17 +84,18 @@
<source>34.CODAGG1</source>
</field>
<field x="73" type="Numero" align="right" width="12" pattern="1">
<source>34.PREZZO</source>
<source>34.IMPNS</source>
</field>
</section>
<section type="Foot" />
<section type="Foot" level="1" />
<section type="Foot" level="2" />
<section type="Foot" level="3" />
<section type="Foot" pattern="1" />
<section type="Foot" level="1" pattern="1" />
<section type="Foot" level="2" pattern="1" />
<section type="Foot" level="3" pattern="1" />
<sql>USE 34
SELECT ((34.CODNUM="B01")&#26;&#26;(BETWEEN(33.DATADOC,#F_DATA_FROM,#F_DATA_TO))&#26;&#26;(BETWEEN(33.CODCF,#F_CODCF_FROM,#F_CODCF_TO))&#26;&#26;(BETWEEN(CODART,#F_CODARTI_FROM,#F_CODARTI_TO))&#26;&#26;(BETWEEN(CODAGG1,#F_CODCAUSA_FROM,#F_CODCAUSA_TO)))
SELECT ((BETWEEN(33.DATADOC,#F_DATA_FROM,#F_DATA_TO))&#26;&#26;(BETWEEN(33.CODCF,#F_CODCF_FROM,#F_CODCF_TO))&#26;&#26;(BETWEEN(CODART,#F_CODARTI_FROM,#F_CODARTI_TO))&#26;&#26;(BETWEEN(CODAGG1,#F_CODCAUSA_FROM,#F_CODCAUSA_TO)))
BY 33.CODCF 34.CODART 33.DATADOC
JOIN 33 TO 34 ALIAS 1000 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
JOIN 20 TO 33 ALIAS 2000 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 47 TO 34 ALIAS 3000 INTO CODART==CODART</sql>
JOIN 47 TO 34 ALIAS 3000 INTO CODART==CODART
FROM CODNUM=="B05"</sql>
</report>

View File

@ -26,6 +26,7 @@ BEGIN
OUTPUT F_RAGSOC_DA RAGSOC
CHECKTYPE SEARCH
FIELD #F_CODCF_FROM
MESSAGE COPY,F_CODCF_A|CHECK,F_CODCF_A
END
STRING F_RAGSOC_DA 50
@ -110,6 +111,7 @@ BEGIN
OUTPUT F_DESART_DA DESCR
CHECKTYPE SEARCH
FIELD #F_CODARTI_FROM
MESSAGE COPY,F_CODART_A|CHECK,F_CODART_A
END
STRING F_DESART_DA 40
@ -172,6 +174,7 @@ BEGIN
OUTPUT F_DESCAUS_DA S0
CHECKTYPE SEARCH
FIELD #F_CODCAUSA_FROM
MESSAGE COPY,F_CODCAUS_A|CHECK,F_CODCAUS_A
END
STRING F_DESCAUS_DA 50

View File

@ -45,7 +45,12 @@ void TInvia_clienti_skema::aggiungi_riga(const long codcf)
}
new_rec("");
set("CODCF", TVariant(codcf));
TString16 cod;
cod.format("%06d", codcf);
set("CODCF", cod);
set("RAGSOC", ragsoc);
set("CITTA", localita);
}
@ -53,7 +58,19 @@ void TInvia_clienti_skema::aggiungi_riga(const long codcf)
TInvia_clienti_skema::TInvia_clienti_skema()
: TAS400_recordset("AS400(122)")
{
create_field("CODCF", -1, 20, _longzerofld, true); //codice cliente
/*
FILE CLIENTI.TXT
Campo Tipo Posizione
-------------------------------------------
Codice Cliente Alfanumerico 1-20
Ragione Sociale Alfanumerico 21-70
Citta Alfanumerico 71-120
*/
create_field("CODCF", -1, 20, _alfafld, true); //codice cliente
create_field("RAGSOC", -1, 50, _alfafld, true); //ragione sociale
create_field("CITTA", -1, 50, _alfafld, true); //città
create_field("ACAPO", -1, 2, _alfafld, true, TVariant("\r\n")); //caratteri di a capo
@ -66,6 +83,9 @@ TInvia_clienti_skema::TInvia_clienti_skema()
//Classe TInvia_articoli_skema
class TInvia_articoli_skema: public TAS400_recordset
{
TString4 _umkg; // Unità di misura dei Kg
TString4 _umgr; // Unità di misura dei gr
public:
void aggiungi_riga(const TString& codart);
TInvia_articoli_skema();
@ -74,36 +94,81 @@ public:
void TInvia_articoli_skema::aggiungi_riga(const TString& codart)
{
//preparo la cache su anamag
const TRectype& anamag = cache().get(LF_ANAMAG, codart);
TArticolo & anamag = cached_article(codart);
const TString80 desart = anamag.get(ANAMAG_DESCR);
const TString80 tpart = anamag.get(ANAMAG_TIPOPARTE);
TString8 codlav; codlav.format("%05d", anamag.get(ANAMAG_CODLAV1));
TString16 peso; peso.format("%010d", anamag.get(ANAMAG_PESO));
const TString80 tpart = anamag.get(ANAMAG_CODARTALT);
TString8 codlav;
codlav.format("%05d", anamag.get_int(ANAMAG_CODLAV1));
real peso = anamag.get_real(ANAMAG_PESO);
const TString4 ump = anamag.get(ANAMAG_UMP);
const real lunghezza = anamag.get_real(ANAMAG_USER9);
const real larghezza = anamag.get_real(ANAMAG_USER10);
if (ump.full())
{
if (ump != _umkg)
{
peso = anamag.convert_to_um(peso, _umkg, ump, false); // Converto in Kg
peso.round(3); // Arrotondo al grammo
}
}
else
peso = ZERO;
new_rec("");
set("CODART", codart);
set("DESART", desart);
set("CODLAV", codlav);
set("TPART", tpart);
set("PESO", peso);
set("LUNGHEZZA", lunghezza);
set("LARGHEZZA", larghezza);
set("PESO", peso.stringa(10, 3, '0'));
set("LUNGHEZZA", lunghezza.string(4, 0));
set("LARGHEZZA", larghezza.string(4, 0));
}
TInvia_articoli_skema::TInvia_articoli_skema()
: TAS400_recordset("AS400(127)")
: TAS400_recordset("AS400(115)")
{
/*
FILE ARTICOLI.TXT
Campo Tipo Posizione
-----------------------------------------------------
Codice Articolo Alfanumerico 1-20
Descrizione Articolo Alfanumerico 21-70
Codice Lavaggio Numerico intero
Allineato a destra. 71-75
Tipo Articolo Alfanumerico 76-95
Peso (Kg) Numerico
con 3 decimali
Allineato a destra
(formato 999999,999) 96-105
Lunghezza Numerico
Allineato a destra
(formato 99999) 106-109
Larghezza Numerico
Allineato a destra
(formato 99999) 110-113
*/
create_field("CODART", -1, 20, _alfafld, true); //codice articolo
create_field("DESART", -1, 50, _alfafld, true); //descrizione
create_field("CODALV", -1, 5, _intzerofld, true); //codice lavaggio
create_field("CODLAV", -1, 5, _alfafld, true); //codice lavaggio
create_field("TPART", -1, 20, _alfafld, true); //tipo articolo
create_field("PESO", -1, 20, _alfafld, true); //peso
create_field("LUNGHEZZA", -1, 5, _realfld, true); //lunghezza
create_field("LARGHEZZA", -1, 5, _realfld, true); //larghezza
create_field("PESO", -1, 10, _alfafld, true); //peso
create_field("LUNGHEZZA", -1, 4, _alfafld, true); //lunghezza
create_field("LARGHEZZA", -1, 4, _alfafld, true); //larghezza
create_field("ACAPO", -1, 2, _alfafld, true, TVariant("\r\n")); //caratteri di a capo
_umkg = ini_get_string(CONFIG_DITTA, "lv", "UmKg", "KG");
TISAM_recordset ums("USE %UMS SELECT (NUM(S7==#KG))&&(STR(R10==0.001))");
ums.set_var("#KG", _umkg);
if (ums.move_first())
_umgr = ums.get("CODTAB").as_string();
else
_umgr = _umkg == "KG" ? "GR" : "";
}
//////////////////////////////////////
@ -133,7 +198,11 @@ void TInvia_dotazioni_skema::aggiungi_riga(const long codcf, const long codcont)
const TString80 codart = rcont.get(LVRCONDV_CODART).as_string();
new_rec("");
set("CODCF", TVariant(codcf));
TString16 cod;
cod.format("%06d", codcf);
set("CODCF", cod);
set("CODART", codart);
}
}
@ -141,6 +210,17 @@ void TInvia_dotazioni_skema::aggiungi_riga(const long codcf, const long codcont)
TInvia_dotazioni_skema::TInvia_dotazioni_skema()
: TAS400_recordset("AS400(42)")
{
/*
FILE DOTAZIONE.TXT
Campo Tipo Posizione
-----------------------------------------------------
Codice Cliente Alfanumerico 1-20
Codice Articolo Alfanumerico 21-40
*/
create_field("CODCF", -1, 20, _alfafld, true); //codice cliente
create_field("CODART", -1, 20, _alfafld, true); //codice cliente
create_field("ACAPO", -1, 2, _alfafld, true, TVariant("\r\n")); //caratteri di a capo