Nuova preventivazione avanzata

git-svn-id: svn://10.65.10.50/branches/R_10_00@22908 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2013-12-13 09:42:36 +00:00
parent 572327d74c
commit 99d53e8ffc
9 changed files with 867 additions and 626 deletions

View File

@ -1,6 +1,6 @@
#include <xinclude.h>
#include <automask.h>
#include <colors.h>
#include <controls.h>
#include <execp.h>
#include <printer.h>
#include <relapp.h>
@ -16,6 +16,7 @@
#include "../db/rdist.h"
#include "../mg/anamag.h"
#include "../ca/commesse.h"
static real ricarico2perc(const TString& exp)
{
@ -108,7 +109,7 @@ class TPreventivo_app : public TRelation_application
TString8 _codelab;
protected:
int save_rows(const TMask& m, bool re);
int save_rows(const TMask& m);
virtual const char* extra_modules() const { return "ci"; }
bool save_and_print(TPrtype mode);
@ -228,7 +229,7 @@ class TPreventivo_msk : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
virtual TMask_field* TPreventivo_msk::parse_field(TScanner& s);
virtual TMask_field* parse_field(TScanner& s);
public:
int revision_length() const;
@ -241,10 +242,7 @@ public:
TMask_field* TPreventivo_msk::parse_field(TScanner& s)
{
if (s.key() == "TL")
{
XI_OBJ* itf = xi_get_itf((XinWindow)page_win(1));
xi_set_app_data2(itf, 0x1); // Full screen
}
set_full_screen_interface(page_win(1), true);
return TAutomask::parse_field(s);
}
@ -353,7 +351,21 @@ bool TPreventivo_msk::on_field_event(TOperable_field& o, TField_event e, long jo
reset(F_NPREV);
}
break;
default: break;
default:
if ((e == fe_modify || e == fe_close) && (!o.empty() && o.is_edit()))
{
const TFieldref* fr = o.field();
if (fr != NULL && fr->name() == RDOC_CODCMS)
{
TRelation rel(LF_RIGHEDOC);
o.mask().autosave(rel);
const TString& cms = rel.curr().get(RDOC_CODCMS);
const TRectype& rec = cache().get(LF_COMMESSE, cms);
if (rec.get_bool(COMMESSE_CHIUSA))
return error_box(FR("Impossibile utilizzare la commesa chiusa %s"), (const char*)cms);
}
}
break;
}
return true;
}
@ -402,7 +414,7 @@ private:
bool on_misu_event(TOperable_field& o, TField_event e, long jolly);
bool on_dist_event(TOperable_field& o, TField_event e, long jolly);
real get_costo(const TString& codart) const;
real get_costo(const TString& codart, TString& um, TString& iva) const;
protected:
virtual bool on_key(KEY k);
@ -439,6 +451,42 @@ TPreventivo_tree& TPreventivo_emsk::tree(bool reset)
return *_tree;
}
static bool set_and_check(TMask_field& f, const TRectype& rec)
{
const TFieldref* fr = f.field();
if (fr == NULL)
{
if (f.ghost())
return f.on_hit();
return false;
}
if (fr->name() == RDOC_DESCR)
{
TString descr(255);
descr = rec.get(RDOC_DESCR);
if (rec.get_bool(RDOC_DESCLUNGA))
descr << rec.get(RDOC_DESCEST);
f.set(descr);
}
else
{
f.set(fr->read(rec));
if (!f.empty() && f.is_edit() && f.shown())
{
const TBrowse* b = ((TEdit_field&)f).browse();
if (b != NULL)
{
const TFixed_string of = b->get_output_fields();
if (of.find('|') > 0) // C'è un pipe nell'output, per cui ci sono almeno due campi di output
f.check(STARTING_CHECK);
}
}
}
return true;
}
// Riempie gli sheet di articoli e misure della distinta selezionata
bool TPreventivo_emsk::set_dist(const TString& idd)
{
@ -471,14 +519,7 @@ bool TPreventivo_emsk::set_dist(const TString& idd)
TSheet_field& s = rec.get(RDOC_TIPORIGA) == t.tipo_dett() ? a : m;
TMask& m = s.sheet_row_mask(n);
FOR_EACH_MASK_FIELD(m, i, f)
{
const TFieldref* fr = f->field();
if (fr != NULL)
{
f->set(fr->read(rec));
f->check(STARTING_CHECK);
}
}
set_and_check(*f, rec);
s.update_row(n++);
}
_locked = false;
@ -537,14 +578,7 @@ bool TPreventivo_emsk::set_fase(const TString& idfase)
const TRectype& rec = *t.curr_row();
TMask& m = d.sheet_row_mask(n);
FOR_EACH_MASK_FIELD(m, i, f)
{
const TFieldref* fr = f->field();
if (fr != NULL)
{
f->set(fr->read(rec));
f->check(STARTING_CHECK);
}
}
set_and_check(*f, rec);
d.update_row(n++);
} while (t.goto_rbrother());
}
@ -561,6 +595,27 @@ bool TPreventivo_emsk::msk2rec(const TMask& msk, TRectype& rec) const
rel.curr() = rec;
msk.autosave(rel);
rec = rel.curr();
const TString& desc = msk.get(RDOC_DESCR);
const int maxlen = rec.length(RDOC_DESCR);
int spc = desc.find('\n');
if (spc >= 0 || desc.len() > maxlen)
{
if (spc < 0 || spc > maxlen)
{
spc = desc.left(maxlen).rfind(' ');
if (spc < maxlen/2)
spc = maxlen;
}
rec.put(RDOC_DESCR, desc.left(spc));
rec.put(RDOC_DESCLUNGA, "X");
rec.put(RDOC_DESCEST, desc.mid(spc));
}
else
{
rec.put(RDOC_DESCR, desc);
rec.zero(RDOC_DESCLUNGA);
rec.put(RDOC_DESCEST, "");
}
return !rec.empty();
}
@ -819,15 +874,15 @@ bool TPreventivo_emsk::on_dist_event(TOperable_field& o, TField_event e, long jo
case se_notify_modify:
if (_edit_dist >= 0)
{
TPreventivo_tree& t = tree();
TRectype* rec = t.dist(_idfase, _edit_dist, true);
const int r = _edit_dist; // Memorizza numero riga corrente
_edit_dist = -1; // Annulla numero riga corrente
TRectype* rec = tree().dist(_idfase, r, true);
if (rec != NULL)
{
const TMask& m = ((TSheet_field&)o).sheet_row_mask(_edit_dist);
const TMask& m = ((TSheet_field&)o).sheet_row_mask(r);
msk2rec(m, *rec);
sync_tree();
}
_edit_dist = -1;
}
break;
case se_notify_del:
@ -850,7 +905,7 @@ bool TPreventivo_emsk::on_dist_event(TOperable_field& o, TField_event e, long jo
return true;
}
real TPreventivo_emsk::get_costo(const TString& codart) const
real TPreventivo_emsk::get_costo(const TString& codart, TString& um, TString& iva) const
{
real costo = ZERO;
const int tc = get_int(F_TIPOCOSTO);
@ -868,6 +923,10 @@ real TPreventivo_emsk::get_costo(const TString& codart) const
}
if (costo.is_zero())
costo = art.get_real(ANAMAG_COSTSTD);
um = art.um().row(1).get(UMART_UM);
iva = art.get(ANAMAG_CODIVA);
return costo;
}
@ -879,10 +938,15 @@ bool TPreventivo_emsk::on_dett_event(TOperable_field& o, TField_event e, long jo
if (e == fe_modify && !o.empty() && !_locked)
{
const TString& codart = o.get();
const TArticolo_giacenza& art = cached_article_balances(codart);
const real costo = get_costo(o.get());
o.mask().set(105, costo, 0x3);
o.mask().set(104, art.first_um());
TString4 um, iva;
const real costo = get_costo(codart, um, iva);
TMask& m = o.mask();
if (um.full())
m.set(S_UMART, um, 0x3);
if (iva.full() && m.get(S_CODIVA).blank())
m.set(S_CODIVA, iva, 0x3);
if (!costo.is_zero())
m.set(S_COSTO, costo, 0x3);
}
break;
case F_ARTICOLI:
@ -909,16 +973,17 @@ bool TPreventivo_emsk::on_dett_event(TOperable_field& o, TField_event e, long jo
case se_notify_modify:
if (_edit_dett >= 0)
{
const int r = _edit_dett;
_edit_dett = -1;
TPreventivo_tree& t = tree();
TRectype* rec = t.dett(_iddist, _edit_dett, true);
TRectype* rec = t.dett(_iddist, r, true);
if (rec != NULL)
{
const TMask& m = ((TSheet_field&)o).sheet_row_mask(_edit_dett);
const TMask& m = ((TSheet_field&)o).sheet_row_mask(r);
msk2rec(m, *rec);
sync_tree();
update_dist_costo();
}
_edit_dett = -1;
}
break;
case se_notify_del:
@ -1137,7 +1202,19 @@ bool TPreventivo_emsk::on_field_event(TOperable_field& o, TField_event e, long j
case DLG_ELABORA:
if (e == fe_button)
{
const TString& cod = pe_trova_elaborazione(*this);
const TString& cod = pe_trova_elaborazione(*this, 'O');
if (cod.full())
{
TPreventivo_app& relapp = (TPreventivo_app&)main_app();
if (relapp.set_elab_code(cod))
stop_run(K_SAVE);
}
}
break;
case DLG_ARCHIVE:
if (e == fe_button)
{
const TString& cod = pe_trova_elaborazione(*this, 'F');
if (cod.full())
{
TPreventivo_app& relapp = (TPreventivo_app&)main_app();
@ -1210,6 +1287,8 @@ TPreventivo_emsk::TPreventivo_emsk() : TPreventivo_msk("pe1400b"), _tree(NULL),
bool TPreventivo_app::user_create()
{
open_files(LF_TAB, LF_TABCOM, LF_CLIFO,
LF_DOC, LF_RIGHEDOC, LF_COMMESSE, LF_FASI, 0);
_rel = new TRelation(LF_DOC);
_qmsk = new TPreventivo_qmsk;
_emsk = new TPreventivo_emsk;
@ -1310,20 +1389,43 @@ static bool tree_save_row(TTree& tree, void* jolly, word /*flags*/)
const TRectype* rec = t.curr_row();
if (rec && !rec->empty() && rec->num() == LF_RIGHEDOC)
{
const TString& descr = rec->get(RDOC_DESCR);
const real costo = rec->get(RPRV_COSTO);
const real price = rec->get(RDOC_PREZZO);
const TString& descr = rec->get(RDOC_DESCR);
if (descr.full() || !costo.is_zero() || !price.is_zero())
{
TRecord_array& righe = *(TRecord_array*)jolly;
TRectype& row = righe.row(-1, true);
TDocumento& doc = *(TDocumento*)jolly;
const TString4 tiporiga = rec->get(RDOC_TIPORIGA);
TRectype& row = doc.new_row(tiporiga);
const TString80 codart = rec->get(RDOC_CODART);
TString80 codartmag;
if (codart.full())
codartmag = cache().get(LF_ANAMAG, codart, ANAMAG_CODART);
for (int f = rec->items()-1; f > 5; f--)
{
const char* fld = rec->fieldname(f);
if (rec->type(fld) == _memofld)
break;
const TString& src = rec->get(fld);
if (src.full())
{
const TString& dst = row.get(fld);
if (dst.blank())
row.put(fld, src);
}
}
row.put(RDOC_IDRIGA, row.get(RDOC_NRIGA));
row.put(RDOC_TIPORIGA, rec->get(RDOC_TIPORIGA));
row.put(RDOC_QTA, rec->get(RDOC_QTA));
row.put(RDOC_DESCR, rec->get(RDOC_DESCR));
row.put(RDOC_DESCLUNGA, rec->get(RDOC_DESCLUNGA));
row.put(RDOC_DESCEST, rec->get(RDOC_DESCEST));
row.put(RDOC_CODART, rec->get(RDOC_CODART));
row.put(RDOC_CODART, codart);
row.put(RDOC_CODARTMAG, codartmag);
row.put(RDOC_CHECKED, codartmag.full());
row.put(RDOC_UMQTA, rec->get(RDOC_UMQTA));
row.put(RDOC_QTAGG1, rec->get(RDOC_QTAGG1));
row.put(RDOC_QTAGG2, rec->get(RDOC_QTAGG2));
@ -1343,17 +1445,39 @@ static bool tree_save_row(TTree& tree, void* jolly, word /*flags*/)
return false; // Don't stop scan
}
int TPreventivo_app::save_rows(const TMask& m, bool re)
int TPreventivo_app::save_rows(const TMask& m)
{
TPreventivo_tree& tree = ((TPreventivo_emsk&)m).tree();
TRectype* rkey = tree.new_row(pl_fase1);
TRecord_array rdoc(LF_RIGHEDOC, RDOC_NRIGA);
rdoc.set_key(rkey);
TDocumento doc(get_relation()->curr());
doc.destroy_rows();
if (tree.goto_root() && tree.goto_firstson())
tree.scan_depth_first(tree_save_row, &rdoc);
int err = rdoc.write(re);
tree.scan_depth_first(tree_save_row, &doc);
// Estrae campi analitica da maschera principale e li riporta sulle righe
TString cms, fas, cos;
FOR_EACH_MASK_FIELD(m, i, f) if (f->active() && f->is_edit() && f->dlg() >= F_CDC0)
{
const TFieldref* fref = f->field();
if (fref != NULL)
{
if (fref->name() == DOC_CODCMS)
cms << f->get();
if (fref->name() == DOC_FASCMS)
fas << f->get();
if (fref->name() == DOC_CODCOSTO)
cos << f->get();
}
}
TRecord_array& rdoc = doc.body();
rdoc.renum_key(RDOC_CODCMS, cms);
rdoc.renum_key(RDOC_FASCMS, fas);
rdoc.renum_key(RDOC_CODCOSTO, cos);
const int err = doc.rewrite(get_relation()->file());
if (err == NOERR && _codelab.full())
pe_genera_ordine(get_relation()->curr(), _codelab);
pe_genera_documento(doc, _codelab, 'O');
_codelab.cut(0); // Azzera in ogni caso l'elaborazione
return err;
@ -1363,7 +1487,7 @@ int TPreventivo_app::write(const TMask& m)
{
int err = TRelation_application::write(m);
if (err == NOERR)
err = save_rows(m, false);
err = save_rows(m);
return err;
}
@ -1371,7 +1495,7 @@ int TPreventivo_app::rewrite(const TMask& m)
{
int err = TRelation_application::rewrite(m);
if (err == NOERR)
err = save_rows(m, true);
err = save_rows(m);
return err;
}
@ -1395,7 +1519,8 @@ bool TPreventivo_app::remove()
void TPreventivo_app::update_tools(TMask& m)
{
const bool is_edit = m.edit_mode();
const bool can_elab = is_edit && pe_trova_elaborazione(m).full();
const bool can_ord = is_edit && pe_trova_elaborazione(m, 'O').full();
const bool can_fab = is_edit && pe_trova_elaborazione(m, 'F').full();
bool can_print = is_edit;
if (can_print)
{
@ -1406,7 +1531,8 @@ void TPreventivo_app::update_tools(TMask& m)
m.enable(DLG_COPY, is_edit);
m.enable(DLG_NEWREC, is_edit);
m.enable(DLG_ELABORA, can_elab);
m.enable(DLG_ELABORA, can_ord);
m.enable(DLG_ARCHIVE, can_fab);
m.enable(DLG_PRINT, can_print);
m.enable(DLG_PREVIEW, can_print);
m.disable(F_STATO); // Enable with F12
@ -1442,16 +1568,23 @@ bool TPreventivo_app::save_and_print(TPrtype mode)
<< _emsk->get(F_ANNO) << " D " << _emsk->get(F_NDOC);
switch (mode)
{
case exportprinter: commandline << " E"; break;
case fileprinter : commandline << " P"; break;
case screenvis : commandline << " A"; break;
default : commandline << " S"; break;
case exportprinter: commandline << " E P"; break;
case fileprinter : commandline << " P P"; break;
case screenvis : commandline << " A P"; break;
default : commandline << " S D"; break;
}
commandline << " P";
TExternal_app interattivo( commandline );
if (interattivo.run() == NOERR)
{
TLocalisamfile& f = _rel->file();
f.zero();
f.put(DOC_PROVV, 'D');
f.put(DOC_ANNO, _emsk->get(F_ANNO));
f.put(DOC_CODNUM, _emsk->get(F_CODNUM));
f.put(DOC_NDOC, _emsk->get(F_NDOC));
f.read();
curr_mask().set(F_STATO, f.get(DOC_STATO));
}
already_printing = false;
return true;

View File

@ -38,6 +38,9 @@
#define F_CDC0 250
#define F_CLIPOT 320
#define F_RAGPOT 321
#define F_FASI 400
#define F_DISTINTE 401
#define F_ARTICOLI 402
@ -45,6 +48,10 @@
#define S_CODART 101
#define S_DESCR 102
#define S_UMART 103
#define S_COSTO 105
#define S_PREZZO 106
#define S_CODIVA 107
#define RPRV_COSTO "QTAGG5"
#define RPRV_LEVEL "PRIORITY"

View File

@ -1,346 +1,238 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="ve1300" name="pe1400" lpi="6">
<report libraries="ve1300" name="PE1400" lpi="6">
<description>preventivo standard</description>
<font face="Courier New" size="10" />
<section type="Head" height="28" pattern="1">
<section type="Head" height="6" pattern="1">
<font face="Arial" size="10" />
<field x="90.5" y="19" type="Stringa" width="2" id="9" pattern="1">
<prescript description="H0.9 PRESCRIPT">MESSAGE _PAGENO</prescript>
<field x="0.5" type="Immagine" width="17.5" height="3.75" pattern="1">
<source>"ruffoa.jpg"</source>
</field>
<field x="77" y="19" type="Data" width="10" id="10" pattern="1">
<field x="52.5" y="1.55" type="Stringa" align="right" width="40" id="20" pattern="1">
<prescript description="H0.20 PRESCRIPT">MESSAGE _CLIENTE,!RAGSOC</prescript>
</field>
</section>
<section type="Head" level="1" height="70" pattern="1">
<field x="0.5" type="Immagine" width="45.5" height="9.5" pattern="1">
<source>"ruffoa.jpg"</source>
</field>
<field x="0.5" y="10" type="Testo" width="27" height="1.25" pattern="1" text="COSTRUZIONI RUFFO S.r.l.">
<font face="Arial" bold="1" size="10" />
</field>
<field x="0.5" y="11.18" type="Testo" width="35" pattern="1" text="Viale dell'Artigianato, 66">
<font face="Arial" size="10" />
</field>
<field x="0.5" y="12" type="Testo" width="42" pattern="1" text="37042 - CALDIERO - (VR) - C.F. e P.Iva 03138740232">
<font face="Arial" size="10" />
</field>
<field x="0.5" y="13" type="Testo" width="46" pattern="1" text="Tel. 045&#2F;7652265 - Fax 045&#2F;6170180">
<font face="Arial" size="10" />
</field>
<field x="0.5" y="14" type="Testo" width="44" pattern="1" text="E-Mail: info@costruzioniruffo.it - www.costruzioniruffo.it">
<font face="Arial" size="10" />
</field>
<field x="0.5" y="15" type="Testo" width="46" pattern="1" text="Iscritta Reg. Impr.VR n. 03138740232 - R.E.A. n.VR-312003">
<font face="Arial" size="10" />
</field>
<field x="48.5" y="26.25" type="Testo" width="4.5" pattern="1" text="P.iva:" />
<field x="71" y="26.25" type="Testo" width="4.5" pattern="1" text="C.F.:" />
<field x="48.5" y="27.5" type="Testo" width="7" pattern="1" text="Alla c.a.: " />
<field x="0.5" y="35.75" type="Stringa" valign="center" align="center" dynamic_height="1" width="92" height="3" pattern="1">
<font italic="1" face="Arial" bold="1" size="20" />
<source>33.NOTE</source>
</field>
<field x="16.5" y="58.5" type="Testo" width="3" pattern="1" text="rev.">
<font face="Arial" bold="1" size="10" />
</field>
<field x="1" y="59.75" type="Testo" width="4" pattern="1" text="Data">
<font face="Arial" bold="1" size="10" />
</field>
<field x="1" y="60.75" type="Testo" valign="center" width="13" height="1.25" pattern="1" text="Responsabile:">
<source>33.NOTE</source>
</field>
<field x="17" y="61" type="Stringa" width="27" pattern="1">
<prescript description="H1.0 PRESCRIPT">MESSAGE ISAMREAD,122,CODAGE=#10,RAGSOC</prescript>
</field>
<field x="12.5" y="58.5" type="Stringa" width="3.5" id="7" pattern="1">
<font face="Arial" bold="1" size="10" />
<source>33.NDOC[1,1]</source>
</field>
<field x="19.5" y="58.5" type="Stringa" align="right" width="2" id="8" pattern="1">
<font face="Arial" bold="1" size="10" />
<source>33.NDOC[2,3]</source>
</field>
<field x="5" y="59.75" type="Data" width="10" id="9" pattern="1">
<font face="Arial" bold="1" size="10" />
<source>33.DATADOC</source>
</field>
<field x="67.5" y="19" type="Stringa" align="right" width="6.5" id="11" pattern="1">
<field x="11.5" y="61" type="Stringa" width="5" id="10" pattern="1">
<source>33.CODAG</source>
</field>
<field x="75.5" y="26.25" type="Stringa" width="16" id="12" pattern="1">
<prescript>MESSAGE _CLIENTE,COFI</prescript>
</field>
<field x="55.5" y="26.25" type="Stringa" width="14" id="16" pattern="1">
<prescript>MESSAGE _CLIENTE,PAIV</prescript>
</field>
<field x="48.5" y="20" type="Stringa" width="44" height="2" id="20" pattern="1">
<font face="Arial" bold="1" size="10" />
<source>33.NDOC</source>
<prescript>MESSAGE _CLIENTE,!RAGSOC</prescript>
</field>
<field x="43" y="19" type="Stringa" width="16" id="12" pattern="1">
<prescript description="H0.12 PRESCRIPT">MESSAGE _CLIENTE,COFI</prescript>
<field x="48.5" y="22" type="Stringa" width="44" id="21" pattern="1">
<prescript>MESSAGE _CLIENTE,!INDNUM</prescript>
</field>
<field x="59" y="19" type="Stringa" width="5" id="14" pattern="1">
<source>IF(33.CODVAL='','EURO',33.CODVAL)</source>
<field x="48.5" y="23" type="Stringa" width="44" id="22" pattern="1">
<prescript>MESSAGE _CLIENTE,LOCALITACF</prescript>
</field>
<field x="18" y="19" type="Stringa" align="right" width="6" id="15" pattern="1">
<source>33.CODCF</source>
<field x="48.5" y="24" type="Stringa" width="5" id="23" pattern="1">
<prescript>MESSAGE _CLIENTE,!CAP</prescript>
</field>
<field x="28" y="19" type="Stringa" width="14" id="16" pattern="1">
<prescript description="H0.16 PRESCRIPT">MESSAGE _CLIENTE,PAIV</prescript>
</field>
<field x="1" y="21.5" type="Stringa" width="41" id="17" pattern="1">
<source>201@.S0</source>
</field>
<field x="43" y="20.5" deactivated="1" type="Stringa" width="23" id="18" pattern="1">
<source>208@.S0</source>
</field>
<field x="50.5" y="27" deactivated="1" type="Stringa" width="45" id="18" pattern="1">
<source>208@.S0</source>
</field>
<field x="43" y="21.5" type="Stringa" width="51" id="19" pattern="1">
<groups>71</groups>
<source>204@.S0</source>
</field>
<field x="49" y="10.5" type="Stringa" width="59" height="2" id="20" pattern="1">
<font face="Arial" bold="1" size="10" />
<prescript description="H0.20 PRESCRIPT">MESSAGE _CLIENTE,!RAGSOC</prescript>
</field>
<field x="49" y="12.5" type="Stringa" width="44" id="21" pattern="1">
<prescript description="H0.21 PRESCRIPT">MESSAGE _CLIENTE,!INDNUM</prescript>
</field>
<field x="49" y="13.5" type="Stringa" width="44" id="22" pattern="1">
<prescript description="H0.22 PRESCRIPT">MESSAGE _CLIENTE,LOCALITACF</prescript>
</field>
<field x="49" y="14.5" type="Stringa" width="5" id="23" pattern="1">
<prescript description="H0.23 PRESCRIPT">MESSAGE _CLIENTE,!CAP</prescript>
</field>
<field x="55" y="14.5" type="Stringa" hidden="1" width="30" height="2" id="24" pattern="1">
<prescript description="H0.24 PRESCRIPT">MESSAGE _CLIENTE,!COM-&#3E;DENCOM
<field x="54" y="24" type="Stringa" hidden="1" width="30" height="2" id="24" pattern="1">
<prescript>MESSAGE _CLIENTE,!COM-&#3E;DENCOM
MESSAGE COPY,26</prescript>
</field>
<field x="55" y="14.5" type="Stringa" hidden="1" width="2" id="25" pattern="1">
<prescript description="H0.25 PRESCRIPT">MESSAGE _CLIENTE,!COM-&#3E;PROVCOM
<field x="85" y="24" type="Stringa" hidden="1" width="2" id="25" pattern="1">
<prescript>MESSAGE _CLIENTE,!COM-&#3E;PROVCOM
MESSAGE APPEND,26</prescript>
</field>
<field x="55" y="14.5" type="Stringa" width="38" height="2" id="26" pattern="1" />
<field x="43" y="27" type="Stringa" hidden="1" width="3" id="27" pattern="1">
<prescript description="H0.27 PRESCRIPT">MESSAGE _CLIENTE,STATOCF</prescript>
<field x="54" y="24" type="Stringa" width="38" height="2" id="26" pattern="1" />
<field x="48.5" y="25" type="Stringa" width="25" id="28" pattern="1">
<prescript>MESSAGE _TABLEREAD,%STA,#27,S0</prescript>
</field>
<field x="49" y="15.5" type="Stringa" width="25" id="28" pattern="1">
<prescript description="H0.28 PRESCRIPT">MESSAGE _TABLEREAD,%STA,#27,S0</prescript>
<field x="55.5" y="27.5" type="Stringa" width="36.5" id="29" pattern="1">
<source>20.REFERENTE</source>
</field>
<field x="1" y="19" type="Stringa" width="16" id="31" pattern="1">
<field x="1" y="58.5" type="Testo" width="11.5" id="31" pattern="1" text="Preventivo n&#B0; ">
<font face="Arial" bold="1" size="10" />
<source>210@.S0</source>
</field>
<field x="25.5" y="19" type="Stringa" width="2" id="33" pattern="1">
<prescript description="H0.33 PRESCRIPT">MESSAGE _CLIENTE,STATOPAIV</prescript>
<field x="53" y="26.25" type="Stringa" width="2" id="33" pattern="1">
<prescript>MESSAGE _CLIENTE,STATOPAIV</prescript>
</field>
<field x="22.25" y="24.5" type="Stringa" width="70" id="36" pattern="1">
<source>212@.S0</source>
<field x="48.5" y="20" type="Stringa" width="42.5" height="2" id="40" pattern="1">
<font face="Arial" bold="1" size="10" />
<source>18.RAGSOC</source>
</field>
<field x="1" y="26.5" deactivated="1" type="Stringa" width="27" id="36" pattern="1">
<source>210@.S0</source>
<field x="48.5" y="22" type="Stringa" width="42.5" id="41" pattern="1" />
<field x="48.5" y="23" type="Stringa" width="42.5" id="43" pattern="1">
<source>18.LOCALITA</source>
</field>
<field x="21" y="20.5" deactivated="1" type="Stringa" width="21" id="37" pattern="1">
<source>211@.S0</source>
<field x="48.5" y="24" type="Stringa" width="5" id="44" pattern="1">
<source>18.CAP</source>
</field>
<field x="47.25" y="22.5" type="Stringa" width="34" id="62" pattern="1" text="## ## # ##### ##### ############">
<groups>70</groups>
<source>213@.S3</source>
<field x="54" y="24" type="Stringa" width="33.5" id="45" pattern="1" />
<field x="61.5" y="25" type="Stringa" hidden="1" width="4" height="2" id="46" pattern="1">
<source>13.DENCOM</source>
<prescript description="H1.46 PRESCRIPT">MESSAGE COPY,45</prescript>
</field>
<field x="43" y="22.5" type="Testo" width="4.5" id="63" pattern="1" text="Iban:">
<font italic="1" face="Arial" size="8" />
<groups>70</groups>
<field x="54.5" y="25" type="Stringa" hidden="1" width="2" id="47" pattern="1">
<source>13.PROVCOM</source>
<prescript description="H1.47 PRESCRIPT">MESSAGE APPEND,45</prescript>
</field>
<field x="59" y="22.5" type="Numero" align="right" width="6.5" id="64" pattern="1" hide_zero="1" text="@@@@@">
<groups>71</groups>
<source>33.CODCABA</source>
<field x="55.5" y="27.5" type="Stringa" width="36.5" id="48" pattern="1">
<source>18.REFERENTE</source>
</field>
<field x="47.25" y="22.5" type="Numero" align="right" width="6.5" id="65" pattern="1" hide_zero="1" text="@@@@@">
<groups>71</groups>
<source>33.CODABIA</source>
<field x="63" y="27.25" type="Stringa" hidden="1" width="3.5" id="50" pattern="1">
<source>18.INDIR</source>
<prescript description="H1.50 PRESCRIPT">MESSAGE COPY,41</prescript>
</field>
<field x="1.25" y="24.5" type="Stringa" width="20.5" id="65" pattern="1">
<source>33.CODCMS</source>
</field>
<field x="71" y="22.5" type="Stringa" align="right" width="16.5" id="66" pattern="1">
<groups>71</groups>
<source>33.IBAN[16,]+' CIN:'+33.IBAN[5,5]</source>
</field>
<field x="43" y="22.5" type="Testo" width="3.5" id="67" pattern="1" text="Abi:">
<font italic="1" face="Arial" size="8" />
<groups>71</groups>
</field>
<field x="55" y="22.5" type="Testo" width="4" id="68" pattern="1" text="Cab:">
<font italic="1" face="Arial" size="8" />
<groups>71</groups>
</field>
<field x="66.75" y="22.5" type="Testo" width="4.5" id="69" pattern="1" text="C&#2F;C">
<font italic="1" face="Arial" size="8" />
<groups>71</groups>
</field>
<field x="28.5" y="22.5" type="Array" hidden="1" width="3" id="117" pattern="1">
<source>201@.S4</source>
<list>
<li Value=" " Code=" ">MESSAGE HIDE,71@|HIDE,70@</li>
<li Value="1" Code="1">MESSAGE HIDE,71@|SHOW,70@</li>
<li Value="3" Code="3">MESSAGE HIDE,70@|SHOW,71@</li>
<li Value="9" Code="9">MESSAGE HIDE,71@|SHOW,70@ </li>
</list>
</field>
<field x="32" y="22.5" type="Stringa" hidden="1" width="10" id="119" pattern="1">
<source>33.CODABIP+33.CODCABP</source>
</field>
<field x="43" y="21.5" type="Stringa" width="51" id="129" pattern="1">
<groups>70</groups>
<prescript description="H0.129 PRESCRIPT">MESSAGE TABLEREAD,%BAN,#119,S0</prescript>
<field x="58.5" y="27.25" type="Stringa" hidden="1" width="4" id="51" pattern="1">
<source>18.CIV</source>
<prescript description="H1.51 PRESCRIPT">MESSAGE APPEND,41</prescript>
</field>
</section>
<section type="Head" level="1" pattern="1" />
<section type="Body" pattern="1">
<field border="1" x="3" y="1" type="Rettangolo" bg_color="#C0C0C0" width="40" height="5" pattern="5" />
<field x="12.5" y="3" type="Testo" width="20" pattern="1" text="Logo Personalizzato">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="3.5" y="6.5" type="Testo" width="16.5" pattern="1" text="INTESTAZIONE DITTA">
<font face="Times New Roman" bold="1" size="9" />
</field>
<field x="3.5" y="7.25" type="Testo" width="13" pattern="1" text="Via ">
<font face="Times New Roman" size="8" />
</field>
<field x="3.5" y="8" type="Testo" width="33" pattern="1" text="CAP COMUNE PROV Italy">
<font face="Times New Roman" size="8" />
</field>
<field x="3.5" y="8.75" type="Testo" width="33" pattern="1" text="Tel. +39 xxxxxxx Fax +39 xxxxxxxxxxxxxxx">
<font face="Times New Roman" size="8" />
</field>
<field x="3.5" y="9.5" type="Testo" width="33" pattern="1" text="P.IVA 01234567890 Trib. XX n. 12345 CCIAA n. 123456">
<font face="Times New Roman" size="8" />
</field>
<field x="3.5" y="10.25" type="Testo" width="33" pattern="1" text="Cap. Soc. Euro 99.999 i.v.">
<font face="Times New Roman" size="8" />
</field>
<field x="3.5" y="11" type="Testo" width="33" pattern="1" text="www.vostraditta.com info@vostraditta.com">
<font face="Times New Roman" size="8" />
</field>
<field border="1" radius="100" x="0.5" y="18" type="Rettangolo" shade_offset="50" width="92" height="8" pattern="2" />
<field border="1" x="0.5" y="20.5" type="Linea" width="92" height="0" pattern="1" />
<field border="1" x="0.5" y="23.5" type="Linea" width="92" height="0" pattern="1" />
<field border="1" radius="100" x="0.5" y="26.5" type="Rettangolo" shade_offset="50" width="92" height="23.5" pattern="2" />
<field border="1" radius="100" x="0.5" y="51" type="Rettangolo" shade_offset="50" width="92" height="14.5" pattern="2" />
<field border="1" x="0.75" y="53" type="Linea" width="92" height="0" pattern="1" />
<field border="1" x="6.5" y="53" type="Linea" height="6" pattern="1" />
<field border="1" x="19" y="53" type="Linea" height="6" pattern="1" />
<field border="1" x="34.5" y="53" type="Linea" height="6" pattern="1" />
<field border="1" x="40.5" y="53" type="Linea" height="6" pattern="1" />
<field border="1" x="75.25" y="53" type="Linea" height="6" pattern="1" />
<field border="1" x="0.75" y="59" type="Linea" width="92" height="0" pattern="1" />
<field border="1" radius="100" x="76" y="59.25" type="Rettangolo" bg_color="#E0E0E0" shade_offset="30" width="16" height="2.75" pattern="2" />
<field border="1" x="0.75" y="62.25" type="Linea" width="92" height="0" pattern="1" />
<field x="1" y="62.5" type="Testo" width="50" pattern="1" text="CONTRIBUTO CONAI ASSOLTO OVE DOVUTO">
<font face="Arial" bold="1" size="10" />
</field>
<field x="1" y="63.5" type="Array" width="50" pattern="1">
<font face="Arial" bold="1" size="10" />
<source>33.IVAXCASSA</source>
<list>
<li />
<li Value="Operazione con IVA per cassa, di cui all'art. 32-bis del D.L. 83&#2F;2012" Code="X" />
</list>
</field>
<field border="1" radius="100" x="45.5" y="9.5" type="Rettangolo" shade_offset="50" width="47" height="8" id="50" pattern="2" />
<field x="49" y="9" type="Testo" width="16" id="53" pattern="2" text=" Intestatario Documento">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1" y="18.25" type="Testo" width="11" id="53" pattern="1" text="Tipo Documento">
<font italic="1" face="Arial" size="8" />
</field>
<field x="17.5" y="18.25" type="Testo" width="8" id="53" pattern="1" text="Cod.Cliente">
<font italic="1" face="Arial" size="8" />
</field>
<field x="29" y="18.25" type="Testo" width="8.5" id="53" pattern="1" text="P.IVA">
<font italic="1" face="Arial" size="8" />
</field>
<field x="42.75" y="18.25" type="Testo" width="8.5" id="53" pattern="1" text="Cod. Fis:">
<font italic="1" face="Arial" size="8" />
</field>
<field x="59.5" y="18.25" type="Testo" width="5" id="53" pattern="1" text="Valuta">
<font italic="1" face="Arial" size="8" />
</field>
<field x="69.5" y="18.25" type="Testo" width="6" id="53" pattern="1" text="Numero">
<font italic="1" face="Arial" size="8" />
</field>
<field x="79" y="18.25" type="Testo" width="7" id="53" pattern="1" text="Data">
<font italic="1" face="Arial" size="8" />
</field>
<field x="88" y="18.25" type="Testo" width="5" id="53" pattern="1" text="Pagina">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1" y="20.5" type="Testo" width="8" id="53" pattern="1" text="Pagamento">
<font italic="1" face="Arial" size="8" />
</field>
<field x="43" y="20.5" type="Testo" width="8" id="53" pattern="1" text="Banca">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1" y="23.5" type="Testo" width="8" id="53" pattern="1" text="Commessa">
<font italic="1" face="Arial" size="8" />
</field>
<field x="2.5" y="51.25" type="Testo" width="10" id="53" pattern="1" text="Totale Merce">
<font italic="1" face="Arial" size="8" />
</field>
<field x="14" y="51.25" type="Testo" width="6" id="53" pattern="1" text="Sconto %">
<font italic="1" face="Arial" size="8" />
</field>
<field x="21.5" y="51.25" type="Testo" align="right" width="10" id="53" pattern="1" text="Netto Merce">
<font italic="1" face="Arial" size="8" />
</field>
<field x="33" y="51.25" type="Testo" width="7.5" id="53" pattern="1" text="Spese Varie">
<font italic="1" face="Arial" size="8" />
</field>
<field x="44.5" y="51.25" type="Testo" width="10.5" id="53" pattern="1" text="Spese Trasporto">
<font italic="1" face="Arial" size="8" />
</field>
<field x="61.5" y="51.25" type="Testo" width="11" id="53" pattern="1" text="Totale Imponibile">
<font italic="1" face="Arial" size="8" />
</field>
<field x="81" y="51.25" type="Testo" width="10.5" id="53" pattern="1" text="Totale Imposta">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1" y="53.25" type="Testo" width="6" id="53" pattern="1" text="Cod.IVA">
<font italic="1" face="Arial" size="8" />
</field>
<field x="7.25" y="53.25" type="Testo" width="12" id="53" pattern="1" text="Spese Accessorie">
<font italic="1" face="Arial" size="8" />
</field>
<field x="19.25" y="53.25" type="Testo" align="center" width="15" id="53" pattern="1" text="Imponibile">
<font italic="1" face="Arial" size="8" />
</field>
<field x="36.25" y="53.25" type="Testo" width="3" id="53" pattern="1" text="IVA">
<font italic="1" face="Arial" size="8" />
</field>
<field x="41.5" y="53.25" type="Testo" width="17" id="53" pattern="1" text="Imposta">
<font italic="1" face="Arial" size="8" />
</field>
<field x="76.75" y="53.28" type="Testo" width="16" id="53" pattern="1" text="Bolli">
<font italic="1" face="Arial" size="8" />
</field>
<field x="76.75" y="55.75" type="Testo" width="6.5" id="53" pattern="1" text="Acconto">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1.25" y="59.25" type="Testo" width="22.5" id="53" pattern="1" text="Scadenza Rate e Relativo Importo">
<font italic="1" face="Arial" size="8" />
</field>
<field x="78.25" y="59.5" type="Testo" width="12.5" id="53" pattern="1" text="Totale Documento">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1.5" y="27" type="Testo" width="8" id="202" pattern="1" text="Fase">
<prescript description="B0 PRESCRIPT">#REPORT.PAGE @ 1 = IF
"B0" HIDE
ELSE
"B0" SHOW
THEN</prescript>
<field border="1" radius="100" x="0.5" y="4" type="Rettangolo" shade_offset="50" width="92" height="60.5" pattern="2" />
<field border="1" x="0.5" y="6" type="Linea" width="92" height="0" pattern="1" />
<field y="4.25" type="Testo" align="center" width="8" height="1.75" id="202" pattern="1" text="Fase articolo">
<font face="Arial" bold="1" size="8" />
</field>
<field x="17.5" y="27" type="Testo" width="28.5" id="203" pattern="1" text="Descrizione">
<field x="7" y="4.25" type="Testo" align="center" width="28.5" id="203" pattern="1" text="Descrizione">
<font face="Arial" bold="1" size="8" />
</field>
<field x="53.75" y="27" type="Testo" width="3.5" id="204" pattern="1" text="UM">
<field x="41.75" y="4.25" type="Testo" align="center" width="4.5" id="204" pattern="1" text="N&#B0;.">
<font face="Arial" bold="1" size="8" />
</field>
<field x="58.25" y="27" type="Testo" width="6" id="209" pattern="1" text="Quantit&#E0;">
<field x="46.75" y="4.25" type="Testo" align="center" width="4.5" id="204" pattern="1" text="Lungh.">
<font face="Arial" bold="1" size="8" />
</field>
<field x="68" y="27" type="Testo" width="5.5" id="209" pattern="1" text="Prezzo">
<field x="51.75" y="4.25" type="Testo" align="center" width="4.5" id="204" pattern="1" text="Largh.">
<font face="Arial" bold="1" size="8" />
</field>
<field x="80.5" y="27" type="Testo" width="5.5" id="209" pattern="1" text="Importo">
<field x="56.75" y="4.25" type="Testo" align="center" width="4.5" id="204" pattern="1" text="Alt.">
<font face="Arial" bold="1" size="8" />
</field>
<field x="89.5" y="27" type="Testo" width="2.5" id="209" pattern="1" text="C.I.">
<field x="61.75" y="4.25" type="Testo" align="center" width="3" id="204" pattern="1" text="UM">
<font face="Arial" bold="1" size="8" />
</field>
<field border="1" x="15.5" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
<field border="1" x="52.5" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
<field border="1" x="57" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
<field border="1" x="65.16" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
<field border="1" x="77.25" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
<field border="1" x="88.75" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
<field x="64.75" y="4.25" type="Testo" align="center" width="8" id="209" pattern="1" text="Quantit&#E0;">
<font face="Arial" bold="1" size="8" />
</field>
<field x="72.5" y="4.25" type="Testo" align="center" width="10" id="209" pattern="1" text="Prezzo">
<font face="Arial" bold="1" size="8" />
</field>
<field x="82.5" y="4.25" type="Testo" align="center" width="10" id="209" pattern="1" text="Importo">
<font face="Arial" bold="1" size="8" />
</field>
<field border="1" x="7" y="4" type="Linea" height="60" id="500" pattern="1" />
<field border="1" x="41.5" y="4" type="Linea" height="60" id="500" pattern="1" />
<field border="1" x="46.5" y="4" type="Linea" height="60" id="500" pattern="1" />
<field border="1" x="51.5" y="4" type="Linea" height="60" id="500" pattern="1" />
<field border="1" x="56.5" y="4" type="Linea" height="60" id="500" pattern="1" />
<field border="1" x="61.5" y="4" type="Linea" height="60" id="500" pattern="1" />
<field border="1" x="64.5" y="4" type="Linea" height="60" id="500" pattern="1" />
<field border="1" x="72.66" y="4" type="Linea" height="60" id="500" pattern="1" />
<field border="1" x="82.25" y="4" type="Linea" height="60" id="500" pattern="1" />
</section>
<section type="Body" level="1" pattern="1">
<condition>34.TIPORIGA='01'</condition>
<condition>34.TIPORIGA='P1'</condition>
<font face="Arial" size="10" />
<field x="16" type="Stringa" bg_color="#D4D4D4" dynamic_height="1" width="36" height="22" id="52" pattern="1">
<field x="0.7" y="0.25" type="Stringa" width="6" pattern="1">
<font face="Arial" size="9" />
<source>34.CODART</source>
</field>
<field x="8" y="0.25" type="Stringa" bg_color="#D4D4D4" dynamic_height="1" width="32" height="22" id="52" pattern="1">
<font face="Arial" size="9" />
<prescript description="B1.52 PRESCRIPT">MESSAGE _DESCRIGA</prescript>
</field>
<field x="53" type="Stringa" bg_color="#C0C0C0" width="3" id="53" pattern="1">
<field x="61.5" y="0.25" type="Stringa" align="center" bg_color="#C0C0C0" width="3" id="53" pattern="1">
<font face="Arial" size="8" />
<source>34.UMQTA</source>
<prescript description="B1.53 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="57" type="Numero" align="right" bg_color="#00FFFF" width="7.5" id="54" pattern="1" hide_zero="1" text="###.###">
<field x="64.75" y="0.25" type="Numero" align="right" bg_color="#00FFFF" width="7.5" id="54" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Arial" size="9" />
<groups>30</groups>
<source>34.QTA</source>
<prescript description="B1.54 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="65" type="Prezzo" align="right" bg_color="#FF80C0" width="10.5" codval="33.CODVAL" id="55" pattern="1" hide_zero="1" text="###.###.###,@@">
<field x="72.8" y="0.25" type="Numero" align="right" bg_color="#FF80C0" width="9" codval="33.CODVAL" id="55" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Arial" size="9" />
<groups>29</groups>
<source>34.PREZZO</source>
<prescript description="B1.55 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="76.5" type="Prezzo" align="right" bg_color="#00FFFF" width="12" codval="33.CODVAL" id="57" pattern="1" hide_zero="1" text="###.###.###,@@">
<field x="82.5" y="0.25" type="Numero" align="right" bg_color="#00FFFF" width="9" codval="33.CODVAL" id="57" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Arial" size="9" />
<groups>29</groups>
<source>34.IMPNS</source>
<source>34.QTA*34.PREZZO</source>
<prescript description="B1.57 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="89.75" type="Stringa" bg_color="#EFEFEF" width="3" id="58" pattern="1">
<source>34.CODIVA</source>
<prescript description="B1.58 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="94.5" type="Prezzo" hidden="1" align="right" bg_color="#E1E1E1" width="15" codval="33.CODVAL" id="59" pattern="1" hide_zero="1" text="###.###.###,@@">
<field x="94.5" y="0.25" type="Prezzo" hidden="1" align="right" bg_color="#E1E1E1" width="15" codval="33.CODVAL" id="59" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>29</groups>
<source>34.PREZZONS</source>
<prescript description="B1.59 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="109.5" type="Valuta" hidden="1" align="right" width="15" codval="33.CODVAL" id="60" pattern="1" hide_zero="1" text="###.###.###,@@">
<field x="109.5" y="0.25" type="Valuta" hidden="1" align="right" width="15" codval="33.CODVAL" id="60" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>34.PROVVR</source>
<prescript description="B1.60 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="124.5" type="Valuta" hidden="1" align="right" width="15" codval="33.CODVAL" id="61" pattern="1" hide_zero="1" text="###.###.###,@@">
<field x="124.5" y="0.25" type="Valuta" hidden="1" align="right" width="15" codval="33.CODVAL" id="61" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>34.IMPOSTA</source>
<prescript description="B1.61 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
@ -348,204 +240,82 @@ MESSAGE APPEND,26</prescript>
</section>
<section type="Body" level="2" pattern="1">
<condition>34.TIPORIGA='05'</condition>
<field x="2" type="Stringa" bg_color="#FFFF80" width="13" id="51" pattern="2">
<field border="1" x="0.5" type="Linea" width="92" height="0" pattern="1" />
<field x="0.7" y="0.25" type="Stringa" bg_color="#FFFF80" width="5.5" id="51" pattern="1">
<font face="Arial" bold="1" size="10" />
<source>34.CODART</source>
<prescript description="B2.51 PRESCRIPT">MON
1
"34.PRIORITY" @
<prescript description="B2.51 PRESCRIPT">1 "34.PRIORITY" @
+
2 *
0
#THIS_FIELD SET_POS</prescript>
</field>
<field x="16" type="Stringa" bg_color="#00FF80" dynamic_height="1" width="36" height="22" id="52" pattern="2">
<field x="8" y="0.25" type="Stringa" bg_color="#00FF80" dynamic_height="1" width="32" height="22" id="52" pattern="1">
<font face="Arial" bold="1" size="10" />
<prescript description="B2.52 PRESCRIPT">MESSAGE _DESCRIGA</prescript>
</field>
</section>
<section y="50" hidden_if_needed="1" type="Foot" pattern="1" />
<section y="50" type="Foot" level="1" pattern="1">
<section type="Body" level="3" pattern="1">
<condition>34.TIPORIGA='P2'</condition>
<field x="8" type="Stringa" bg_color="#D4D4D4" dynamic_height="1" width="32" height="22" id="52" pattern="1">
<font face="Arial" size="7" />
<prescript description="B3.52 PRESCRIPT">MESSAGE _DESCRIGA</prescript>
</field>
<field x="41.8" type="Numero" align="right" bg_color="#00FFFF" width="4.5" id="53" pattern="1" hide_zero="1">
<font face="Arial" size="7" />
<source>34.QTA</source>
<prescript description="B3.53 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="46.8" type="Numero" align="right" bg_color="#00FFFF" width="4.5" id="54" pattern="1" hide_zero="1">
<font face="Courier New" size="7" />
<source>34.QTAGG1</source>
<prescript description="B3.54 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="51.8" type="Numero" align="right" bg_color="#00FFFF" width="4.5" id="55" pattern="1" hide_zero="1">
<font face="Courier New" size="7" />
<source>34.QTAGG2</source>
<prescript description="B3.55 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="56.8" type="Numero" align="right" bg_color="#00FFFF" width="4.5" id="56" pattern="1" hide_zero="1">
<font face="Courier New" size="7" />
<source>34.QTAGG3</source>
<prescript description="B3.56 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
</section>
<section type="Foot" height="2" pattern="1">
<field border="2" y="0.25" type="Linea" width="92" height="0" pattern="1" />
<field x="11.5" y="0.5" type="Stringa" width="3.5" pattern="1">
<font face="Arial" size="10" />
<source>33.NDOC[1,1]</source>
</field>
<field x="15.5" y="0.5" type="Testo" width="3" pattern="1" text="rev.">
<font face="Arial" size="10" />
</field>
<field x="18.5" y="0.5" type="Stringa" align="right" width="2" pattern="1">
<font face="Arial" size="10" />
<source>33.NDOC[2,3]</source>
</field>
<field x="77.5" y="0.5" type="Testo" width="6.5" pattern="1" text="Pagina">
<font face="Arial" size="10" />
</field>
<field x="83.5" y="0.5" type="Stringa" align="center" width="3" pattern="1">
<font face="Arial" size="10" />
<source>#PAGE</source>
</field>
<field x="86.5" y="0.5" type="Testo" align="center" width="2.5" pattern="1" text="di">
<font face="Arial" size="10" />
</field>
<field x="89" y="0.5" type="Numero" align="right" width="3" pattern="1">
<font face="Arial" size="10" />
<source>#BOOKPAGES</source>
</field>
<field y="0.5" type="Testo" width="11.5" id="31" pattern="1" text="Preventivo n&#B0; ">
<font face="Arial" size="10" />
<source>210@.S0</source>
</field>
</section>
<section y="50" type="Foot" level="1" page_break="1" pattern="1">
<font face="Arial" size="9" />
<field x="1" y="7" type="Stringa" width="80" height="2" pattern="1">
<font face="Arial" size="8" />
<prescript description="F1.0 PRESCRIPT">#DOC.LIQDIFF @
EMPTY=
NEGATE
#CLI.ALLEG @
7
&#3C;
AND
IF
"IVA a esigibilit&#E0; differita ai sensi dell'art. 6 comma 5, del dpr n.633&#2F;2973 e dell' art.7 legge 2&#2F;2009"
#THIS !
THEN</prescript>
</field>
<field x="45" y="12.5" type="Stringa" width="40" height="2" pattern="1">
<font face="Arial" size="8" />
<prescript description="F1.0 PRESCRIPT">#DOC.LIQDIFF @
EMPTY=
NEGATE
#CLI.ALLEG @
7
&#3C;
AND
IF
"IVA a esigibilit&#E0; differita ai sensi dell'art. 6 comma 5, del dpr n.633&#2F;2973 e dell' art.7 legge 2&#2F;2009"
#THIS !
THEN</prescript>
</field>
<field y="2" type="Valuta" align="right" bg_color="#00FFFF" width="12" codval="33.CODVAL" id="101" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>TOTMER</source>
</field>
<field x="14" y="2" type="Stringa" bg_color="#0000FF" width="5" id="102" pattern="1">
<source>33.SCONTOPERC</source>
</field>
<field x="16" type="Valuta" hidden="1" align="right" width="10" codval="33.CODVAL" id="103" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>SCONTOT</source>
</field>
<field x="44" y="2" type="Valuta" align="right" bg_color="#FFFF00" width="10" codval="33.CODVAL" id="104" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>SPESTRA</source>
</field>
<field x="32.5" y="2" type="Valuta" align="right" bg_color="#7F007F" width="9.5" codval="33.CODVAL" id="105" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>SPESIMB</source>
</field>
<field x="76.5" y="7" type="Valuta" align="right" width="15" codval="33.CODVAL" id="106" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>33.IMPPAGATO</source>
</field>
<field x="1" y="4" type="Stringa" bg_color="#7F7F7F" width="4" id="107" pattern="1">
<prescript description="F1.107 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,COD,0</prescript>
</field>
<field x="20" y="4" type="Valuta" align="right" bg_color="#FF00FF" width="14" codval="33.CODVAL" id="108" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.108 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IMP,0</prescript>
</field>
<field x="35" y="4" type="Numero" align="right" width="4" id="109" pattern="1" hide_zero="1" text="##">
<prescript description="F1.109 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,ALI,0</prescript>
</field>
<field x="41" y="4" type="Valuta" align="right" width="10" codval="33.CODVAL" id="110" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.110 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IVA,1</prescript>
</field>
<field x="1" y="5" type="Stringa" width="4" id="111" pattern="1">
<prescript description="F1.111 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,COD,0</prescript>
</field>
<field x="20" y="5" type="Valuta" align="right" width="14" codval="33.CODVAL" id="112" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.112 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IMP,0</prescript>
</field>
<field x="35" y="5" type="Numero" align="right" width="4" id="113" pattern="1" hide_zero="1" text="##">
<prescript description="F1.113 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,ALI,0</prescript>
</field>
<field x="41" y="5" type="Valuta" align="right" width="10" codval="33.CODVAL" id="114" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.114 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IVA,1</prescript>
</field>
<field x="1" y="6" type="Stringa" width="4" id="115" pattern="1">
<prescript description="F1.115 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,COD,0</prescript>
</field>
<field x="20" y="6" type="Valuta" align="right" bg_color="#FF00FF" width="14" codval="33.CODVAL" id="116" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.116 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IMP,0</prescript>
</field>
<field x="35" y="6" type="Numero" align="right" width="4" id="117" pattern="1" hide_zero="1" text="##">
<prescript description="F1.117 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,ALI,0</prescript>
</field>
<field x="41" y="6" type="Valuta" align="right" bg_color="#00FFFF" width="10" codval="33.CODVAL" id="118" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.118 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IVA,1</prescript>
</field>
<field x="20" y="7" type="Valuta" align="right" bg_color="#FF00FF" width="14" codval="33.CODVAL" id="119" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.119 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,IMP,0</prescript>
</field>
<field x="1" y="7" type="Stringa" width="4" id="120" pattern="1">
<prescript description="F1.120 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,COD,0</prescript>
</field>
<field x="41" y="7" type="Stringa" width="29" id="121" pattern="1">
<prescript description="F1.121 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,DES,1</prescript>
</field>
<field x="20" y="8" type="Valuta" align="right" bg_color="#0000FF" width="14" codval="33.CODVAL" id="122" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.122 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,IMP,0</prescript>
</field>
<field x="1" y="8" type="Stringa" bg_color="#00FFFF" width="4" id="123" pattern="1">
<prescript description="F1.123 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,COD,0</prescript>
</field>
<field x="41" y="8" type="Stringa" bg_color="#00FFFF" width="29" id="124" pattern="1">
<prescript description="F1.124 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,DES,1</prescript>
</field>
<field x="60.5" y="2" type="Valuta" align="right" bg_color="#FF0000" width="13.5" codval="33.CODVAL" id="125" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>IMPONIBILI</source>
</field>
<field x="78.5" y="2" type="Valuta" align="right" bg_color="#007F7F" width="13" codval="33.CODVAL" id="126" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>IMPOSTE</source>
</field>
<field x="36" deactivated="1" type="Valuta" hidden="1" align="right" width="11" codval="33.CODVAL" id="127" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.127 PRESCRIPT">MESSAGE _TOTIMPONIBILI,28</prescript>
</field>
<field x="59" type="Valuta" hidden="1" align="right" width="10" codval="33.CODVAL" id="128" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>SPESINC</source>
</field>
<field x="48" type="Valuta" hidden="1" align="right" width="10" codval="33.CODVAL" id="129" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>BOLLI</source>
</field>
<field x="76.5" y="10.25" type="Valuta" align="right" width="15" codval="33.CODVAL" height="1.25" id="130" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Arial" bold="1" size="10" />
<groups>31</groups>
<source>TOTDOC</source>
</field>
<field x="45" y="13" deactivated="1" type="Valuta" align="right" width="11" codval="33.CODVAL" id="137" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>33.IMPPAGATO</source>
<prescript description="F1.137 PRESCRIPT">MESSAGE SUB,138</prescript>
</field>
<field x="69" y="13" deactivated="1" type="Valuta" align="right" width="11" codval="33.CODVAL" id="138" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
</field>
<field x="1" y="10" type="Data" bg_color="#7F7F7F" width="8" id="143" pattern="1">
<prescript description="F1.143 PRESCRIPT">MESSAGE _SCADENZE,DATA,0</prescript>
</field>
<field x="10" y="10" type="Valuta" align="right" width="11" codval="33.CODVAL" id="144" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.144 PRESCRIPT">MESSAGE _SCADENZE,IMPORTO,1</prescript>
</field>
<field x="24" y="10" type="Data" width="8" id="145" pattern="1">
<prescript description="F1.145 PRESCRIPT">MESSAGE _SCADENZE,DATA,0</prescript>
</field>
<field x="33" y="10" type="Valuta" align="right" width="11" codval="33.CODVAL" id="146" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.146 PRESCRIPT">MESSAGE _SCADENZE,IMPORTO,1</prescript>
</field>
<field x="46.5" y="10" type="Data" width="8" id="147" pattern="1">
<prescript description="F1.147 PRESCRIPT">MESSAGE _SCADENZE,DATA,0</prescript>
</field>
<field x="55.5" y="10" type="Valuta" align="right" width="11" codval="33.CODVAL" id="148" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.148 PRESCRIPT">MESSAGE _SCADENZE,IMPORTO,1</prescript>
</field>
<field x="1" y="11" type="Data" width="8" id="149" pattern="1">
<prescript description="F1.149 PRESCRIPT">MESSAGE _SCADENZE,DATA,0</prescript>
</field>
<field x="10" y="11" type="Valuta" align="right" bg_color="#00FFFF" width="11" codval="33.CODVAL" id="150" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.150 PRESCRIPT">MESSAGE _SCADENZE,IMPORTO,1</prescript>
</field>
<field x="24" y="11" type="Data" width="8" id="151" pattern="1">
<prescript description="F1.151 PRESCRIPT">MESSAGE _SCADENZE,DATA,0</prescript>
</field>
<field x="33" y="11" type="Valuta" align="right" width="11" codval="33.CODVAL" id="152" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.152 PRESCRIPT">MESSAGE _SCADENZE,IMPORTO,1</prescript>
</field>
</section>
<sql>USE 33
JOIN 34 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
@ -553,6 +323,8 @@ JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 20 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 16 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP
JOIN 16 TO 17 ALIAS 116 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP
JOIN 18 TO 33 INTO CFPI==OCFPI
JOIN 13 TO 18 INTO COM==COM STATO==STATO
JOIN 47 TO 34 INTO CODART==CODART
JOIN %CPG TO 33 ALIAS 201 INTO CODTAB==CODPAG
JOIN 122 TO 33 INTO CODAGE==CODAG

View File

@ -124,6 +124,7 @@ BEGIN
OUTPUT F_RAGSOC LF_CLIFO->RAGSOC
OUTPUT F_NDOC LF_DOC->NDOC
CHECKTYPE NORMAL
ADD RUN cg0 -1
END
STRING F_RAGSOC 50

View File

@ -37,7 +37,13 @@ END
BUTTON DLG_ELABORA 2 2
BEGIN
PROMPT 1 2 "Elabora"
PROMPT 1 2 "Ordine"
PICTURE TOOL_ELABORA
END
BUTTON DLG_ARCHIVE 2 2
BEGIN
PROMPT 1 2 "Fabbisogno"
PICTURE TOOL_ELABORA
END
@ -66,13 +72,13 @@ ENDPAGE
PAGE "Preventivi" 0 0 0 0
GROUPBOX DLG_NULL 78 6
GROUPBOX -1 78 6
BEGIN
PROMPT 1 0 "@bPreventivo"
END
LIST F_PROVV 1 12
BEGIN
LIST 201 1 12
BEGIN
PROMPT 69 69 ""
ITEM "D|Definitivi"
ITEM "P|Provvisori"
@ -81,7 +87,7 @@ BEGIN
KEY 1
END
NUMBER F_ANNO 4
NUMBER 202 4
BEGIN
PROMPT 2 1 "Anno "
FLAGS "D"
@ -90,25 +96,25 @@ BEGIN
KEY 1
END
STRING F_CODNUM 4
STRING 203 4
BEGIN
PROMPT 2 2 "Numerazione "
USE %NUM
FLAGS "DGU"
INPUT CODTAB F_CODNUM
OUTPUT F_DESNUM S0
INPUT CODTAB 203
OUTPUT 204 S0
CHECKTYPE REQUIRED
FIELD CODNUM
KEY 1
END
STRING F_DESNUM 50
STRING 204 50
BEGIN
PROMPT 24 2 ""
FLAGS "D"
END
NUMBER F_NDOC 7
NUMBER 209 7
BEGIN
PROMPT 24 1 "Numero documento "
FLAGS "DG"
@ -117,81 +123,81 @@ BEGIN
KEY 1
END
STRING F_STATO 1
STRING 210 1
BEGIN
PROMPT 53 1 "Stato "
USE %STD
INPUT CODTAB F_STATO
INPUT CODTAB 210
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO CODTAB
OUTPUT 210 CODTAB
CHECKTYPE NORMAL
FIELD STATO
FLAGS "DG"
END
STRING F_TIPODOC 4
STRING 205 4
BEGIN
PROMPT 2 3 "Tipo "
FLAGS "H"
FIELD TIPODOC
USE %TIP
INPUT CODTAB F_TIPODOC
OUTPUT F_DESTIPO S0
INPUT CODTAB 205
OUTPUT 206 S0
CHEKCTYPE NORMAL
END
STRING F_DESTIPO 50
STRING 206 50
BEGIN
PROMPT 24 3 ""
FLAGS "H"
END
NUMBER F_NPREV 7
NUMBER 207 7
BEGIN
PROMPT 2 3 "Preventivo "
FLAGS "D"
END
NUMBER F_NREV 2
BEGIN
NUMBER 208 2
BEGIN
PROMPT 24 3 "Revisione "
FLAGS "DZ"
END
DATE F_DATADOC
DATE 211
BEGIN
PROMPT 46 3 "Data "
FLAGS "A"
FIELD DATADOC
CHECKTYPE REQUIRED
END
END
STRING F_NUMDOCRIF 7
BEGIN
STRING 236 7
BEGIN
PROMPT 2 4 "Documento di riferimento "
FIELD NUMDOCRIF
END
DATE F_DATADOCRIF
DATE 237
BEGIN
PROMPT 36 4 "del "
FIELD DATADOCRIF
END
GOLEM F_OGGETTI 10 2
GOLEM 238 10 2
BEGIN
PROMPT 64 3 ""
FIELD COLL_GOLEM
FLAGS "M"
END
GROUPBOX DLG_NULL 78 9
GR -1 78 7
BEGIN
PROMPT 1 6 "@bCliente"
END
LIST DLG_NULL 1 7
LISTBOX -1 1 7
BEGIN
PROMPT 68 68 "Tipo "
ITEM "C|Cliente"
@ -206,7 +212,7 @@ BEGIN
INPUT TIPOCF "C"
INPUT CODCF F_CLIFO
DISPLAY "Cliente" CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Partita IVA@12" PAIV
DISPLAY "Codice Fiscale@16" COFI
DISPLAY "Sospeso@C" SOSPESO
@ -216,8 +222,10 @@ BEGIN
OUTPUT F_STATOPAIV STATOPAIV
OUTPUT F_PAIV PAIV
OUTPUT F_COFI COFI
CHECKTYPE REQUIRED
CHECKTYPE NORMAL
FIELD CODCF
ADD RU cg0 -1 C
MESSAGE COPY,10@
END
STRING F_RAGSOC 50
@ -232,7 +240,9 @@ BEGIN
DISPLAY "Codice Fiscale@16" COFI
DISPLAY "Sospeso@C" SOSPESO
COPY OUTPUT F_CLIFO
CHECKTYPE REQUIRED
CHECKTYPE NORMAL
ADD RUN cg0 -1 C
MESSAGE COPY,10@
END
STRING F_RICALT 30
@ -252,7 +262,7 @@ END
STRING F_STATOPAIV 2
BEGIN
PROMPT 52 8 "Stato CEE "
HELP "Codice ISO dello stato"
HE "Codice ISO dello stato"
FLAGS "U"
USE %SCE
INPUT CODTAB F_STATOPAIV
@ -274,8 +284,8 @@ BEGIN
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Partita IVA@12" PAIV
DISPLAY "Sospeso@C" SOSPESO
COPY OUTPUT F_CLIFO
HELP "Codice fiscale del cliente/fornitore"
CO OUTPUT F_CLIFO
HE "Codice fiscale del cliente/fornitore"
END
STRING F_PAIV 12
@ -291,85 +301,115 @@ BEGIN
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Sospeso@C" SOSPESO
COPY OUTPUT F_CLIFO
HELP "Partita IVA del cliente/fornitore"
VALIDATE PI_FUNC F_STATOPAIV
CO OUTPUT F_CLIFO
HE "Partita IVA del cliente/fornitore"
VA 2 1 F_STATOPAIV
END
ZOOM F_NOTE 62
STRING F_CLIPOT 7
BEGIN
PROMPT 2 10 "Oggetto "
PROMPT 2 10 "Potenz. Cliente"
USE LF_OCCAS
INPUT CFPI F_CLIPOT
DISPLAY "Codice@20" CFPI
DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT F_CLIPOT CFPI
OUTPUT F_RAGPOT RAGSOC
CHECKTYPE NORMAL
FIELD OCFPI
ADD RU cg0 -6
END
STRING F_RAGPOT 45
BEGIN
PROMPT 29 10 ""
USE LF_OCCAS KEY 2
INPUT RAGSOC F_RAGPOT
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Codice@20" CFPI
COPY OUTPUT F_CLIPOT
ADD RUN cg0 -6
END
GROUPBOX -1 78 7
BEGIN
PROMPT 1 13 "@bDati Commerciali"
END
ZOOM 226 62
BEGIN
PROMPT 2 14 "Oggetto "
FIELD NOTE
END
STRING F_CODPAG 4
STRING 227 4
BEGIN
PROMPT 2 11 "Pagamento "
PROMPT 2 15 "Pagamento "
USE %CPG
INPUT CODTAB F_CODPAG
INPUT CODTAB 227
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODPAG CODTAB
OUTPUT F_DESPAG S0
OUTPUT 227 CODTAB
OUTPUT 228 S0
CHECKTYPE NORMAL
FIELD CODPAG
END
STRING F_DESPAG 50
BEGIN
PROMPT 24 11 ""
END
STRING 228 50
BEGIN
PROMPT 24 15 ""
USE %CPG KEY 2
INPUT S0 F_DESPAG
INPUT S0 228
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODPAG
CO OUTPUT 227
CHECKTYPE NORMAL
END
STRING F_CODLIS 4
STRING 229 4
BEGIN
PROMPT 2 12 "Listino "
PROMPT 2 16 "Listino "
FLAGS "U"
USE LF_CONDV
USE 52
INPUT TIPO "L"
INPUT CATVEN ""
INPUT COD F_CODLIS
INPUT COD 229
DISPLAY "Codice" COD
DISPLAY "Descrizione@50" DESCR
DISPLAY "Inizio@10" VALIN
DISPLAY "Fine@10" VALFIN
OUTPUT F_CODLIS COD
OUTPUT F_DESLIS DESCR
OUTPUT 229 COD
OUTPUT 230 DESCR
ADD RUN ve2 -1 L
CHECKTYPE NORMAL
FIELD CODLIST
END
STRING F_DESLIS 50
STRING 230 50
BEGIN
PROMPT 24 12 ""
USE LF_CONDV KEY 2
PROMPT 24 16 ""
USE 52 KEY 2
INPUT TIPO "L"
INPUT CATVEN ""
INPUT DESCR F_DESLIS
INPUT DESCR 230
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" COD
DISPLAY "Inizio@10" VALIN
DISPLAY "Fine@10" VALFIN
COPY OUTPUT F_CODLIS
CO OUTPUT 229
CHECKTYPE NORMAL
ADD RUN ve2 -1 L
ADD RU ve2 -1 L
END
STRING F_RICARICO 25
STRING 234 25
BEGIN
PROMPT 2 13 "Ricarico "
PROMPT 2 17 "Ricarico "
FIELD SCONTOPERC
END
LIST F_TIPOCOSTO 1 25
LIST 235 1 25
BEGIN
PROMPT 43 13 "Costo "
PROMPT 43 17 "Costo "
ITEM "0|"
ITEM "1|Ultimo costo"
ITEM "2|Media costi"
@ -379,9 +419,39 @@ BEGIN
FIELD CODNOTE
END
GROUPBOX F_CDC0 78 6
STRING 128 5
BEGIN
PROMPT 1 15 "@bAnalitica"
PROMPT 2 18 "Responsabile"
FLAGS "UZ"
CHECKTYPE NORMAL
FIELD CODAG
USE 122
INPUT CODAGE 128
DISPLAY "Codice" CODAGE
DISPLAY "Descrizione@50" RAGSOC
OUTPUT 128 CODAGE
OUTPUT 353 RAGSOC
CHECKTYPE NORMAL
ADD RU pr0 -4
END
STRING 353 50
BEGIN
PROMPT 24 18 ""
FLAGS ""
CHECKTYPE NORMAL
USE 122 KEY 2
INPUT RAGSOC 353
DISPLAY "Descrizione@50" RAGSOC
DISPLAY "Codice" CODAGE
OUTPUT 128 CODAGE
OUTPUT 353 RAGSOC
ADD RUN pr0 -4
END
GROUPBOX F_CDC0 78 3
BEGIN
PROMPT 1 20 "@bAnalitica"
END
ENDPAGE
@ -457,23 +527,32 @@ END
SPREADSHEET F_DISTINTE 0 11
BEGIN
PROMPT 65 0 ""
ITEM "Distinta@20"
ITEM "Descrizione@50"
ITEM "U.M."
ITEM "Quantità@9"
ITEM "Costo@16R"
ITEM "Prezzo@16R"
IT "Voce Elenco Prezzi@20"
IT "Descrizione@50"
IT "U.M."
IT "Quantità@9"
IT "Costo@16R"
IT "Prezzo@16R"
IT "IVA"
IT "Data inizio@10"
IT "Data fine@10"
IT "ID@6"
IT "Legame@6"
IT "Tipo\nleg.@4"
IT "Tot. Ricavi@16"
IT "Tot. Costi@16"
END
SPREADSHEET F_ARTICOLI 0 7
BEGIN
PROMPT 65 11 ""
ITEM "Articolo@20"
ITEM "Voce Analisi@20"
ITEM "Descrizione@50"
ITEM "U.M."
ITEM "Quantità@9R"
ITEM "Costo@16R"
ITEM "Prezzo@16R"
ITEM "IVA"
END
SPREADSHEET F_MISURE
@ -490,7 +569,7 @@ ENDPAGE
ENDMASK
PAGE "Distinta" -1 -1 65 6
PAGE "Distinta" -1 -1 65 9
STRING 101 20
BEGIN
@ -504,7 +583,6 @@ BEGIN
OUTPUT 101 CODDIST
OUTPUT 102 DESCR
OUTPUT 103 UM
OUTPUT 105 PREZZO
CHEKTYPE SEARCH
ADD RUN db0 -4
FIELD CODART
@ -554,6 +632,71 @@ BEGIN
FIELD PREZZO
END
STRING 107 4
BEGIN
PROMPT 1 4 "IVA "
USE %IVA
INPUT CODTAB 107
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT 107 CODTAB
CHECKTYPE NORMAL
FIELD CODIVA
END
DATE 108
BEGIN
PROMPT 1 5 "Inizio attività "
FIELD DATAINIATT
END
DATE 109
BEGIN
PROMPT 35 5 "Fine attività "
FIELD DATAFINATT
END
NUMBER 110 6
BEGIN
PROMPT 1 6 "ID "
FIELD IDRIGA
FLAGS "D"
END
NUMBER 111 6
BEGIN
PROMPT 15 6 "Legame "
FIELD IDRIGACOLL
END
LIST 112 1 15
BEGIN
PROMPT 35 6 "Tipo legame "
ITEM "0|Nessuno"
ITEM "1|Fine-Inizio"
ITEM "2|Fine-Fine"
ITEM "3|Inizio-Inizio"
ITEM "4|Inizio-Fine"
FIELD TIPOCOLL
END
NUMBER 113 16 2
BEGIN
PROMPT 1 7 "Tot. Ricavi"
FLAGS "DG"
VALIDATE 14 1 #104*#106
DRIVENBY 104 106
END
NUMBER 114 16 2
BEGIN
PROMPT 35 7 "Tot. Costi"
FLAGS "DG"
VALIDATE 14 1 #104*#105
DRIVENBY 104 105
EN
ENDPAGE
TOOLBAR "" 0 0 0 2
@ -582,9 +725,11 @@ STRING 101 20
BEGIN
PROMPT 1 1 "Articolo "
USE LF_ANAMAG
JOIN LF_UMART INTO CODART==CODART
INPUT CODART 101
DISPLAY "Codice@20" CODART
DISPLAY "Descrizione@50" DESCR
DISPLAY "U.M." LF_UMART->UM
OUTPUT 101 CODART
OUTPUT 102 DESCR
CHEKTYPE NORMAL
@ -596,9 +741,11 @@ STRING 102 50
BEGIN
PROMPT 1 2 "Descriz. "
USE LF_ANAMAG KEY 2
JOIN LF_UMART INTO CODART==CODART
INPUT DESCR 102
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice@20" CODART
DISPLAY "U.M." LF_UMART->UM
COPY OUTPUT 101
FIELD DESCR
ADD RUN ve2 -3
@ -636,6 +783,17 @@ BEGIN
FIELD PREZZO
END
STRING 107 4
BEGIN
PROMPT 45 4 "IVA "
USE %IVA
INPUT CODTAB 107
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT 107 CODTAB
CHECKTYPE NORMAL
FIELD CODIVA
END
ENDPAGE

View File

@ -253,9 +253,11 @@ TFieldtypes TPreventivo_tree::get_var(const TString& name, TVariant& var) const
} else
if (name == RDOC_DESCR)
{
TString80 str = m.get(F_NOTE);
TString str = m.get(F_NOTE);
if (str.blank())
get_description(str);
const int spc = str.find('\n');
if (spc > 0) str.cut(spc);
var = str;
ft = _alfafld;
} else
@ -408,8 +410,8 @@ TPreventivo_tree::TPreventivo_tree(TTree_field& owner) : _owner(owner)
{
// Legge i tipi riga standard per determinare i nodi dell'albero
_strFasi = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaFase", "05");
_strDist = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaDist", "01");
_strDett = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaDett", "04");
_strMisu = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaMisu", "09");
_strDist = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaDist", "P1");
_strDett = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaDett", "01");
_strMisu = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaMisu", "P2");
}

View File

@ -6,10 +6,12 @@
class TOrdinazione : public TElaborazione_esterna
{
TString4 _strFasi, _strDist;
public:
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab, bool interattivo = false);
TOrdinazione(const TString& cod) : TElaborazione_esterna(cod) { }
TOrdinazione(const TString& cod);
};
bool TOrdinazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
@ -23,29 +25,38 @@ bool TOrdinazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
{
TDocumento* doc = new TDocumento('D', data_elab.year(), codice_numerazione_finale(), 0L);
doc->put(DOC_TIPODOC, tipo_finale());
doc->put(DOC_STATO, stato_finale());
doc_out.add(doc);
}
TDocumento& din = doc_in[i];
TDocumento& don = doc_out[i];
don.put(DOC_TIPOCF, din.get(DOC_TIPOCF));
don.put(DOC_CODCF, din.get(DOC_CODCF));
don.put(DOC_DATADOC, data_elab);
don.put(DOC_NOTE, din.get(DOC_NOTE));
don.put(DOC_CODCMS, din.get(DOC_CODCMS));
din.put(DOC_STATO, stato_finale_doc_iniziale());
don.put(DOC_TIPOCF, din.get(DOC_TIPOCF));
don.put(DOC_CODCF, din.get(DOC_CODCF));
don.put(DOC_DATADOC, data_elab);
don.put(DOC_NOTE, din.get(DOC_NOTE));
don.put(DOC_CODCMS, din.get(DOC_CODCMS));
don.put(DOC_STATO, stato_finale());
don.put(DOC_NUMDOCRIF, din.get(DOC_NDOC));
don.put(DOC_DATADOCRIF, din.get(DOC_DATADOC));
TLocalisamfile fasi(LF_FASI);
const TMultilevel_code_info cfg_fasi(LF_FASI);
TString16 fase;
const int nrows = din.rows();
FOR_EACH_PHYSICAL_RDOC(din, r, rdoc)
{
if (rdoc->is_descrizione())
const TString& tr = rdoc->get(RDOC_TIPORIGA);
if (tr == _strFasi)
{
TRiga_documento& rout = don.new_row(rdoc->get(RDOC_TIPORIGA));
if (r >= nrows || din[r+1].is_descrizione())
continue; // Salta fasi vuote
TRiga_documento& rout = don.new_row(_strFasi);
TDocumento::copy_data(rout, *rdoc);
const int last_lev = cfg_fasi.levels()-1;
@ -60,9 +71,9 @@ bool TOrdinazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
fasi.write_rewrite();
}
} else
if (rdoc->is_merce())
if (tr == _strDist)
{
TRiga_documento& rout = don.new_row(rdoc->get(RDOC_TIPORIGA));
TRiga_documento& rout = don.new_row(_strDist);
TDocumento::copy_data(rout, *rdoc);
rout.set_original_rdoc_key(*rdoc);
rout.put(RDOC_FASCMS, fase);
@ -73,21 +84,108 @@ bool TOrdinazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
return true;
}
const TString& pe_trova_elaborazione(const TRectype& doc)
TOrdinazione::TOrdinazione(const TString& cod) : TElaborazione_esterna(cod)
{
_strFasi = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaFase", "05");
_strDist = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaDist", "P1");
}
///////////////////////////////////////////////////////////
// Generazione fabbisogno
///////////////////////////////////////////////////////////
class TFabbisognazione : public TElaborazione_esterna
{
TString4 _strDett, _strDist;
public:
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab, bool interattivo = false);
TFabbisognazione(const TString& cod);
};
bool TFabbisognazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab, bool interattivo)
{
for (int i = 0; i < doc_in.items(); i++)
{
if (i >= doc_out.items())
{
TDocumento* doc = new TDocumento('D', data_elab.year(), codice_numerazione_finale(), 0L);
doc->put(DOC_TIPODOC, tipo_finale());
doc_out.add(doc);
}
TDocumento& din = doc_in[i];
TDocumento& don = doc_out[i];
din.put(DOC_STATO, stato_finale_doc_iniziale());
don.zero(DOC_TIPOCF);
don.zero(DOC_CODCF); // NO clifo
don.put(DOC_DATADOC, data_elab);
don.put(DOC_NOTE, din.get(DOC_NOTE));
don.put(DOC_CODCMS, din.get(DOC_CODCMS));
don.put(DOC_STATO, stato_finale());
don.put(DOC_NUMDOCRIF, din.get(DOC_NDOC));
don.put(DOC_DATADOCRIF, din.get(DOC_DATADOC));
TLocalisamfile fasi(LF_FASI);
const TMultilevel_code_info cfg_fasi(LF_FASI);
TString16 fase;
real qta = UNO;
const int nrows = din.rows();
FOR_EACH_PHYSICAL_RDOC(din, r, rdoc)
{
const TString& tr = rdoc->get(RDOC_TIPORIGA);
if (tr == _strDist)
{
qta = rdoc->get_real(RDOC_QTA);
if (qta <= ZERO)
qta = UNO;
} else
if (tr == _strDett)
{
TRiga_documento& rout = don.new_row(_strDett);
TDocumento::copy_data(rout, *rdoc);
rout.put(RDOC_QTA, real(qta * rdoc->get_real(RDOC_QTA)));
rout.put(RDOC_PREZZO, rdoc->get(RDOC_QTAGG5));
rout.set_original_rdoc_key(*rdoc);
rout.put(RDOC_FASCMS, fase);
}
}
}
return true;
}
TFabbisognazione::TFabbisognazione(const TString& cod) : TElaborazione_esterna(cod)
{
_strDist = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaDist", "P1");
_strDett = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaDett", "01");
}
///////////////////////////////////////////////////////////
// Utility pubbliche
///////////////////////////////////////////////////////////
const TString& pe_trova_elaborazione(const TRectype& doc, char tipo)
{
TString16 cod;
const TString4 codnum = doc.get(DOC_CODNUM);
const TString4 tipodoc = doc.get(DOC_TIPODOC);
const TString4 stato = doc.get(DOC_STATO);
const TString& codnum = doc.get(DOC_CODNUM);
TString str;
str << "USE %ELD SELECT (STR(I0=\"0\"))&&(S3=\"pe1 -4\")&&(S5=\"" << codnum << "\")";
if (tipo == 'F')
str << "USE %ELD SELECT (STR(I0=\"0\"))&&(S3=\"pe1 -5\")&&(S5=\"" << codnum << "\")"; // Fabbisogni
else
str << "USE %ELD SELECT (STR(I0=\"0\"))&&(S3=\"pe1 -4\")&&(S5=\"" << codnum << "\")"; // Ordini
TRecordset* eld = create_recordset(str);
if (eld != NULL)
{
for (bool ok = eld->move_first(); ok; ok = eld->move_next())
{
const TString16 c = eld->get("CODTAB").as_string();
const TString& c = eld->get("CODTAB").as_string();
const TElaborazione e(c);
if (e.is_document_ok(doc))
{
@ -100,7 +198,7 @@ const TString& pe_trova_elaborazione(const TRectype& doc)
return get_tmp_string() = cod;
}
const TString& pe_trova_elaborazione(const TMask& m)
const TString& pe_trova_elaborazione(const TMask& m, char tipo)
{
TRectype doc(LF_DOC);
doc.put(DOC_PROVV, 'D');
@ -109,24 +207,35 @@ const TString& pe_trova_elaborazione(const TMask& m)
doc.put(DOC_NDOC, m.get(DOC_NDOC));
doc.put(DOC_TIPODOC, m.get(DOC_TIPODOC));
doc.put(DOC_STATO, m.get(DOC_STATO));
return pe_trova_elaborazione(doc);
return pe_trova_elaborazione(doc, tipo);
}
bool pe_genera_ordine(TRectype& doc, const TString& cod)
bool pe_genera_documento(TRectype& doc, const TString& cod, char tipo)
{
TString16 codelab = cod;
if (codelab.blank())
codelab = pe_trova_elaborazione(doc);
codelab = pe_trova_elaborazione(doc, tipo);
TOrdinazione prev(codelab);
if (prev.empty())
return false;
const TString& app = cache().get("%ELD", codelab, "S3");
tipo = app.find("-5") > 0 ? 'F' : 'O';
TElaborazione* e = NULL;
if (tipo == 'F')
e = new TFabbisognazione(codelab);
else
e = new TOrdinazione(codelab);
if (e->empty())
{
delete e;
return error_box("Impossibile trovare l'elaborazione %s", (const char*)cod);
}
const TDate oggi(TODAY);
TLista_documenti doc_in, doc_out;
doc_in.add(new TDocumento(doc));
bool ok = prev.elabora(doc_in, doc_out, oggi);
bool ok = e->elabora(doc_in, doc_out, oggi);
if (ok)
{
doc_in.rewrite();
@ -141,6 +250,7 @@ bool pe_genera_ordine(TRectype& doc, const TString& cod)
doc.put(fld, val);
}
}
delete e;
return ok;
}
@ -174,7 +284,7 @@ void TOrdinazione_app::main_loop()
doc.put(DOC_CODNUM, ini.get(DOC_CODNUM));
doc.put(DOC_NDOC, ini.get(DOC_NDOC));
if (pe_genera_ordine(doc, codelab))
if (pe_genera_documento(doc, codelab, 'O'))
{
ini.set_paragraph("Transaction");
ini.set("Result", "OK");

View File

@ -1,8 +1,16 @@
#ifndef __PE1500_H
#define __PE1500_H
const TString& pe_trova_elaborazione(const TRectype& doc);
const TString& pe_trova_elaborazione(const TMask& doc);
bool pe_genera_ordine(TRectype& doc, const TString& codelab);
#ifndef __ISAM_H
#include <isam.h>
#endif
#ifndef __MASK_H
#include <mask.h>
#endif
const TString& pe_trova_elaborazione(const TRectype& doc, char tipo);
const TString& pe_trova_elaborazione(const TMask& doc, char tipo);
bool pe_genera_documento(TRectype& doc, const TString& codelab, char tipo);
#endif

50
pe/pe1600.cpp Normal file
View File

@ -0,0 +1,50 @@
#include <applicat.h>
#include <doc.h>
#include "pe1500.h"
///////////////////////////////////////////////////////////
// TFabbisognazione_app
///////////////////////////////////////////////////////////
class TFabbisognazione_app : public TSkeleton_application
{
protected:
virtual void main_loop();
};
void TFabbisognazione_app::main_loop()
{
TFilename ininame;
if (argc() >= 2)
{
const TFixed_string arg = argv(2);
ininame = arg.starts_with("-i", true) ? arg.mid(2) : arg;
}
TConfig ini(ininame, "Transaction");
const TString8 codelab = ini.get("Action");
ini.set_paragraph("33");
TRectype doc(LF_DOC);
doc.put(DOC_PROVV, ini.get(DOC_PROVV));
doc.put(DOC_ANNO, ini.get(DOC_ANNO));
doc.put(DOC_CODNUM, ini.get(DOC_CODNUM));
doc.put(DOC_NDOC, ini.get(DOC_NDOC));
if (pe_genera_documento(doc, codelab, 'F'))
{
ini.set_paragraph("Transaction");
ini.set("Result", "OK");
ini.set("Error", "0");
ini.set_paragraph("33");
for (int i = 0; i < doc.items(); i++)
{
const char* fld = doc.fieldname(i);
const TString& val = doc.get(fld);
if (val.full())
ini.set(fld, val);
}
}
}