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:
parent
4a30114a85
commit
cb754c78ca
16
ps/pl1048100.alx
Executable file
16
ps/pl1048100.alx
Executable 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
|
||||
;
|
||||
|
253
ps/pl1048100.cpp
253
ps/pl1048100.cpp
@ -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
|
||||
|
117
ps/pl1048100.rep
117
ps/pl1048100.rep
@ -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="E;E;E; SEGUE E;E;E;">
|
||||
<field x="55" type="Testo" width="30" height="2" id="100" pattern="1" text="E;E;E; SEGUE E;E;E;">
|
||||
<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>
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user