From 9da797d43f740c891e6981aaf2d939e323b39095 Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 16 Feb 2011 09:42:19 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : ve0.exe ve0100n.msk vetbnar.msk Ricompilazione Demo : [ ] Commento : Aggiunto supporto per note articolo git-svn-id: svn://10.65.10.50/branches/R_10_00@21650 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/ve0100n.h | 12 ++ ve/ve0100n.uml | 81 +++++++++++++ ve/ve0100o.uml | 2 +- ve/ve0400.cpp | 33 +++-- ve/ve0600.cpp | 2 +- ve/vearea.men | 1 + ve/velib.h | 2 + ve/velib06.cpp | 54 +++++---- ve/velib06a.cpp | 312 +++++++++++++++++++++++++++++++++++++++++++++++- ve/vepriv.h | 1 + ve/verig09.ini | 4 +- ve/vetbnar.h | 14 +++ ve/vetbnar.uml | 142 ++++++++++++++++++++++ ve/veuml.h | 2 + 14 files changed, 623 insertions(+), 39 deletions(-) create mode 100755 ve/ve0100n.h create mode 100755 ve/ve0100n.uml create mode 100755 ve/vetbnar.h create mode 100755 ve/vetbnar.uml diff --git a/ve/ve0100n.h b/ve/ve0100n.h new file mode 100755 index 000000000..ea92c5887 --- /dev/null +++ b/ve/ve0100n.h @@ -0,0 +1,12 @@ +#ifndef __VE0100N_H +#define __VE0100N_H + +#define N_CHECKED 101 +#define N_TYPE 102 +#define N_NOTE 103 + +// Maschera note articolo +#define N_NOTES 201 +#define N_WHERE 202 + +#endif diff --git a/ve/ve0100n.uml b/ve/ve0100n.uml new file mode 100755 index 000000000..d4b82dad2 --- /dev/null +++ b/ve/ve0100n.uml @@ -0,0 +1,81 @@ +#include "ve0100n.h" + +PAGE "Note articolo" -1 -1 70 20 + +LIST N_WHERE 1 32 +BEGIN + PROMPT 1 0 "Copia note selezionate " + ITEM "A|dopo la riga selezionata" + ITEM "B|prima della riga selezionata" +END + +SPREADSHEET N_NOTES 66 15 +BEGIN + PROMPT 1 1 "" + ITEM "@1B" + ITEM "Tipo" + ITEM "Nota@50" +END + +ENDPAGE + +TOOLBAR "botbar" 0 -2 0 2 + +BUTTON DLG_SAVEREC 10 2 +BEGIN + PROMPT -14 -1 "Copia" +END + +BUTTON DLG_NEWREC 10 2 +BEGIN + PROMPT -24 -1 "Nuovo" + PICTURE BMP_NEWREC + PICTURE BMP_NEWRECDN +END + +BUTTON DLG_FINDREC 10 2 +BEGIN + PROMPT -34 -1 "Ricerca" + PICTURE BMP_FINDREC +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -44 -1 "" +END + +ENDPAGE + +ENDMASK + +PAGE "Nota" -1 -1 52 10 + +BOOLEAN N_CHECKED +BEGIN + PROMPT 1 1 "Selezione" +END + +STRING N_TYPE 3 +BEGIN + PROMPT 21 1 "Tipo " + FLAGS "D" +END + +MEMO N_NOTE 50 4 +BEGIN + PROMPT 1 2 "Nota" +END + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK \ No newline at end of file diff --git a/ve/ve0100o.uml b/ve/ve0100o.uml index 453e47587..0ad7ad5b5 100755 --- a/ve/ve0100o.uml +++ b/ve/ve0100o.uml @@ -1,6 +1,6 @@ #include "ve0100o.h" -TOOLBA "topbar" 0 0 0 2 +TOOLBAR "topbar" 0 0 0 2 BUTTON DLG_OK 10 2 BEGIN diff --git a/ve/ve0400.cpp b/ve/ve0400.cpp index b4cfa1150..005613bba 100755 --- a/ve/ve0400.cpp +++ b/ve/ve0400.cpp @@ -53,16 +53,16 @@ void TVendite_mask::get_printer_config(TString& config) const bool TVendite_mask::get_printer_name(TString& name) const { - TString config; get_printer_config(config); - TConfig ini(CONFIG_STAMPE, config); + TString parag; get_printer_config(parag); + TConfig ini(CONFIG_STAMPE, parag); name = ini.get("Name"); - return name.not_empty(); + return name.full(); } void TVendite_mask::reset_printer_config() const { - TString config; get_printer_config(config); - TConfig ini(CONFIG_STAMPE, config); + TString parag; get_printer_config(parag); + TConfig ini(CONFIG_STAMPE, parag); ini.remove_all(); } @@ -121,10 +121,8 @@ TVendite_mask::TVendite_mask(const char* name) : TAutomask(name) class TVendite_tabapp : public TTable_application { - - virtual const char * extra_modules() const {return "dt";} - protected: + virtual const char* extra_modules() const {return "dt";} virtual TMask* set_mask(TMask* m); virtual void add_anal_fields(TVendite_mask& vm); virtual void init_query_mode(TMask& m); @@ -132,6 +130,7 @@ protected: virtual int write(const TMask& m); virtual int rewrite(const TMask& m); virtual bool user_create(); + virtual bool get_next_key(TToken_string& key); void write_gmc(const TMask& m, TRectype& curr); static bool codgmc_handler(TMask_field& f, KEY k); @@ -255,6 +254,24 @@ void TVendite_tabapp::init_query_mode(TMask& m) } } +bool TVendite_tabapp::get_next_key(TToken_string& key) +{ + if (is_table("NAR")) + { + long n = 1; + TEdit_field& codice = curr_mask().efield(101); + TCursor& cur = *codice.browse()->cursor(); + if (cur.items() > 0) + { + cur = cur.items()-1; + n += cur.curr().get_long("CODTAB"); + } + key.format("101|%6ld", n); + return true; + } + return TTable_application::get_next_key(key); +} + int TVendite_tabapp::read(TMask& m) { int err = Tab_application::read(m); diff --git a/ve/ve0600.cpp b/ve/ve0600.cpp index c492e28f7..ff1c848b1 100755 --- a/ve/ve0600.cpp +++ b/ve/ve0600.cpp @@ -246,7 +246,7 @@ int ve0600(int argc, char* argv[]) else { TVE_tab_mod_app a; - a.run(argc, argv, TR("Tabelle module vendite")); + a.run(argc, argv, TR("Tabelle modulo vendite")); } return 0; } diff --git a/ve/vearea.men b/ve/vearea.men index f801e4605..abb3b341c 100755 --- a/ve/vearea.men +++ b/ve/vearea.men @@ -61,6 +61,7 @@ Item_14 = "Zone", "ba3 -0 ZON", "F" Item_15 = "Fatture da emettere/ricevere", "ve0 -6 &MRE", "F" Item_16 = "Conti ricavo dei materiali", "ve0 -6 &CMT", "F" Item_17 = "Sottocategorie CONAI", "ve0 -6 &SCC", "F" +Item_18 = "Note articolo", "ve0 -4 NAR", "F" [ACQVEN_005] Caption = "Tabelle contabili" diff --git a/ve/velib.h b/ve/velib.h index c9d0fc01f..2265b5349 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -1055,6 +1055,7 @@ public: bool is_calculated_page(int p) const { return _calculated_pages[p]; } TSmart_card* smartcard() const { return _smartcard;} + bool show_note_articolo(const TString& codart); short cdc_start() const { return _cdc_start;} short cdc_end() const { return _cdc_end;} @@ -1072,6 +1073,7 @@ public: TArray& color_rules() { return _color_rules; } void sel_color(); + bool gestione_note_per_articolo() const; TDocumento_mask(const char* tipodoc); virtual ~TDocumento_mask(); diff --git a/ve/velib06.cpp b/ve/velib06.cpp index 83e412056..6677c40ca 100755 --- a/ve/velib06.cpp +++ b/ve/velib06.cpp @@ -235,10 +235,9 @@ TDocumento_mask::TDocumento_mask(const char* td) hide(204); disable(204); - if (cfg.get_bool("GESLISCV")) + if (cfg.get_bool("GESLISCV") && id2pos(F_CODLIST) > 0) { TBrowse * b = efield(F_CODLIST).browse(); - if (b != NULL) { b->remove_input_field(); @@ -248,13 +247,15 @@ TDocumento_mask::TDocumento_mask(const char* td) b->add_input_field("\"\"", DOC_CODCF); b->add_input_field(TOSTRING(F_CODLIST), RCONDV_COD); } - b = efield(F_DESLIST).browse(); - if (b != NULL) - { - TString filter; - - filter << DOC_CATVEN << "==#" << F_CATVEN; - b->set_filter(filter); + if (id2pos(F_DESLIST) > 0) + { + b = efield(F_DESLIST).browse(); + if (b != NULL) + { + TString filter; + filter << DOC_CATVEN << "==#" << F_CATVEN; + b->set_filter(filter); + } } } @@ -264,10 +265,9 @@ TDocumento_mask::TDocumento_mask(const char* td) show(F_DESCONT, gescontr); enable(F_CODCONT, gescontr); enable(F_DESCONT, gescontr); - if (cfg.get_bool("GESCONCC")) + if (cfg.get_bool("GESCONCC") && id2pos(F_CODCONT) > 0) { TBrowse * b = efield(F_CODCONT).browse(); - if (b != NULL) { b->remove_input_field(); @@ -277,14 +277,16 @@ TDocumento_mask::TDocumento_mask(const char* td) b->add_input_field(TOSTRING(F_CODCF), RCONDV_CODCF, -1, true); b->add_input_field(TOSTRING(F_CODCONT), RCONDV_COD); } - b = efield(F_DESCONT).browse(); - if (b != NULL) - { - TString filter; - - filter << "(" << DOC_TIPOCF << "==#" << F_TIPOCF << ")&&(" << DOC_CODCF << "==#" << F_CODCF << ")"; - b->set_filter(filter); - } + if (id2pos(F_DESCONT) > 0) + { + b = efield(F_DESCONT).browse(); + if (b != NULL) + { + TString filter; + filter << "(" << DOC_TIPOCF << "==#" << F_TIPOCF << ")&&(" << DOC_CODCF << "==#" << F_CODCF << ")"; + b->set_filter(filter); + } + } } if (main_app().has_module(CUAUT)) @@ -444,6 +446,9 @@ TDocumento_mask::TDocumento_mask(const char* td) if (back != fore) c.set_colors(back, fore); } + + if (gestione_note_per_articolo()) + set_handler(F_NAR, nar_handler); } TDocumento_mask::~TDocumento_mask() @@ -1956,12 +1961,12 @@ bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key ) if (!selecting && m.is_running()) { const TRiga_documento& rdoc = doc[r + 1]; - TMask & riga_mask = ss.sheet_mask(); + TMask& riga_mask = ss.sheet_mask(); if (r < doc.physical_rows()) { m.update_giacenza(); - const TRectype& rdoc = doc[r + 1]; + const TRectype& rdoc = doc[r + 1]; set_curr_um(rdoc.get(RDOC_UMQTA)); const bool on = rdoc.get(RDOC_DACODNUM).full(); riga_mask.enable(DLG_USER, on); @@ -1978,6 +1983,9 @@ bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key ) ss.select(r, 1, false); selecting = false; } + + if (m.gestione_note_per_articolo()) + m.send_key(K_F8, F_NAR, &ss); } break; case K_CTRL + K_TAB: // uscita dalla riga @@ -4266,3 +4274,7 @@ void TDocumento_mask::sel_color() } } +bool TDocumento_mask::gestione_note_per_articolo() const +{ + return id2pos(F_NAR) > 0; +} diff --git a/ve/velib06a.cpp b/ve/velib06a.cpp index 30a3bfa30..870002d0d 100755 --- a/ve/velib06a.cpp +++ b/ve/velib06a.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -19,6 +20,7 @@ #include "sconti.h" #include "velib07.h" +#include "ve0100n.h" #include "../cg/cg2103.h" #include "../db/dblib.h" @@ -1569,14 +1571,15 @@ bool codart_handler(TMask_field& f, KEY key ) if (f.to_check(key, true)) { - if (!f.empty()) - row_mask.enable(FR_LIV1); - else + TEdit_field& liv1 = row_mask.efield(FR_LIV1); + if (f.empty()) { - row_mask.reset(FR_LIV1); - row_mask.disable(FR_LIV1); + liv1.reset(); + liv1.disable(); } - row_mask.field(FR_LIV1).on_hit(); + else + liv1.enable(); + liv1.on_hit(); } if (key == K_TAB && (f.focusdirty() || row_mask.get(FR_CHECKED).empty())) @@ -1764,6 +1767,9 @@ bool codart_handler(TMask_field& f, KEY key ) return error_box(TR("Articolo %s sospeso, quindi non movimentabile"), (const char *)codart); } } + + if (mask.gestione_note_per_articolo()) + mask.send_key(K_F8, F_NAR, &sh); } } else @@ -3031,3 +3037,297 @@ bool datafcomp_handler(TMask_field& f, KEY key) } return true; } + +/////////////////////////////////////////////////////////// +// Gestione note articolo +/////////////////////////////////////////////////////////// + +#if 0 && (_MSC_VER > 1300) // Dalla versione 10.x +#define NAR_TABLE "&VENAR" +#else // Versione 3.x +#define NAR_TABLE "NAR" +#endif + +class TNar_mask : public TAutomask +{ + static TMask* _doc_mask; + static char _tipocf; + static long _codcf; + static TString4 _tipodoc; + static TCodice_articolo _codart; + static bool nar_filter(const TRelation* rel); + +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + bool add_nota(const TRectype& curr, TSheet_field& sht); + +public: // virtual methods + virtual void open(); // : TMask : TWindow + virtual void close(); // : TMask : TWindow + +public: + void set_doc_mask(TMask& docmask) { _doc_mask = &docmask; } + bool show_note(); + TNar_mask(); +}; + +TMask* TNar_mask::_doc_mask = NULL; +char TNar_mask::_tipocf = ' '; +long TNar_mask::_codcf; +TString4 TNar_mask::_tipodoc; +TCodice_articolo TNar_mask::_codart; + +void TNar_mask::open() +{ + RCT rctd; xvt_vobj_get_client_rect(_doc_mask->win(), &rctd); + RCT rctn; xvt_vobj_get_client_rect(win(), &rctn); + const short dx = rctd.right - (rctn.right-rctn.left) - 4; + const short dy = 4; + xvt_rect_offset(&rctn, dx-rctn.left, dy-rctn.top); + xvt_vobj_move(win(), &rctn); + + TAutomask::open(); + _running = true; +} + +void TNar_mask::close() +{ + TAutomask::close(); + _running = false; +} + +bool TNar_mask::nar_filter(const TRelation* rel) +{ + const TString& codtab = rel->curr().get("S0"); + + const char r_tipocf = codtab[0]; // C/F + if (r_tipocf > ' ' && r_tipocf != _tipocf) // Considera solo le note cliente/fornitore compatibili + return false; + + const long r_codcf = atol(codtab.mid(1,6)); + if (r_codcf > 0 && r_codcf != _codcf) + return false; // Scarta i clienti diversi da quello sulla maschera + + TString4 r_tipod = codtab.mid(7, 4); + if (r_tipod.full()) + { + r_tipod.rtrim(); + if (r_tipod != _tipodoc) + return false; // Scarta i tipi documento diversi da quello sulla maschera + } + + const TString& codart = codtab.mid(11); + return codart.blank() || codart == _codart; +} + +bool TNar_mask::add_nota(const TRectype& curr, TSheet_field& sht) +{ + TToken_string nota; + char sn[4] = "S0"; + for (int s = 1; s <= 3; s++) + { + sn[1] = '0' + s; + const TString& esse = curr.get(sn); + if (esse.full()) + nota << esse << ' '; + } + const bool done = nota.full(); + if (done) + { + nota.strip_double_spaces(); + + TString8 tipo; + tipo << 'X' << nota.separator(); + if (atol(curr.get("S0").mid(1,6)) > 0) + tipo << 'C'; + if (curr.get("S0").mid(7,4).full()) + tipo << 'T'; + if (curr.get("S0").mid(11).full()) + tipo << 'A'; + tipo << nota.separator(); + nota.insert(tipo, 0); + const int n = sht.insert(-1, false, true); + sht.row(n) = nota; + sht.set_row_height(n, 2*CHARY); + } + + return done; +} + +static int notes_compare(TSheet_field& s, int r1, int r2) +{ + TToken_string order = "C|T|CT|A|CA|TA|CTA"; + const char* c1 = s.row(r1).get(1); + const char* c2 = s.row(r2).get(1); + const int i1 = order.get_pos(c1); + const int i2 = order.get_pos(c2); + int cmp = i1 - i2; + if (cmp == 0) + cmp = r1 - r2; + return cmp; +} + +bool TNar_mask::show_note() +{ + TSheet_field& ss = _doc_mask->sfield(F_SHEET); + const int sel = ss.selected(); + if (sel >= 0) + { + _tipocf = _doc_mask->get(F_TIPOCF)[0]; + _codcf = _doc_mask->get_long(F_CODCF); + _tipodoc = _doc_mask->get(F_TIPODOC); + _codart = ss.row(sel).get(ss.cid2index(FR_CODART)); + } + else + _codart.cut(0); + + close(); + if (_codart.full()) + { + TRelation rel(NAR_TABLE); + TCursor cur(&rel, "", 2); + cur.set_filterfunction(nar_filter); + + const TRecnotype items = cur.items(); + if (items > 0) + { + close(); + cur.freeze(); + const TRectype& curr = rel.curr(); + TSheet_field& sheet = sfield(N_NOTES); + sheet.destroy(); + for (cur = 0L; cur.pos() < items; ++cur) + add_nota(curr, sheet); + sheet.sort(notes_compare); + open(); + sheet.force_update(); + } + } + + return is_open(); +} + + +bool TNar_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch (o.dlg()) + { + case DLG_FINDREC: + if (e == fe_button) + { + TRelation rel(NAR_TABLE); + TCursor cur(&rel, "", 2); + TRectype& curr = rel.curr(); + bool update = false; + _tipocf = _doc_mask->get(F_TIPOCF)[0]; + _codcf = _doc_mask->get_long(F_CODCF); + _tipodoc = _doc_mask->get(F_TIPODOC); + _codart.cut(0); // Nessun codice articolo corrente + cur.set_filterfunction(nar_filter); + TCursor_sheet as(&cur, "CODTAB|S0[1,1]|S0[2,7]|S0[8,11]|S0[12,31]|S1", TR("Note articolo"), + HR("Codice Nota@20|C/F|Codice|Tipo|Articolo@20|Note@50"), 0x3, 1, parent()); + switch (as.run()) + { + case K_ENTER: + cur = as.selected(); + update = true; + break; + case K_CTRL+'G': + cur = as.selected(); + update = curr.edit(); + if (update) + cur = as.selected(); // Aggiorna valori editati esternamente + break; + case K_INS: + rel.file().zero(); // Usa azzeramento avanzato che funziona anche per tabelle di modulo + curr.edit(); + break; + default: + break; + } + + if (update) + { + TSheet_field& ns = sfield(N_NOTES); // Sheet delle note articolo + ns.destroy(); + if (add_nota(curr, ns)) + { + ns.force_update(); + open(); + } + } + } + break; + case DLG_NEWREC: + if (e == fe_button) + { + TRelation rel(NAR_TABLE); // Lascio a rel l'onere di decidere se TAB o TABMOD + rel.curr().edit(); + } + break; + case DLG_SAVEREC: + if (e == fe_button) + { + TSheet_field& ns = sfield(N_NOTES); // Sheet delle note articolo + TString note; + FOR_EACH_SHEET_ROW(ns, n, row) if (row->get_char(0) > ' ') // For each checked row + note << row->get(2) << '\n'; + if (note.full()) + { + const TString4 tiporiga = _doc_mask->get(F_LBTIPORIGA); // Memorizza tipo riga + _doc_mask->set(F_LBTIPORIGA, "05"); // Impone riga descrizione + TSheet_field& ss = _doc_mask->sfield(F_SHEET); // Sheet delle righe documento + int i = ss.selected() + (get(N_WHERE)=="A" ? 1 : 0); // Inserisci prima o dopo? + i = ss.insert(i, false, true); // Crea nuova riga descrizione + ss.row(i).add(note.trim(), ss.cid2index(FR_DESCR)); // Copia descrizione dal memo + ss.force_update(); // Aggiorna sheet + _doc_mask->set(F_LBTIPORIGA, tiporiga); // Ripristina tipo riga + } + } + break; + default: + if (e == fe_button && is_open()) + close(); + break; + } + return true; +} + +TNar_mask::TNar_mask() : TAutomask("ve0100n") +{ + _doc_mask = NULL; +} + +bool nar_handler(TMask_field& f, KEY key) +{ + static TNar_mask* nw = NULL; + + switch (key) + { + case K_SPACE: + if (nw == NULL) + nw = new TNar_mask; + nw->set_doc_mask(f.mask()); + nw->open(); + break; + case K_ESC: + case K_ENTER: + if (nw != NULL && nw->is_open()) + nw->close(); + break; + case K_F8: + if (xvt_vobj_is_focusable(f.parent())) + { + if (nw == NULL) + { + nw = new TNar_mask; + nw->set_doc_mask(f.mask()); + } + nw->show_note(); + } + break; + default: + break; + } + return true; +} diff --git a/ve/vepriv.h b/ve/vepriv.h index 8cdef30ed..2c195d496 100755 --- a/ve/vepriv.h +++ b/ve/vepriv.h @@ -44,6 +44,7 @@ bool codcms_handler(TMask_field &f, KEY key); bool numdocrif_hndl(TMask_field& field, KEY key); bool smart_hndl(TMask_field& field, KEY key); bool fido_hndl(TMask_field& field, KEY key); +bool nar_handler(TMask_field& f, KEY key); bool tipodoc_ok(const TString & tipodoc); diff --git a/ve/verig09.ini b/ve/verig09.ini index 2c7ec6610..9e05f68e3 100755 --- a/ve/verig09.ini +++ b/ve/verig09.ini @@ -2,8 +2,8 @@ [MAIN] CALCOLI=* CAMPICALC= -IMPONIBILE=IMPNN +IMPONIBILE=IMPNS [HANDLERS] -NHANDLER = 0 +NHANDLER = 0 diff --git a/ve/vetbnar.h b/ve/vetbnar.h new file mode 100755 index 000000000..ad968aac3 --- /dev/null +++ b/ve/vetbnar.h @@ -0,0 +1,14 @@ +#define F_CODICE 101 + +#define F_TIPOCF 201 +#define F_CLIFO 202 +#define F_TIPO 203 +#define F_ARTICOLO 204 + +#define F_RAGSOC 212 +#define F_DESCTIPO 213 +#define F_DESCART 214 + +#define F_DESCR1 301 +#define F_DESCR2 302 +#define F_DESCR3 303 diff --git a/ve/vetbnar.uml b/ve/vetbnar.uml new file mode 100755 index 000000000..786bbf311 --- /dev/null +++ b/ve/vetbnar.uml @@ -0,0 +1,142 @@ +#include "vetbnar.h" + +TOOLBAR "Toolbar" 0 0 0 2 + +#include + +ENDPAGE + +PAGE "Note articoli " 0 2 0 0 + +NUMBER F_CODICE 6 +BEGIN + PROMPT 1 1 "Codice nota " + FLAGS "Z" + USE NAR + INPUT CODTAB F_CODICE + DISPLAY "Codice@6" CODTAB + DISPLAY "C/F" S0[1,1] + DISPLAY "Codice" S0[2,7] + DISPLAY "Tipo" S0[8,11] + DISPLAY "Articolo@20" S0[12,31] + DISPLAY "Note@50" S1 + OUTPUT F_CODICE CODTAB + CHECKTYPE REQUIRED + FIELD CODTAB + KEY 1 +END + +LIST F_TIPOCF 1 10 +BEGIN + PROMPT 1 3 "" + ITEM "|" MESSAGE CLEAR, F_CLIFO|CLEAR, F_RAGSOC + ITEM "C|Cliente" MESSAGE ENABLE,F_CLIFO|ENABLE,F_RAGSOC + ITEM "F|Fornitore" MESSAGE ENABLE,F_CLIFO|ENABLE,F_RAGSOC + FIELD S0[1,1] +END + +NUMBER F_CLIFO 6 +BEGIN + PROMPT 15 3 "" + USE LF_CLIFO + INPUT TIPOCF F_TIPOCF SELECT + INPUT CODCF F_CLIFO + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + OUTPUT F_CLIFO CODCF + OUTPUT F_RAGSOC RAGSOC + CHECKTYPE NORMAL + FIELD S0[2,7] + FLAGS "Z" +END + +STRINGA F_TIPO 4 +BEGIN + PROMPT 1 5 "Tipo documento " + USE %TIP + INPUT CODTAB F_TIPO + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_TIPO CODTAB + OUTPUT F_DESCTIPO S0 + CHECKTYPE NORMAL + FIELD S0[8,11] +END + +STRING F_ARTICOLO 20 +BEGIN + PROMPT 1 7 "Articolo " + FIELD S0[12,31] + USE ANAMAG + INPUT CODART F_ARTICOLO + DISPLAY "Codice@20" CODART + DISPLAY "Descrizione@50" DESCR + OUTPUT F_ARTICOLO CODART + OUTPUT F_DESCART DESCR + CHECKTYPE NORMAL + VALIDATE ONEREQ_FUNC 3 F_CLIFO F_TIPO F_ARTICOLO + WARNING "Inserire almeno un dato a scelta tra: codice cliente/fornitore; tipo documento; codice articolo" +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 26 3 "" + USE LF_CLIFO KEY 2 + INPUT TIPOCF F_TIPOCF SELECT + INPUT RAGSOC F_RAGSOC + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + COPY OUTPUT F_CLIFO + CHECKTYPE NORMAL +END + +STRING F_DESCTIPO 50 +BEGIN + PROMPT 26 5 "" + USE %TIP KEY 2 + INPUT S0 F_DESCTIPO + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_TIPO + CHECKTYPE NORMAL +END + +STRING F_DESCART 50 +BEGIN + PROMPT 15 8 "" + USE ANAMAG KEY 2 + INPUT DESCR F_DESCART + DISPLAY "Descrizione@50" DESCR + DISPLAY "Codice@20" CODART + COPY OUTPUT F_ARTICOLO + CHECKTYPE NORMAL +END + +GROUPBOX DLG_NULL 78 5 +BEGIN + PROMPT 1 10 "@bNote" +END + +STRING F_DESCR1 50 +BEGIN + PROMPT 15 11 "" + FIELD S1 + CHECKTYPE REQUIRED +END + +STRING F_DESCR2 50 +BEGIN + PROMPT 15 12 "" + FIELD S2 +END + +STRING F_DESCR3 50 +BEGIN + PROMPT 15 13 "" + FIELD S3 +END + +ENDPAGE + +ENDMASK + diff --git a/ve/veuml.h b/ve/veuml.h index cd3052611..2ff072d85 100755 --- a/ve/veuml.h +++ b/ve/veuml.h @@ -127,6 +127,8 @@ #define F_DATAFCOMP 292 //#define F_SELECT 101 +#define F_NAR 299 + //scontrini #define DLG_CHIUDI 401 #define DLG_TURNO 402