Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Stampa cartellini Tetractis


git-svn-id: svn://10.65.10.50/branches/R_10_00@22198 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2011-05-31 23:14:11 +00:00
parent 4a30114a85
commit cb754c78ca
5 changed files with 236 additions and 175 deletions

16
ps/pl1048100.alx Executable file
View File

@ -0,0 +1,16 @@
: MESSAGE_CARTPARENTDOC ( n1 -- )
CART_PARENT_DOC \ user defined word in ve1.exe
;
: MESSAGE_CARTPARENTROW ( n1 -- )
CART_PARENT_ROW \ user defined word in ve1.exe
;
: MESSAGE_CURRCONT ( -- -- )
CURRCONT
;
: MESSAGE_CONTNUM ( -- -- )
CONTNUM
;

View File

@ -132,7 +132,7 @@ bool TCartellini_report::msg_contnum(TVariant_stack& stack)
size_t TCartellini_report::get_usr_words(TString_array& words) const
{
TReport::get_usr_words(words);
TDocument_report::get_usr_words(words);
const char* const name[] = { "CART_PARENT_DOC", "CART_PARENT_ROW", "CURRCONT", "CONTNUM", NULL };
@ -146,7 +146,7 @@ size_t TCartellini_report::get_usr_words(TString_array& words) const
bool TCartellini_report::execute_usr_word(unsigned int opcode, TVariant_stack& stack)
{
if (opcode < _first_msg)
return TReport::execute_usr_word(opcode, stack);
return TDocument_report::execute_usr_word(opcode, stack);
opcode -= _first_msg;
switch (opcode)
{
@ -173,11 +173,40 @@ public:
const real perc() const {return _perc;}
real & perc() { return _perc;}
TCarrello(const char * key) : TRecord_array(key, LF_PACKLIST) {}
TCarrello(const char * key) : TRecord_array(key, LF_PACKLIST) { }
};
static TLaundry_contract * __contract = NULL;
class TCrea_cartellini : public TSkeleton_application
{
TDocumento * _doc;
int _contnum;
private:
protected:
virtual const char * extra_modules() const { return "ba"; }
const TDocumento & doc() const { return *_doc;}
virtual void main_loop();
void crea_precedenze(ofstream & outfile, TArray & precs);
void crea_carrelli(TArray & precs);
void riempi_max(TArray & carrelli, TArray & precs);
void resto_max(TArray & carrelli, TArray & precs);
void riempi_normale(TArray & carrelli, TArray & precs, int level);
void riempi_resti(TArray & carrelli, TArray & precs);
public:
const TDocumento & doc() { return *_doc; }
void ottimizza(const char * dir);
void stampa();
bool set_params();
bool set_params(const TMask & m);
};
// restituisce un riferimento all' applicazione
inline TCrea_cartellini & app() { return (TCrea_cartellini &) main_app();}
class TPrecedenza : public TObject
{
int _tipoart;
@ -232,8 +261,9 @@ public:
const char * TPrecedenza::key_carrello(int num) const
{
TString & key = get_tmp_string(25);
TString4 codnum(_codnum); codnum.left_just(4, '_');
key.format("%s|%c%04d%-4s%-6ld%04d", (const char *) tipo_contenitore(), _provv, _anno, _codnum, _ndoc, num);
key.format("%s|%c%04d%s%06ld%04d", (const char *) tipo_contenitore(), _provv, _anno, (const char *) codnum, _ndoc, num);
return key;
}
@ -244,9 +274,9 @@ TPrecedenza::TPrecedenza(const char * codart, int anno, char provv, const char *
const bool separa_articoli = cache().get("&LV020", key).get_bool(ARTSEP);
_tipoart = separa_articoli ? atoi(cache().get("&LV047", codart, TPARTICOLO)) : 0;
if (__contract = NULL)
if (__contract == NULL)
{
TString key; key.format("%c|%d|%S|%ld", _provv, _anno, _codnum, _ndoc);
TString key; key.format("%c|%d|%s|%ld", _provv, _anno, (const char *) _codnum, _ndoc);
__contract = new TLaundry_contract(_codcf, 0, TDate(cache().get(LF_DOC, key, DOC_DATADOC)));
}
const TRectype & rec = __contract->row(_codart);
@ -365,8 +395,10 @@ real TPrecedenza::get_pacchi_max() const
real pppacco = cached_article(_codart).get(ANAMAG_PPCONF);
if (pppacco > 0)
{
pacchi /= pppacco;
pppacco.floor();
pacchi.floor();
}
return pacchi;
}
@ -387,8 +419,10 @@ real TPrecedenza::get_pacchi_nor() const
real pppacco = cached_article(_codart).get(ANAMAG_PPCONF);
if (pppacco > 0)
{
pacchi /= pppacco;
pppacco.floor();
pacchi.floor();
}
return pacchi;
}
@ -401,7 +435,7 @@ const TString & TPrecedenza::tipo_contenitore() const
const TString & TPrecedenza::dimensione() const
{
TString key; key << _tipocf << _codcf; // verificare
TString key; key << _tipocf << _codcf; // verificare
return cache().get("&LV020", key, DIMENSIONE);
}
@ -421,6 +455,7 @@ void TPrecedenza::prec2rec(TRectype & rec) const
rec.put(PACKLIST_NDOC, _ndoc);
rec.put(PACKLIST_IDRIGA, _idriga);
rec.put(PACKLIST_NRIGADOC, _nrow);
rec.put(PACKLIST_DATADOC, app().doc().get(DOC_DATADOC));
}
void TPrecedenza::print_on(ostream& out) const
@ -439,29 +474,6 @@ int sort_prec(const TObject** o1, const TObject** o2)
return p1.prec() - p2.prec();
return strcmp(p1.codart(), p2.codart());
}
class TCrea_cartellini : public TSkeleton_application
{
TDocumento * _doc;
int _contnum;
private:
protected:
const TDocumento & doc() const { return *_doc;}
virtual void main_loop();
void crea_precedenze(ofstream & outfile, TArray & precs);
void crea_carrelli(TArray & precs);
void riempi_max(TArray & carrelli, TArray & precs);
void resto_max(TArray & carrelli, TArray & precs);
void riempi_normale(TArray & carrelli, TArray & precs, int level);
void riempi_resti(TArray & carrelli, TArray & precs);
public:
void ottimizza(const char * dir);
void stampa();
bool set_params();
bool set_params(const TMask & m);
};
void TCrea_cartellini::crea_precedenze(ofstream & outfile, TArray & precs)
{
@ -492,11 +504,11 @@ void TCrea_cartellini::crea_precedenze(ofstream & outfile, TArray & precs)
precs.add(new TPrecedenza(codart, anno, provv, codnum, ndoc, idriga, nrow, qta, pacchi, tipocf, codcf));
}
precs.sort();
precs.sort(sort_prec);
const int prec_nrows = precs.items();
outfile << "Precedenze\nPrecedenza;Articolo;Anno;;Numerazione;Numero;ID Riga;Numero riga;Quantità;Pacchi;Cliente";
for (int r = 1; r <= prec_nrows; r++)
outfile << "Precedenze\nPrecedenza;Articolo;Anno;;Numerazione;Numero;ID Riga;Numero riga;Quantità;Pacchi;Cliente\n";
for (int r = 0; r < prec_nrows; r++)
outfile << precs[r] << '\n';
}
@ -504,16 +516,20 @@ void TCrea_cartellini::riempi_max(TArray & carrelli, TArray & precs)
{
const int items = precs.items();
for(int r = 1; r <= items; r++)
for(int r = 0; r < items; r++)
{
TPrecedenza & p = (TPrecedenza &) precs[r];
const real max_qta = p.get_qta_max();
const real max_pacchi = p.get_pacchi_max();
if (max_pacchi <= ZERO)
break;
while (p.pacchi() > max_pacchi)
{
TCarrello * c = new TCarrello(p.key_carrello(carrelli.items() + 1));
c->destroy_rows();
carrelli.add(c);
TRectype & rec = c->row(c->rows() + 1, true);
@ -532,21 +548,39 @@ void TCrea_cartellini::resto_max(TArray & carrelli, TArray & precs)
{
const int items = precs.items();
for(int r = 1; r <= items; r++)
for(int r = 0; r < items; r++)
{
TPrecedenza &p = (TPrecedenza &) precs[r];
if (p.pacchi() > ZERO)
{
TCarrello * c = (TCarrello *)carrelli.objptr(carrelli.items());
TCarrello * c = NULL;
const real max_qta = p.get_qta_max();
const real max_pacchi = p.get_qta_max();
const real max_pacchi = p.get_pacchi_max();
const int ncarrelli = carrelli.items();
if (max_pacchi <= ZERO)
break;
real perc = p.pacchi() / max_pacchi;
perc.round(4);
if (c == NULL || c->perc() + perc > UNO)
for (int i = 0; i < ncarrelli; i++)
{
TCarrello * cc = (TCarrello *) carrelli.objptr(i);
real cperc = cc->perc();
if (UNO - cperc > perc)
{
c = (TCarrello *) carrelli.objptr(i);
break;
}
}
if (c == NULL)
{
c = new TCarrello(p.key_carrello(carrelli.items() + 1));
c->destroy_rows();
carrelli.add(c);
}
@ -566,32 +600,66 @@ void TCrea_cartellini::riempi_normale(TArray & carrelli, TArray & precs, int lev
{
const int items = precs.items();
for(int r = 1; r <= items; r++)
for(int r = 0; r < items; r++)
{
TPrecedenza & p = (TPrecedenza &) precs[r];
if (p.prec() <= level)
if (p.prec() <= level && p.pacchi() > ZERO)
{
int ncarrello = 0;
int ncarrelli = carrelli.items();
const real qta = p.get_qta_nor();
const real pacchi = p.get_pacchi_nor();
const real max_pacchi = p.get_pacchi_max();
real perc = p.pacchi() / max_pacchi;
if (pacchi <= ZERO || max_pacchi <= ZERO)
break;
real perc = pacchi / max_pacchi;
perc.round(4);
while (p.pacchi() > pacchi)
if (p.pacchi() >= pacchi)
{
TCarrello * c = new TCarrello(p.key_carrello(carrelli.items() + 1));
for (ncarrello = 0; ncarrello < ncarrelli; ncarrello++)
{
TCarrello * cc = (TCarrello *) carrelli.objptr(ncarrello);
real cperc = cc->perc();
if (UNO - cperc > perc)
break;
}
while (p.pacchi() > pacchi)
{
TCarrello * c = ncarrello < ncarrelli ? (TCarrello *) carrelli.objptr(ncarrello) : new TCarrello(p.key_carrello(ncarrello + 1));
ncarrello++;
c->destroy_rows();
carrelli.add(c);
TRectype & rec = c->row(c->rows() + 1, true);
p.prec2rec(rec);
rec.put(PACKLIST_QTA, qta);
rec.put(PACKLIST_CONF, pacchi);
c->perc() = perc;
p.qta() -= qta;
p.pacchi() -= pacchi;
}
TCarrello * c = ncarrello < ncarrelli ? (TCarrello *) carrelli.objptr(ncarrello) : new TCarrello(p.key_carrello(ncarrello + 1));
c->destroy_rows();
carrelli.add(c);
TRectype & rec = c->row(c->rows() + 1, true);
p.prec2rec(rec);
rec.put(PACKLIST_QTA, qta);
rec.put(PACKLIST_CONF, pacchi);
rec.put(PACKLIST_QTA, p.qta());
rec.put(PACKLIST_CONF, p.pacchi());
perc = p.pacchi() / max_pacchi;
c->perc() = perc;
p.qta() -= qta;
p.pacchi() -= pacchi;
p.qta() = ZERO;
p.pacchi() = ZERO;
}
}
}
@ -601,38 +669,57 @@ void TCrea_cartellini::riempi_resti(TArray & carrelli, TArray & precs)
{
const int items = precs.items();
for(int r = 1; r <= items; r++)
for(int r = 0; r < items; r++)
{
TPrecedenza &p = (TPrecedenza &) precs[r];
if (p.pacchi() > ZERO)
while (p.pacchi() > ZERO)
{
TCarrello * c = (TCarrello *) carrelli.objptr(carrelli.items());
const real max_qta = p.get_qta_max();
const real max_pacchi = p.get_qta_max();
const real max_pacchi = p.get_pacchi_max();
const int ncarrelli = carrelli.items();
real qta = p.qta();
real pacchi = p.pacchi();
real perc = pacchi / max_pacchi;
if (pacchi <= ZERO || max_pacchi <= ZERO)
break;
real perc = pacchi / max_pacchi;
TCarrello * c = NULL;
perc.round(4);
for (int i = 0; i < ncarrelli; i++)
{
TCarrello * cc = (TCarrello *) carrelli.objptr(i);
real cperc = cc->perc();
if (UNO - cperc > UNO / max_pacchi)
{
c = (TCarrello *) carrelli.objptr(i);
break;
}
}
if (c == NULL)
{
c = new TCarrello(p.key_carrello(carrelli.items() + 1));
c->destroy_rows();
carrelli.add(c);
}
if (c->perc() + perc > UNO)
if (UNO - c->perc() < perc)
{
real pppacco = cached_article(p.codart()).get(ANAMAG_PPCONF);
real perc = UNO - c->perc();
pacchi = perc * max_pacchi;
pacchi.floor();
perc = UNO - c->perc();
pacchi = perc * max_pacchi; pacchi.floor();
perc = pacchi / max_pacchi;
if (pppacco == 0)
pppacco = 1;
qta = pacchi * pppacco;
perc.round(4);
qta = pacchi;
real pppacco = cached_article(p.codart()).get(ANAMAG_PPCONF);
if (pppacco > 0)
qta *= pppacco;
}
TRectype & rec = c->row(c->rows() + 1, true);
p.prec2rec(rec);
@ -689,8 +776,15 @@ void TCrea_cartellini::crea_carrelli(TArray & precs)
void TCrea_cartellini::stampa()
{
TCartellini_report rep("pl1048100", _contnum);
TString key; key << _doc->get(DOC_TIPOCF) << _doc->get_long(DOC_CODCF);
const TString4 tpimballo = cache().get("&LV020", key, TPIMBALLO);
TFilename name("pl1048100"); name << tpimballo; name.ext("rep");
if (!name.custom_path())
name = "pl1048100";
TCartellini_report rep(name, _contnum);
TRecordset * pset = rep.recordset();
if (pset != NULL)
{
TTrec docs(LF_DOC);
@ -705,15 +799,20 @@ void TCrea_cartellini::stampa()
fieldname.insert("#");
pset->set_var(fieldname, var);
}
pset->set_var("#CONT", tpimballo);
}
TReport_book book;
TString key; key << _doc->get(DOC_TIPOCF) << _doc->get_long(DOC_CODCF);
pset->set_var("#CONT", cache().get("&LV020", key, TPIMBALLO));
for (int c = 1; c <= _contnum; c++)
{
pset->set_var("#KEY", format("%c%04d%-4s%-6ld%04d", _doc->get_char(DOC_PROVV), _doc->get_int(DOC_ANNO), (const char *)_doc->get(DOC_CODNUM), _doc->get_long(DOC_NDOC), c));
if (pset != NULL)
{
TString4 codnum(_doc->get(DOC_CODNUM)); codnum.left_just(4, '_');
pset->set_var("#KEY", format("%c%04d%-4s%06ld%04d", _doc->get_char(DOC_PROVV), _doc->get_int(DOC_ANNO), (const char *) codnum, _doc->get_long(DOC_NDOC), c));
}
book.add(rep);
}
@ -724,11 +823,13 @@ void TCrea_cartellini::ottimizza(const char * dir)
{
TString outname;
outname.format("%s/bo%s%06ld.xls", dir, doc().get(RDOC_CODNUM), doc().get_long(RDOC_NDOC));
outname.format("%s/bo%s%06ld.xls", dir, (const char *) doc().get(RDOC_CODNUM), doc().get_long(RDOC_NDOC));
TString_array prec_rows;
ofstream outfile(outname);
{
ofstream outfile(outname);
crea_precedenze(outfile, prec_rows);
crea_precedenze(outfile, prec_rows);
}
crea_carrelli(prec_rows);
}
@ -776,9 +877,10 @@ void TCrea_cartellini::main_loop() //definizione della member function main_loop
make_dir(outdir);
if (argc() <= 2)
{
TMask m("ps1048100a");
TMask m("pl1048100a");
m.set(F_CODNUM, ini_get_string(CONFIG_DITTA, "ve", "NUM_GEN"));
m.set(F_CODNUM, ini_get_string(CONFIG_DITTA, "lv", "NUM_GEN"));
m.first_focus(F_NDOC);
while (m.run() == K_ENTER && set_params(m))
{
@ -786,6 +888,7 @@ void TCrea_cartellini::main_loop() //definizione della member function main_loop
stampa();
delete _doc;
_doc = NULL;
m.first_focus(F_NDOC);
}
}
else

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="ve1300" name="pl1048100" orientation="2" lpi="6">
<report libraries="ve1300, pl1048100" name="PL1048100" lpi="6">
<description>Cartellini</description>
<font face="Courier New" size="10" />
<section type="Head" width="55" height="16" pattern="1">
<section type="Head" height="12" pattern="1">
<font face="Arial" size="10" />
<field y="5" type="Testo" width="8" height="2" pattern="1" text="DATA">
<field y="4.5" type="Testo" width="10" height="2" pattern="1" text="DATA">
<font face="Courier New" bold="1" size="20" />
</field>
<field x="10" y="5" type="Data" width="20" height="2" pattern="1">
<field x="11.5" y="4.5" type="Data" width="20" height="2" pattern="1">
<font face="Courier New" bold="1" size="20" />
<source>DATADOC</source>
<source>126.DATADOC</source>
</field>
<field y="10" type="Array" width="15" height="2" pattern="1">
<field y="7" type="Array" width="25" height="2" pattern="1">
<font face="Courier New" bold="1" size="20" />
<source>126.TIPOCONT</source>
<list>
@ -19,129 +19,78 @@
<li Value="SACCO" Code="S" />
</list>
</field>
<field x="21" y="10" type="Testo" width="4" height="2" pattern="1" text="DI">
<field x="36.5" y="7" type="Testo" width="5" height="2" pattern="1" text="DI">
<font face="Courier New" bold="1" size="20" />
</field>
<field border="1" y="15" type="Linea" width="55" height="0" pattern="1" />
<field x="17" y="10" type="Stringa" width="4" height="2" id="9" pattern="1">
<field border="1" y="11.5" type="Linea" width="87" height="0" pattern="1" />
<field x="30" y="7" type="Numero" align="right" width="5" height="2" id="9" pattern="1">
<font face="Courier New" bold="1" size="20" />
<prescript description="H0.9 PRESCRIPT">MESSAGE _CURRCONT</prescript>
</field>
<field x="26" y="10" type="Stringa" width="4" height="2" id="9" pattern="1">
<field x="42" y="7" type="Numero" align="right" width="5" height="2" id="9" pattern="1">
<font face="Courier New" bold="1" size="20" />
<prescript description="H0.9 PRESCRIPT">MESSAGE _CONTNUM</prescript>
</field>
<field x="39" y="6" type="Testo" width="8" id="11" pattern="1" text="DDT n.">
<font face="Courier New" bold="1" size="10" />
<field x="62" y="4.75" type="Testo" width="10" height="2" id="11" pattern="1" text="DDT n.">
<font face="Courier New" bold="1" size="14" />
</field>
<field x="48" y="6" type="Stringa" align="right" width="6.5" id="11" pattern="1">
<font face="Courier New" bold="1" size="10" />
<field x="72" y="4.75" type="Stringa" align="right" width="15" height="2" id="11" pattern="1">
<font face="Courier New" bold="1" size="14" />
<source>NDOC</source>
</field>
<field y="13" type="Testo" width="8" height="2" id="11" pattern="1" text="ART.">
<field y="9.5" type="Testo" width="16" height="2" id="11" pattern="1" text="ARTICOLO">
<font face="Courier New" size="14" />
</field>
<field x="15" y="13" type="Testo" width="25" height="2" id="11" pattern="1" text="DESCRIZIONE">
<field x="15" y="9.5" type="Testo" width="40" height="2" id="11" pattern="1" text="DESCRIZIONE">
<font face="Courier New" size="14" />
</field>
<field x="40" y="13" type="Testo" width="7" height="2" id="11" pattern="1" text="Q.TA">
<field x="57" y="9.5" type="Testo" align="right" width="15" height="2" id="11" pattern="1" text="Q.TA">
<font face="Courier New" size="14" />
</field>
<field x="47" y="13" type="Testo" width="9" height="2" id="11" pattern="1" text="PACCHI">
<field x="71.5" y="9.5" type="Testo" align="right" width="15" height="2" id="11" pattern="1" text="PACCHI">
<font face="Courier New" size="14" />
</field>
<field type="Stringa" align="center" width="55" height="2" id="20" pattern="1">
<field type="Stringa" align="center" width="87" height="2" id="20" pattern="1">
<font face="Courier New" bold="1" size="14" />
<prescript description="H0.20 PRESCRIPT">MESSAGE _DITTA,!RAGSOC</prescript>
</field>
<field y="2" type="Stringa" align="center" width="55" height="2" id="20" pattern="1">
<field y="2" type="Stringa" align="center" width="87" height="2" id="20" pattern="1">
<font face="Courier New" bold="1" size="20" />
<source>20.RICALT</source>
<prescript description="H0.20 PRESCRIPT">MESSAGE _CLIENTE,!RAGSOC</prescript>
</field>
</section>
<section type="Head" level="1" pattern="1" />
<section type="Body" width="55" pattern="1">
<field border="1" x="0.5" y="19.5" type="Linea" width="92" height="0" pattern="1" />
<field border="1" x="0.66" y="21.5" type="Linea" width="92" height="0" pattern="1" />
<field border="1" radius="100" x="0.25" y="24.5" type="Rettangolo" shade_offset="50" width="92.5" height="30" pattern="2" />
<field border="1" x="20.5" y="25" type="Linea" height="29" pattern="1" />
<field border="1" x="74" y="25" type="Linea" height="29" pattern="1" />
<field border="1" x="78" y="25" type="Linea" height="29" pattern="1" />
<field border="1" radius="100" x="0.25" y="55" type="Rettangolo" shade_offset="50" width="92.5" height="8.75" pattern="2" />
<field x="0.75" y="55" type="Testo" width="14.5" pattern="1" text="Trasporto a Mezzo">
<font italic="1" face="Arial" size="8" />
</field>
<field x="21.25" y="55" type="Testo" width="17.5" pattern="1" text="Aspetto Esteriore dei Beni">
<font italic="1" face="Arial" size="8" />
</field>
<field x="59.25" y="55" type="Testo" width="17" pattern="1" text="Causale del Trasporto">
<font italic="1" face="Arial" size="8" />
</field>
<field border="1" x="0.25" y="57.25" type="Linea" width="92" height="0" pattern="1" />
<field x="0.75" y="57.25" type="Testo" align="right" width="6.5" pattern="1" text="Colli">
<font italic="1" face="Arial" size="8" />
</field>
<field x="10" y="57.25" type="Testo" align="right" width="7" pattern="1" text="N.Palette">
<font italic="1" face="Arial" size="8" />
</field>
<field x="23" y="57.25" type="Testo" width="6.5" pattern="1" text="Peso Kg.">
<font italic="1" face="Arial" size="8" />
</field>
<field x="30" y="57.25" type="Testo" width="8.5" pattern="1" text="Porto">
<font italic="1" face="Arial" size="8" />
</field>
<field border="1" x="77.5" y="57.25" type="Linea" height="6.5" pattern="1" />
<field x="78.5" y="57.25" type="Testo" width="14" pattern="1" text="Firma Conducente">
<font italic="1" face="Arial" size="8" />
</field>
<field x="59.75" y="57.5" type="Testo" width="17" pattern="2" text="Data e Ora Inizio Trasporto">
<font italic="1" face="Arial" size="8" />
</field>
<field border="1" x="0.25" y="59.25" type="Linea" width="92" height="0" pattern="1" />
<field x="1" y="59.25" type="Testo" width="8" pattern="1" text="Annotazioni">
<font italic="1" face="Arial" size="8" />
</field>
<field x="78.5" y="59.25" type="Testo" width="14" pattern="1" text="Firma Destinatario">
<font italic="1" face="Arial" size="8" />
</field>
<field border="1" x="0.25" y="61.5" type="Linea" width="92" height="0" pattern="1" />
<field x="0.75" y="61.5" type="Testo" width="15.5" pattern="1" text="Incaricato del Trasporto">
<font italic="1" face="Arial" size="8" />
</field>
<field x="78.5" y="61.5" type="Testo" width="14" pattern="1" text="Firma Vettore">
<font italic="1" face="Arial" size="8" />
</field>
</section>
<section type="Body" level="1" width="55" height="2" can_break="1" pattern="1">
<section type="Body" width="55" pattern="1" />
<section type="Body" level="1" height="2" pattern="1">
<font face="Arial" size="10" />
<field type="Stringa" width="15" height="2" id="51" pattern="1">
<font face="Courier New" bold="1" size="20" />
<source>34.CODART</source>
<source>CODART</source>
</field>
<field x="15.5" type="Stringa" bg_color="#D4D4D4" width="25" height="2" id="52" pattern="1">
<field x="15" type="Stringa" bg_color="#D4D4D4" width="42" height="2" id="52" pattern="1">
<font face="Courier New" size="10" />
<prescript description="B1.52 PRESCRIPT">MESSAGE _DESCRIGA</prescript>
<source>47.DESCR</source>
</field>
<field x="40" type="Numero" align="right" bg_color="#00FFFF" width="7" height="2" id="54" pattern="1" hide_zero="1" text="#.###,@@">
<field x="57" type="Numero" align="right" bg_color="#00FFFF" width="15" height="2" id="54" pattern="1" hide_zero="1" text="###.###">
<font face="Courier New" bold="1" size="20" />
<groups>30</groups>
<source>QTA</source>
<source>126.QTA</source>
</field>
<field x="48" type="Numero" align="right" bg_color="#00FFFF" width="7" height="2" id="55" pattern="1" hide_zero="1" text="#.###,@@">
<field x="72" type="Numero" align="right" bg_color="#00FFFF" width="15" height="2" id="55" pattern="1" hide_zero="1" text="###.###">
<font face="Courier New" bold="1" size="20" />
<source>PACCHI</source>
<source>126.CONF</source>
</field>
</section>
<section y="46" hidden_if_needed="1" type="Foot" width="55" height="2" pattern="1">
<section y="31" hidden_if_needed="1" type="Foot" height="3" pattern="1">
<font face="Arial" size="10" />
<field x="21" type="Testo" width="34" height="2" id="100" pattern="1" text="&#3E;&#3E;&#3E; SEGUE &#3E;&#3E;&#3E;">
<field x="55" type="Testo" width="30" height="2" id="100" pattern="1" text="&#3E;&#3E;&#3E; SEGUE &#3E;&#3E;&#3E;">
<font italic="1" face="Courier New" bold="1" size="20" />
</field>
</section>
<section y="46" type="Foot" level="1" width="55" height="2" pattern="1" />
<section y="31" type="Foot" level="1" height="3" pattern="1" />
<sql>USE 126
JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 47 INTO CODART==CODART
FROM TIPOCONT=#CONT CODICE=#KEY
TO TIPOCONT=#CONT CODICE=#KEY</sql>
</report>

View File

@ -2,8 +2,9 @@
#define F_ANNO 102
#define F_PROVV 103
#define F_NDOC 104
#define F_TIPOCF 107
#define F_CODCF 108
#define F_TIPODOC 172
#define F_CODDITTA 109
#define F_RAGSOCDITTA 110
#define F_DESNUM 173
#define F_DESTIPODOC 176

View File

@ -1,8 +1,8 @@
#include "veuml.h"
#include "pl1048100a.h"
TOOLBAR "Toolbar" 0 0 0 2
#include <relapbar.h>
#include <stdbar.h>
ENDPAGE
@ -86,7 +86,7 @@ NUMBER F_NDOC 6
BEGIN
PROMPT 24 7 "Numero "
FIELD NDOC
USE LF_DOC SELECT (#F_STATO=="")||(STATO==#F_STATO)
USE LF_DOC
JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF
INPUT PROVV F_PROVV SELECT
INPUT ANNO F_ANNO SELECT
@ -103,25 +103,17 @@ BEGIN
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
OUTPUT F_NDOC NDOC
OUTPUT F_TIPODOC TIPODOC
OUTPUT F_PROVV PROVV
CHECKTYPE REQUIRED
FLAG "R"
END
LIST F_TIPOCF 1 12
BEGIN
PROMPT 2 8 "Tipo "
ITEM "C|Cliente"
ITEM "F|Fornitore"
END
NUMBER F_CODCF 6
BEGIN
PROMPT 24 8 "Codice "
USE LF_DOC KEY 2 SELECT (CODNUM==#F_CODNUM) && (PROVV==#F_PROVV) && (ANNO==#F_ANNO) && ((#F_STATO=="")||(STATO==#F_STATO))
USE LF_DOC KEY 2 SELECT (CODNUM==#F_CODNUM)&&(PROVV==#F_PROVV)&&(ANNO==#F_ANNO)
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
INPUT TIPOCF F_TIPOCF SELECT
INPUT TIPOCF "C"
INPUT CODCF F_CODCF
INPUT PROVV F_PROVV
INPUT ANNO F_ANNO
@ -140,7 +132,7 @@ BEGIN
DISPLAY "Stato" STATO
COPY OUTPUT F_NDOC
OUTPUT F_CODCF CODCF
CHECKTYPE NORMAL
CHECKTYPE SEARCH
END
ENDPAGE