Patch level : 4.0 911
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.2 1010 git-svn-id: svn://10.65.10.50/trunk@16373 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
3eb5b833d7
commit
9e26e4d527
@ -1,5 +1,5 @@
|
||||
1001
|
||||
101
|
||||
100
|
||||
I5CDEP|1|3|0|CODICE DEPOSITO
|
||||
I5CCLI|3|6|0|CODICE CLIENTE
|
||||
I5FLCO|1|1|0|FLAG CLIENTE CORRISPETTIVO
|
||||
@ -100,6 +100,5 @@ I5FELA|1|1|0|ELABORATO
|
||||
I5CNOS|1|2|0|COD.NUM. DOCUMENTO SPED.
|
||||
I5NDOS|3|7|0|NUMERO DOCUMENTO SPED.
|
||||
I5UDOS|3|8|0|DATA DOCUMENTO SPED.
|
||||
I5AREA|1|100|0|AREA PERSONALIZZABILE
|
||||
1
|
||||
I5TDO1+I5CNMV+I5NDOC|
|
||||
|
@ -1,5 +1,5 @@
|
||||
1003
|
||||
101
|
||||
100
|
||||
I5CDEP|1|3|0|CODICE DEPOSITO
|
||||
I5CCLI|3|6|0|CODICE CLIENTE
|
||||
I5FLCO|1|1|0|FLAG CLIENTE CORRISPETTIVO
|
||||
@ -100,6 +100,5 @@ I5FELA|1|1|0|ELABORATO
|
||||
I5CNOS|1|2|0|COD.NUM. DOCUMENTO SPED.
|
||||
I5NDOS|3|7|0|NUMERO DOCUMENTO SPED.
|
||||
I5UDOS|3|8|0|DATA DOCUMENTO SPED.
|
||||
I5AREA|1|100|0|AREA PERSONALIZZABILE
|
||||
1
|
||||
I5TDO1+I5CNMV+I5NDOC|
|
||||
|
@ -138,13 +138,21 @@ END
|
||||
|
||||
BUTTON DLG_PRINT 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 "~Stampa"
|
||||
PROMPT -13 -1 "~Stampa"
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_EMAIL 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 "~Mail"
|
||||
PICTURE BMP_EMAIL
|
||||
MESSAGE EXIT,77
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include <applicat.h>
|
||||
#include <reputils.h>
|
||||
#include <recset.h>
|
||||
#include <reprint.h>
|
||||
#include <progind.h>
|
||||
#include <defmask.h>
|
||||
|
@ -1,8 +1,7 @@
|
||||
#include <applicat.h>
|
||||
#include <mask.h>
|
||||
#include <progind.h>
|
||||
|
||||
#include "velib04.h"
|
||||
#include "ve6200.h"
|
||||
#include "ve6200a.h"
|
||||
|
||||
#include <doc.h>
|
||||
@ -299,20 +298,6 @@ int TLista_clifo::add(long cod)
|
||||
// TFatturazione_bolle_app
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TFatturazione_bolle_app : public TSkeleton_application
|
||||
{
|
||||
TString4 _default_selection;
|
||||
|
||||
protected:
|
||||
virtual bool create();
|
||||
virtual void main_loop();
|
||||
|
||||
bool process(TIndwin& iw, TFatturazione_bolle& eld, TLista_documenti& din, const TDate& data_elab);
|
||||
void process_by_cli(const TMask& m);
|
||||
void process_by_ragsoc(const TMask& m);
|
||||
void process_by_doc(const TMask& m);
|
||||
};
|
||||
|
||||
bool TFatturazione_bolle_app::create()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_OCCAS, LF_INDSP, LF_CFVEN,
|
||||
@ -325,7 +310,7 @@ bool TFatturazione_bolle_app::create()
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
bool TFatturazione_bolle_app::process(TIndwin& iw, TFatturazione_bolle& eld,
|
||||
bool TFatturazione_bolle_app::process(TIndwin& iw, TElaborazione & eld,
|
||||
TLista_documenti& din, const TDate& data_elab)
|
||||
{
|
||||
// Crea documenti di output
|
||||
@ -378,7 +363,8 @@ void TFatturazione_bolle_app::process_by_cli(const TMask& m)
|
||||
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
|
||||
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
|
||||
|
||||
TFatturazione_bolle eld(m.get(F_CODICE_ELAB));
|
||||
TElaborazione * e = elab(m.get(F_CODICE_ELAB));
|
||||
TElaborazione & eld = *e;
|
||||
TToken_string tipidoc(24), statidoc(10);
|
||||
eld.tipi_validi(tipidoc);
|
||||
eld.stati_validi(statidoc);
|
||||
@ -406,6 +392,7 @@ void TFatturazione_bolle_app::process_by_cli(const TMask& m)
|
||||
break;
|
||||
}
|
||||
}
|
||||
delete e;
|
||||
}
|
||||
|
||||
void TFatturazione_bolle_app::process_by_ragsoc(const TMask& m)
|
||||
@ -429,7 +416,8 @@ void TFatturazione_bolle_app::process_by_ragsoc(const TMask& m)
|
||||
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
|
||||
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
|
||||
|
||||
TFatturazione_bolle eld(m.get(F_CODICE_ELAB));
|
||||
TElaborazione * e = elab(m.get(F_CODICE_ELAB));
|
||||
TElaborazione & eld = *e;
|
||||
TToken_string tipidoc(24), statidoc(10);
|
||||
eld.tipi_validi(tipidoc);
|
||||
eld.stati_validi(statidoc);
|
||||
@ -457,6 +445,8 @@ void TFatturazione_bolle_app::process_by_ragsoc(const TMask& m)
|
||||
break;
|
||||
}
|
||||
}
|
||||
delete e;
|
||||
|
||||
}
|
||||
|
||||
void TFatturazione_bolle_app::process_by_doc(const TMask& m)
|
||||
@ -481,7 +471,8 @@ void TFatturazione_bolle_app::process_by_doc(const TMask& m)
|
||||
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
|
||||
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
|
||||
|
||||
TFatturazione_bolle eld(m.get(F_CODICE_ELAB));
|
||||
TElaborazione * e = elab(m.get(F_CODICE_ELAB));
|
||||
TElaborazione & eld = *e;
|
||||
TToken_string tipidoc(24), statidoc(10);
|
||||
eld.tipi_validi(tipidoc);
|
||||
eld.stati_validi(statidoc);
|
||||
@ -530,6 +521,7 @@ void TFatturazione_bolle_app::process_by_doc(const TMask& m)
|
||||
break;
|
||||
}
|
||||
}
|
||||
delete e;
|
||||
}
|
||||
|
||||
void TFatturazione_bolle_app::main_loop()
|
||||
|
26
ve/ve6200.h
Executable file
26
ve/ve6200.h
Executable file
@ -0,0 +1,26 @@
|
||||
#ifndef __APPLICATION_H
|
||||
#include <applicat.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MASK_H
|
||||
#include <mask.h>
|
||||
#endif
|
||||
|
||||
#include "velib.h"
|
||||
|
||||
class TFatturazione_bolle_app : public TSkeleton_application
|
||||
{
|
||||
TString4 _default_selection;
|
||||
|
||||
protected:
|
||||
virtual bool create();
|
||||
virtual void main_loop();
|
||||
virtual TFatturazione_bolle * elab(const TString & cod) const { return new TFatturazione_bolle(cod);}
|
||||
|
||||
|
||||
bool process(TIndwin& iw, TElaborazione & eld, TLista_documenti& din, const TDate& data_elab);
|
||||
void process_by_cli(const TMask& m);
|
||||
void process_by_ragsoc(const TMask& m);
|
||||
void process_by_doc(const TMask& m);
|
||||
};
|
||||
|
@ -308,12 +308,11 @@ void TPenna_app::check_doc() //definizione della me
|
||||
TCheck_mask m; //istanza di TPenna_mask con il nome m (perche'ho chiamato una maschera)
|
||||
if(m.run()==K_ENTER)
|
||||
{
|
||||
TConfig ini(_ini_name, "Main"); //apre il file su cui scrivere
|
||||
TConfig ini(_ini_name, "Transaction"); //apre il file su cui scrivere
|
||||
//chiamo il nome del file F_FILE che abbiamo scelto con la maschera; get
|
||||
//legge una stringa
|
||||
TRecord_cache c(LF_CODCORR, 2);
|
||||
|
||||
ini.set("Result", "SUCCESS"); //comunica al chiamante il successo della transazione
|
||||
|
||||
const TFilename nomefile = m.get(F_FILE); //assegno alla variabile nomefile la stringa letta con m.get(F_FILE);
|
||||
//nomefile é una variabile di tipo TFilename
|
||||
@ -371,6 +370,7 @@ void TPenna_app::check_doc() //definizione della me
|
||||
{
|
||||
bool found = false;
|
||||
TString codice = articolocor.get(fcod);
|
||||
TString codicecorr;
|
||||
const real qta(articolocor.get(fqta));
|
||||
TString16 mag;
|
||||
|
||||
@ -378,7 +378,7 @@ void TPenna_app::check_doc() //definizione della me
|
||||
const TRectype & codcorr = c.get(codice);
|
||||
|
||||
if (!codcorr.empty())
|
||||
codice = codcorr.get("CODART");
|
||||
codicecorr = codcorr.get("CODART");
|
||||
|
||||
if (fmag >= 0)
|
||||
mag = articolocor.get(fmag);
|
||||
@ -387,7 +387,7 @@ void TPenna_app::check_doc() //definizione della me
|
||||
TRiga_documento & row = d[r];
|
||||
const TString & rowcod = row.get(RDOC_CODART);
|
||||
|
||||
if (codice == rowcod)
|
||||
if ((codice == rowcod) ||(codicecorr == rowcod))
|
||||
{
|
||||
if (mag.blank() || mag == row.get(RDOC_CODMAG))
|
||||
{
|
||||
@ -404,16 +404,30 @@ void TPenna_app::check_doc() //definizione della me
|
||||
row.put(RDOC_CODART, codice);
|
||||
row.put(RDOC_CODARTMAG, codice);
|
||||
row.put(RDOC_CODMAG, mag);
|
||||
row.put(RDOC_DESCR, cache().get(LF_ANAMAG, codice, ANAMAG_DESCR));
|
||||
row.put(RDOC_QTAGG1, qta);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
articoli.close();
|
||||
const int rows = d.physical_rows();
|
||||
bool doc_different = false;
|
||||
|
||||
for (int r = rows; !doc_different && r > 0; r--)
|
||||
{
|
||||
TRiga_documento & row = d[r];
|
||||
const real qta1 = row.get_real(RDOC_QTAGG1);
|
||||
|
||||
doc_different = row.get_real(RDOC_QTA) != qta1;
|
||||
}
|
||||
|
||||
TReport rep;
|
||||
TReport_book book;
|
||||
|
||||
ini.set("Result", "SUCCESS", "Transaction"); //comunica al chiamante il successo della transazione
|
||||
if (doc_different)
|
||||
{
|
||||
if (rep.load("ve6500a"))
|
||||
{
|
||||
const TString query(rep.recordset()->query_text());
|
||||
@ -422,10 +436,47 @@ void TPenna_app::check_doc() //definizione della me
|
||||
book.add(rep);
|
||||
if (book.pages() > 0)
|
||||
book.print_or_preview();
|
||||
xvt_fsys_removefile(nomefile);
|
||||
for (int r = rows; r > 0; r--)
|
||||
{
|
||||
TRiga_documento & row = d[r];
|
||||
const real qta1 = row.get_real(RDOC_QTAGG1);
|
||||
|
||||
if (qta1 == ZERO)
|
||||
d.destroy_row(r, true);
|
||||
else
|
||||
{
|
||||
if (row.get_real(RDOC_QTA) != qta1)
|
||||
row.put(RDOC_QTA, qta1);
|
||||
row.zero(RDOC_QTAGG1);
|
||||
}
|
||||
}
|
||||
if (yesno_box("Si desidera aggiornare il documento\ncon la lettura da terminale"))
|
||||
{
|
||||
const int rows = d.rows();
|
||||
const int items = TRectype(LF_RIGHEDOC).items();
|
||||
for (int r = 1; r <= rows; r++)
|
||||
{
|
||||
const TRiga_documento & row = d[r];
|
||||
para.format("%d,%d", LF_RIGHEDOC, r); // scrive i due numeri (%d) separati dalla , con format (che formatta
|
||||
// la stringa para con il formato specificato tra " ")
|
||||
ini.set_paragraph(para); // sposta il cursore sulla nuova para (nuovo valore)
|
||||
|
||||
for (int f = 0; f < items; f++)
|
||||
{
|
||||
const char * name = row.fieldname(f);
|
||||
const TString & val = row.get(name);
|
||||
|
||||
ini.set(name, val); // scrive il codice sul file ini
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
ini.set("Result", "ERROR", "Transaction"); //comunica al chiamante l'insuccesso della transazione
|
||||
}
|
||||
else
|
||||
error_box("Non posso leggere il report ve6500.rep");
|
||||
}
|
||||
xvt_fsys_removefile(nomefile);
|
||||
|
||||
}
|
||||
}
|
||||
@ -435,7 +486,7 @@ void TPenna_app::load_doc() //definizione della me
|
||||
TPenna_mask m; //istanza di TPenna_mask con il nome m (perche'ho chiamato una maschera)
|
||||
if(m.run()==K_ENTER)
|
||||
{
|
||||
TConfig ini(_ini_name, "Main"); //apre il file su cui scrivere
|
||||
TConfig ini(_ini_name, "Transaction"); //apre il file su cui scrivere
|
||||
//chiamo il nome del file F_FILE che abbiamo scelto con la maschera; get
|
||||
//legge una stringa
|
||||
ini.set("Result", "SUCCESS"); //comunica al chiamante il successo della transazione
|
||||
@ -462,7 +513,7 @@ void TPenna_app::load_doc() //definizione della me
|
||||
TEsercizi_contabili esc; //crea un oggetto esc di tipo TEsercizi_contabili
|
||||
TString16 annoes;
|
||||
annoes.format("%04d", esc.date2esc(datadoc)); //crea un intero lungo 4 riempito di 0 all'inizio
|
||||
TString16 codmag = m.get(F_MAG); // setta codmag in base al valore della maschera
|
||||
TString8 codmag = m.get(F_MAG); // setta codmag in base al valore della maschera
|
||||
codmag.left_just(3) << m.get(F_DEP); // attacca a codmag il F_DEP, codice deposito dalla maschera
|
||||
|
||||
|
||||
|
@ -15,6 +15,7 @@ Item_09 = "Configurazione", [ACQVEN_020]
|
||||
Item_10 = "Importazione documenti STORE", <dtmenu.men>
|
||||
Item_11 = "Trasferimento PACK", <tpmenu.men>
|
||||
Item_12 = "Vendita al dettaglio", <vdmenu.men>, "E"
|
||||
Item_13 = "Gestione cooperative", <comenu.men>, "E"
|
||||
|
||||
[ACQVEN_001]
|
||||
Caption = "Archivi e tabelle di base"
|
||||
|
@ -222,6 +222,7 @@ class TTipo_documento : public TRectype // velib03
|
||||
TString16 _totale_cont;
|
||||
TString16 _field_prezzo;
|
||||
TString16 _field_qta, _field_qtaevasa; // Veri campi Quantità e Quantità Evasa
|
||||
TString16 _raee_cod, _raee_fld;
|
||||
TString _str_desc_doc, _str_desc_rdoc;
|
||||
|
||||
char _tipocf;
|
||||
@ -264,6 +265,8 @@ public:
|
||||
bool check_giac() const { return _check_qta == 'G'; }
|
||||
bool check_disp() const { return _check_qta == 'D'; }
|
||||
bool load_cont() const { return _load_cont; }
|
||||
const TString& raee_cod() const { return _raee_cod; }
|
||||
const TString& raee_fld() const { return _raee_fld; }
|
||||
|
||||
const TString & descrizione() const { return get("S0"); }
|
||||
const TString & riferimento(const TDocumento& doc, TString& rif) const;
|
||||
@ -651,7 +654,8 @@ protected:
|
||||
void init();
|
||||
void check_modules();
|
||||
virtual void set_variables(TExpression * e) const ;
|
||||
int set_row_ids();
|
||||
void update_raee();
|
||||
int set_row_ids();
|
||||
|
||||
public:
|
||||
long renum_ndoc(long numdoc = 0);
|
||||
@ -847,6 +851,7 @@ public:
|
||||
static bool universal_handler( TMask_field& f, KEY key);
|
||||
static bool occas_handler( TMask_field& f, KEY key );
|
||||
static bool occas_code_handler( TMask_field& f, KEY key );
|
||||
static bool occas_cfpi_handler( TMask_field& f, KEY key );
|
||||
static bool clifo_handler( TMask_field& f, KEY key );
|
||||
static bool print_handler( TMask_field& f, KEY key );
|
||||
static bool elabora_handler( TMask_field& f, KEY key );
|
||||
|
125
ve/velib03.cpp
125
ve/velib03.cpp
@ -270,7 +270,7 @@ real TDocumento::spese_incasso(real & imp, int ndec, TTipo_importo t) const
|
||||
{
|
||||
if (ndec == AUTO_DECIMALS)
|
||||
ndec = decimals();
|
||||
if (spese_inc.objptr(_rim_dir) == NULL)
|
||||
if (spese_inc.objptr(_rim_dir) == NULL) // Inizializzo le spese d'incasso se necessario
|
||||
{
|
||||
TConfig conf(CONFIG_STUDIO, "ve");
|
||||
for (TTipo_pag p = _rim_dir; p < _nessun_pag; p = TTipo_pag((int)p + 1))
|
||||
@ -755,7 +755,7 @@ void TDocumento::set_riga_sconto()
|
||||
{
|
||||
if (_sconto == NULL)
|
||||
{
|
||||
static TString16 _tipo_riga_sc;
|
||||
static TString4 _tipo_riga_sc;
|
||||
if (_tipo_riga_sc.empty())
|
||||
{
|
||||
TConfig conf(CONFIG_STUDIO, "ve");
|
||||
@ -765,13 +765,13 @@ void TDocumento::set_riga_sconto()
|
||||
{
|
||||
_tipo_riga_sc = "08";
|
||||
conf.set("TRSCONTI", _tipo_riga_sc);
|
||||
warning_box("Il tipo riga sconti di testa non risultava impostato.\n L'applicazione usera' automaticamente il tipo %s", (const char*) _tipo_riga_sc);
|
||||
warning_box(FR("Il tipo riga sconti di testa non risultava impostato.\n L'applicazione usera' automaticamente il tipo %s"), (const char*) _tipo_riga_sc);
|
||||
}
|
||||
}
|
||||
_sconto = new TRiga_documento(this, _tipo_riga_sc);
|
||||
_sconto->put("DESCR","Sconto");
|
||||
_sconto->put(RDOC_DESCR, TR("Sconto"));
|
||||
}
|
||||
_sconto->put("SCONTO", sconto);
|
||||
_sconto->put(RDOC_SCONTO, sconto);
|
||||
}
|
||||
}
|
||||
|
||||
@ -881,11 +881,12 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
||||
{
|
||||
if (tipo().spese_aut() && !get_bool(DOC_SPESEUPD))
|
||||
{
|
||||
char name[8] = "CODSP0";
|
||||
TString_array spese;
|
||||
const TRectype & ven_rec = clifor().vendite();
|
||||
for (int i = 1; i <= 4; i++)
|
||||
{
|
||||
TString8 name; name.format("CODSP%d", i);
|
||||
name[5] = '0' + i;
|
||||
const TString& s = ven_rec.get(name);
|
||||
if (s.full())
|
||||
spese.add(s);
|
||||
@ -893,6 +894,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
||||
myself.update_spese_aut(spese);
|
||||
}
|
||||
myself.update_conai();
|
||||
myself.update_raee();
|
||||
myself.set_row_ids();
|
||||
|
||||
const bool check_movmag = dongle().active(MGAUT) && tipo().mov_mag();
|
||||
@ -2186,6 +2188,14 @@ void TDocumento::put_str(const char* fieldname, const char* val)
|
||||
dirty_fields();
|
||||
}
|
||||
else
|
||||
if (strcmp(fieldname, DOC_CODCF) == 0)
|
||||
{
|
||||
const TString16 v(val);
|
||||
put("SPESEUPD", TRectype::get(DOC_CODCF) == v);
|
||||
TAuto_variable_rectype::put_str(fieldname, v);
|
||||
dirty_fields();
|
||||
}
|
||||
else
|
||||
{
|
||||
TAuto_variable_rectype::put_str(fieldname, val);
|
||||
dirty_fields();
|
||||
@ -2204,9 +2214,9 @@ const TString& TDocumento::get_str(const char* fieldname) const
|
||||
|
||||
void TDocumento::zero(const char * fieldname)
|
||||
{
|
||||
if (strcmp(fieldname, "TIPODOC") == 0)
|
||||
if (strcmp(fieldname, DOC_TIPODOC) == 0)
|
||||
reset_fields(*this);
|
||||
TRectype::zero(fieldname);
|
||||
TAuto_variable_rectype::zero(fieldname);
|
||||
dirty_fields();
|
||||
}
|
||||
|
||||
@ -2315,6 +2325,96 @@ TRecord_array& TDocumento::body(int logicnum) const
|
||||
return r;
|
||||
}
|
||||
|
||||
void TDocumento::update_raee()
|
||||
{
|
||||
const TString & r_cod = tipo().raee_cod();
|
||||
const TString & r_fld = tipo().raee_fld();
|
||||
|
||||
if (r_cod.full() && r_fld.full())
|
||||
{
|
||||
TSpesa_prest sp(r_cod);
|
||||
TString4 cod_iva_cli;
|
||||
TLocalisamfile cfven(LF_CFVEN);
|
||||
cfven.put("TIPOCF", get("TIPOCF"));
|
||||
cfven.put("CODCF", get("CODCF"));
|
||||
if (cfven.read() == NOERR)
|
||||
cod_iva_cli = cfven.get("ASSFIS");
|
||||
int nrows = physical_rows();
|
||||
int i;
|
||||
TArticolo art;
|
||||
|
||||
for (i = nrows; i > 0; i--)
|
||||
{
|
||||
TRiga_documento & r = row(i);
|
||||
|
||||
if (r.tipo().tipo() == RIGA_SPESEDOC && r.is_generata() && r.get("GENTIPO") == "R")
|
||||
destroy_row(i, true);
|
||||
}
|
||||
nrows = physical_rows();
|
||||
for (i = nrows; i > 0; i--)
|
||||
{
|
||||
TRiga_documento & r = row(i);
|
||||
|
||||
if (r.is_articolo())
|
||||
{
|
||||
const TString & codart = r.get(RDOC_CODARTMAG);
|
||||
|
||||
art.read(codart);
|
||||
real tax = art.get_real(r_fld);
|
||||
|
||||
if (tax != ZERO)
|
||||
{
|
||||
const TCurrency_documento val(tax, *this, true);
|
||||
TString16 t(sp.tipo_riga());
|
||||
TRiga_documento & r1 = insert_row(i + 1, t);
|
||||
|
||||
copy_data(r1, r);
|
||||
r1.set_tipo(t);
|
||||
r1.put(RDOC_CODART, r_cod);
|
||||
TString d(sp.descrizione());
|
||||
|
||||
if (d.full())
|
||||
d << " - ";
|
||||
d << r1.get(RDOC_DESCR);
|
||||
d << r1.get(RDOC_DESCEST);
|
||||
r1.put(RDOC_DESCR, d.left(50));
|
||||
if (d.len() > 50)
|
||||
{
|
||||
r1.put(RDOC_DESCLUNGA, "X");
|
||||
r1.put(RDOC_DESCEST, d.mid(50));
|
||||
}
|
||||
else
|
||||
{
|
||||
r1.zero(RDOC_DESCLUNGA);
|
||||
r1.zero(RDOC_DESCEST);
|
||||
}
|
||||
const TString & um = sp.um();
|
||||
|
||||
if (um.full())
|
||||
r1.put(RDOC_UMQTA, um);
|
||||
if (cod_iva_cli.blank())
|
||||
{
|
||||
const TString & codiva = sp.cod_iva();
|
||||
if (codiva.full())
|
||||
r1.put(RDOC_CODIVA, codiva);
|
||||
}
|
||||
else
|
||||
r1.put(RDOC_CODIVA, cod_iva_cli);
|
||||
tax = val.get_num();
|
||||
r1.put(RDOC_PREZZO, tax);
|
||||
if (tipo().calcolo_lordo())
|
||||
{
|
||||
tax = r1.iva().lordo(tax, ALL_DECIMALS);
|
||||
r1.put(RDOC_PREZZOL, tax);
|
||||
}
|
||||
r1.generata();
|
||||
r1.put("GENTIPO", "R");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old, TSheet_field * sh)
|
||||
{
|
||||
const bool updated = get_bool("SPESEUPD");
|
||||
@ -2366,6 +2466,10 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old,
|
||||
riga.put(RDOC_CODART, s);
|
||||
riga.generata();
|
||||
riga.put(RDOC_DESCR, sp.descrizione());
|
||||
if (cod_iva_cli.blank())
|
||||
riga.put(RDOC_CODIVA, sp.cod_iva());
|
||||
else
|
||||
riga.put(RDOC_CODIVA, cod_iva_cli);
|
||||
switch (sp.tipo())
|
||||
{
|
||||
case 'Q':
|
||||
@ -2385,7 +2489,10 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old,
|
||||
|
||||
sppr_calc(sp, valuta, cambio, prezzo, controeuro);
|
||||
if (this->tipo().calcolo_lordo())
|
||||
{
|
||||
prezzo = riga.iva().lordo(prezzo, ALL_DECIMALS);
|
||||
riga.put(RDOC_PREZZOL, prezzo);
|
||||
}
|
||||
riga.put(RDOC_PREZZO, prezzo);
|
||||
riga.put(RDOC_UMQTA, sp.um());
|
||||
}
|
||||
@ -2653,4 +2760,4 @@ int TDocumento::tipo_riclassificato() const
|
||||
tipo_riclassificato = TTipo_documento::_fattura;
|
||||
}
|
||||
return tipo_riclassificato;
|
||||
}
|
||||
}
|
||||
|
@ -266,7 +266,7 @@ void TTipo_documento::add_formula_if_needed(TConfig& profile, TString& variable,
|
||||
const char* varname, const char* formula)
|
||||
{
|
||||
variable = profile.get(varname, "MAIN");
|
||||
if (variable.empty())
|
||||
if (variable.blank())
|
||||
variable = varname;
|
||||
const TRectype& trr = cache().get("%FRD", variable);
|
||||
if (trr.empty() || trr.get("S1").empty())
|
||||
@ -336,6 +336,8 @@ void TTipo_documento::read_formule()
|
||||
_field_qtaevasa = prof.get(RDOC_QTAEVASA, NULL, -1, RDOC_QTAEVASA);
|
||||
_check_qta = prof.get_char("CHECK_QTA", "MAIN");
|
||||
_load_cont = prof.get_bool("LOAD_CONT", "MAIN");
|
||||
_raee_cod = prof.get("RAEE_COD", "MAIN");
|
||||
_raee_fld = prof.get("RAEE_FLD", "MAIN");
|
||||
|
||||
_str_desc_doc = prof.get("DESCRIZIONE_DOC");
|
||||
_str_desc_rdoc = prof.get("DESCRIZIONE_RDOC");
|
||||
@ -397,6 +399,23 @@ bool TTipo_documento::scarica_residuo() const
|
||||
return get_bool("B4");
|
||||
}
|
||||
|
||||
const TString& TTipo_documento::main_print_profile() const
|
||||
{
|
||||
TString& tmp = get_tmp_string();
|
||||
tmp = get("S5");
|
||||
tmp.cut(8); tmp.rtrim();
|
||||
return tmp;
|
||||
}
|
||||
|
||||
const TString& TTipo_documento::additional_print_profile() const
|
||||
{
|
||||
TString& tmp = get_tmp_string();
|
||||
tmp = get("S5");
|
||||
tmp.ltrim(8); tmp.rtrim();
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Espressione documento
|
||||
@ -458,6 +477,8 @@ int TExpr_documento::parse_user_func(const char * name, int nparms) const
|
||||
return nparms == 2 ? _componente : -1;
|
||||
if (strcmp(name, "COMPQTA") == 0)
|
||||
return nparms == 2 ? _comp_qta : -1;
|
||||
if (strcmp(name, "NRATE") == 0)
|
||||
return nparms == 0 ? _nrate : -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -885,6 +906,13 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
|
||||
}
|
||||
}
|
||||
break;
|
||||
case _nrate:
|
||||
{
|
||||
const TPagamento & p = _doc->pagamento();
|
||||
const real r = p.n_rate();
|
||||
stack.push(r);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
TExpression::evaluate_user_func(index, nparms, stack, type);
|
||||
break;
|
||||
@ -949,7 +977,7 @@ int TFormula_documento::read(const char* codice, const char * expr, bool numexpr
|
||||
if (err == NOERR)
|
||||
{
|
||||
const TTypeexp et = expr_type();
|
||||
const TString e = expr_string(); // Copio espressione proveniente da record
|
||||
const TString& e = expr_string(); // Copio espressione proveniente da record
|
||||
_expr = new TExpr_documento(e, et);
|
||||
}
|
||||
else
|
||||
|
@ -281,7 +281,7 @@ bool TElaborazione_esterna::elabora(TLista_documenti& doc_in, TLista_documenti&
|
||||
TExternal_app app(command_line);
|
||||
if (app.run() == 0)
|
||||
{
|
||||
TConfig c(name, "Main");
|
||||
TConfig c(name, "Transaction");
|
||||
const TString & res = c.get("Result");
|
||||
if (res == "SUCCESS")
|
||||
{
|
||||
@ -316,6 +316,7 @@ bool TElaborazione_esterna::elabora(TLista_documenti& doc_in, TLista_documenti&
|
||||
r++;
|
||||
par.format("%d,%d", LF_RIGHEDOC, r);
|
||||
}
|
||||
d.stato(stato_finale_doc_iniziale()[0]);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
21
ve/velib04.h
21
ve/velib04.h
@ -80,6 +80,9 @@ public:
|
||||
const TString& descrizione() const { return get("S0"); }
|
||||
const TTipo_elaborazione tipo() const { return (TTipo_elaborazione) get_int("I0"); }
|
||||
|
||||
virtual void tipi_validi(TToken_string& tipi) const {}
|
||||
virtual void stati_validi(TToken_string& stati) const {}
|
||||
|
||||
bool doc_uguale(int u) const { return get("S1").mid(u, 1) == "X"; }
|
||||
bool riga_uguale(int u) const { return get("S1").mid(40+u, 1) == "X"; }
|
||||
|
||||
@ -97,6 +100,7 @@ public:
|
||||
bool usa_data_consegna() const { return get_bool("B9"); }
|
||||
bool kill_descrizione_estesa() const { return get_bool("B10"); }
|
||||
bool calcola_scarti() const { return get_bool("B11"); }
|
||||
const TString & num_riferimenti_in() const { return get("S11"); }
|
||||
|
||||
int intestazioni_sheet() const { return get_int("I1"); }
|
||||
|
||||
@ -139,6 +143,8 @@ protected:
|
||||
bool aggiorna_ncolli_tara_pnetto(TRiga_documento& r) const;
|
||||
|
||||
public:
|
||||
bool nettifica() { return get_bool("B12"); }
|
||||
bool reload_prices() { return get_bool("B13"); }
|
||||
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
||||
const TDate& data_elab, bool interattivo = false);
|
||||
|
||||
@ -151,13 +157,24 @@ class TFatturazione_bolle : public TElaborazione // velib04a
|
||||
{
|
||||
TToken_string _cod_desc;
|
||||
|
||||
protected:
|
||||
virtual void campi_raggruppamento_righe(TToken_string& campi_riga) const;
|
||||
virtual void campi_raggruppamento(TToken_string& campi) const;
|
||||
virtual bool doc_raggruppabile(const TDocumento & doc) const { return doc.raggruppabile(); }
|
||||
virtual bool doc_raggruppabile(const TDocumento & doc_in, const TDocumento & doc_out, TToken_string & campi) const
|
||||
{ return doc_in.raggruppabile(doc_out, campi); }
|
||||
|
||||
virtual void add_rows(TRiga_documento & rout, TRiga_documento & rin) { rout += rin; }
|
||||
virtual void create_row(TDocumento& doc_out, const TRiga_documento & rin);
|
||||
virtual const TString & get_tipo_out(const TDocumento & doc_out) { return get("S8"); }
|
||||
|
||||
public:
|
||||
virtual bool raggruppa(TDocumento& din, TDocumento& dout);
|
||||
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
||||
const TDate& data_elab, bool interattivo = false);
|
||||
|
||||
void tipi_validi(TToken_string& tipi) const;
|
||||
void stati_validi(TToken_string& stati) const;
|
||||
virtual void tipi_validi(TToken_string& tipi) const;
|
||||
virtual void stati_validi(TToken_string& stati) const;
|
||||
|
||||
TFatturazione_bolle(const char* cod);
|
||||
TFatturazione_bolle(const TRectype& rec) : TElaborazione(rec) { }
|
||||
|
150
ve/velib04a.cpp
150
ve/velib04a.cpp
@ -37,6 +37,74 @@ void TFatturazione_bolle::stati_validi(TToken_string& stati) const
|
||||
CHECK(!stati.empty_items(), "Nessuno stato documento valido");
|
||||
}
|
||||
|
||||
void TFatturazione_bolle::campi_raggruppamento_righe(TToken_string& campi_riga) const
|
||||
{
|
||||
const bool ragg_rig = raggruppa_righe();
|
||||
|
||||
if (ragg_rig)
|
||||
{
|
||||
campi_riga = "CODART|UMQTA"; // Uguali sempre
|
||||
// Uguali se commesse attive
|
||||
if (dongle().active(CAAUT) || dongle().active(CMAUT))
|
||||
{
|
||||
campi_riga.add(RDOC_CODCMS);
|
||||
campi_riga.add(RDOC_FASCMS);
|
||||
campi_riga.add(RDOC_CODCOSTO);
|
||||
}
|
||||
// Uguali opzionalmente
|
||||
if (riga_uguale(0)) campi_riga.add("CODMAG");
|
||||
if (riga_uguale(1)) campi_riga.add("CODIVA");
|
||||
if (riga_uguale(2)) campi_riga.add("PREZZO|SCONTO");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void TFatturazione_bolle::campi_raggruppamento(TToken_string& campi) const
|
||||
{
|
||||
campi = "TIPOCF|CODCF|CODVAL|CODLIN"; // Uguali sempre
|
||||
|
||||
// Uguali opzionalmente
|
||||
const char* cond[] = { "CAMBIO", "SCONTO", "TIPODOC", "CODNUM",
|
||||
"CODPAG", "CODABIA|CODCABA", "CODLIST", "CODAG",
|
||||
"CODSPMEZZO", "CODPORTO", "CAUSTRASP", "CODVETT1|CODVETT2|CODVETT3",
|
||||
"CODINDSP",
|
||||
NULL };
|
||||
|
||||
for (int u = 0; cond[u]; u++)
|
||||
if (doc_uguale(u)) campi.add(cond[u]);
|
||||
}
|
||||
|
||||
void TFatturazione_bolle::create_row(TDocumento& doc_out, const TRiga_documento & rin)
|
||||
{
|
||||
TRiga_documento& rout = doc_out.new_row(); // ... crea una riga nuova e
|
||||
|
||||
doc_out.copy_data(rout, rin); // copiaci tutti i campi della riga sorgente.
|
||||
rout.set_original_rdoc_key(rin); // memorizza il codice della riga originale
|
||||
|
||||
if (usa_data_consegna())
|
||||
{
|
||||
rout.zero(RDOC_QTAEVASA);
|
||||
rout.zero(RDOC_RIGAEVASA);
|
||||
}
|
||||
|
||||
if (kill_descrizione_estesa()) // Cancello eventualmente la descrizione estesa
|
||||
{
|
||||
rout.zero(RDOC_DESCLUNGA);
|
||||
rout.zero(RDOC_DESCEST);
|
||||
}
|
||||
|
||||
if (prezzo_da_ordine()) // Se devo copiare il prezzo originale all'ordine
|
||||
{
|
||||
const TRectype* row_ord = rin.find_original_rdoc();
|
||||
if (row_ord != NULL)
|
||||
{
|
||||
const real ord_price = row_ord->get_real(RDOC_PREZZO);
|
||||
const TString& ord_scont = row_ord->get(RDOC_SCONTO);
|
||||
rout.put(RDOC_PREZZO, ord_price);
|
||||
rout.put(RDOC_SCONTO, ord_scont);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
{
|
||||
@ -131,30 +199,10 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
const bool ignora_desc = ignora_descrizioni();
|
||||
|
||||
TToken_string campi_riga(80);
|
||||
const bool ragg_rig = raggruppa_righe();
|
||||
if (ragg_rig)
|
||||
{
|
||||
// Uguali sempre
|
||||
campi_riga.add(RDOC_CODART);
|
||||
campi_riga.add(RDOC_UMQTA);
|
||||
// Uguali se commesse attive
|
||||
if (dongle().active(CAAUT) || dongle().active(CMAUT))
|
||||
{
|
||||
campi_riga.add(RDOC_CODCMS);
|
||||
campi_riga.add(RDOC_FASCMS);
|
||||
campi_riga.add(RDOC_CODCOSTO);
|
||||
}
|
||||
// Uguali opzionalmente
|
||||
if (riga_uguale(0))
|
||||
campi_riga.add(RDOC_CODMAG);
|
||||
if (riga_uguale(1))
|
||||
campi_riga.add(RDOC_CODIVA);
|
||||
if (riga_uguale(2))
|
||||
{
|
||||
campi_riga.add(RDOC_PREZZO);
|
||||
campi_riga.add(RDOC_SCONTO);
|
||||
}
|
||||
}
|
||||
|
||||
campi_raggruppamento_righe(campi_riga);
|
||||
|
||||
const bool ragg_rig = campi_riga.full();
|
||||
|
||||
for (int r = 1; r <= doc_in.physical_rows(); r++)
|
||||
{
|
||||
@ -192,43 +240,15 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
|
||||
if (rin.raggruppabile(rout, campi_riga)) // Se esiste una riga compatibile ...
|
||||
{
|
||||
rout += rin; // ... sommaci la quantita' ecc.
|
||||
add_rows(rout, rin);
|
||||
elaborata = true; // Ricorda di averla gia' elaborata
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!elaborata) // Se la riga non e' stata gia' sommata ...
|
||||
{
|
||||
TRiga_documento& rout = doc_out.new_row(); // ... crea una riga nuova e
|
||||
create_row(doc_out, rin);
|
||||
|
||||
doc_out.copy_data(rout, rin); // copiaci tutti i campi della riga sorgente.
|
||||
rout.set_original_rdoc_key(rin); // memorizza il codice della riga originale
|
||||
|
||||
if (usa_dcons)
|
||||
{
|
||||
rout.zero(RDOC_QTAEVASA);
|
||||
rout.zero(RDOC_RIGAEVASA);
|
||||
}
|
||||
|
||||
if (kill_descrizione_estesa()) // Cancello eventualmente la descrizione estesa
|
||||
{
|
||||
rout.zero(RDOC_DESCLUNGA);
|
||||
rout.zero(RDOC_DESCEST);
|
||||
}
|
||||
|
||||
if (prezzo_da_ordine()) // Se devo copiare il prezzo originale all'ordine
|
||||
{
|
||||
const TRectype* row_ord = rin.find_original_rdoc();
|
||||
if (row_ord != NULL)
|
||||
{
|
||||
const real ord_price = row_ord->get_real(RDOC_PREZZO);
|
||||
const TString& ord_scont = row_ord->get(RDOC_SCONTO);
|
||||
rout.put(RDOC_PREZZO, ord_price);
|
||||
rout.put(RDOC_SCONTO, ord_scont);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//cambio stato documento
|
||||
@ -266,18 +286,10 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
|
||||
{
|
||||
TWait_cursor hourglass;
|
||||
TToken_string campi_doc(128); // Lista di campi che devono essere uguali
|
||||
campi_doc = "TIPOCF|CODCF|CODVAL|CODLIN"; // Uguali sempre
|
||||
|
||||
// Uguali opzionalmente
|
||||
const char* cond[] = { "CAMBIO", "SCONTO", "TIPODOC", "CODNUM",
|
||||
"CODPAG", "CODABIA|CODCABA", "CODLIST", "CODAG",
|
||||
"CODSPMEZZO", "CODPORTO", "CAUSTRASP", "CODVETT1|CODVETT2|CODVETT3",
|
||||
"CODINDSP",
|
||||
NULL };
|
||||
|
||||
for (int u = 0; cond[u]; u++)
|
||||
if (doc_uguale(u)) campi_doc.add(cond[u]);
|
||||
|
||||
|
||||
campi_raggruppamento( campi_doc);
|
||||
|
||||
for (int id = 0; id < doc_in.items(); id++)
|
||||
{
|
||||
TDocumento& campione = doc_in[id];
|
||||
@ -296,11 +308,13 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
|
||||
}
|
||||
else
|
||||
{
|
||||
if (campione.raggruppabile()) // Se il documento ha il flag di raggruppabilita' ...
|
||||
if (doc_raggruppabile(campione)) // Se il documento ha il flag di raggruppabilita' ...
|
||||
// if (campione.raggruppabile()) // Se il documento ha il flag di raggruppabilita' ...
|
||||
{
|
||||
for (od = 0; od < tot; od++) // ... cerca un documento compatibile.
|
||||
{
|
||||
if (campione.raggruppabile(doc_out[od], campi_doc))
|
||||
if (doc_raggruppabile(campione, doc_out[od], campi_doc))
|
||||
// if (campione.raggruppabile(doc_out[od], campi_doc))
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -335,7 +349,6 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
|
||||
|
||||
const int tot = doc_out.items();
|
||||
const TString4 codnum(codice_numerazione_finale());
|
||||
const TString4 tipo_out(get("S8")); // Tipo del documento di output
|
||||
|
||||
for (int i = 0; i < tot; i++) // Forza tipo e numerazione documento.
|
||||
{
|
||||
@ -346,6 +359,7 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
|
||||
const TRectype & cfven = cache().get(LF_CFVEN, key);
|
||||
const TString4 tipo_cli(cfven.get(CFV_TIPODOCFAT));
|
||||
|
||||
const TString & tipo_out = get_tipo_out(d); // Tipo del documento di output
|
||||
TRecfield td(d, DOC_TIPODOC); // Uso il TRecfield per scavalcare tutti gli automatismi
|
||||
td = tipo_cli.empty() ? tipo_out : tipo_cli;
|
||||
const TString& sconto = d.get(DOC_SCONTOPERC);
|
||||
|
176
ve/velib04d.cpp
176
ve/velib04d.cpp
@ -2,6 +2,9 @@
|
||||
#include "velib04d.h"
|
||||
|
||||
#include <automask.h>
|
||||
#include <doc.h>
|
||||
#include <rdoc.h>
|
||||
#include <recset.h>
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TConsegna ordini mask
|
||||
@ -178,7 +181,7 @@ void TConsegna_mask::doc2mask(const TDocumento& doc, const TString & articolo)
|
||||
if (rec.is_descrizione())
|
||||
show_line = !_ignora_descrizioni;
|
||||
|
||||
if ( show_line && (articolo.empty() || articolo == rec.get(RDOC_CODART)))
|
||||
if ( show_line && (articolo.blank() || articolo == rec.get(RDOC_CODART)))
|
||||
{
|
||||
TToken_string& r = s.row(-1);
|
||||
r = " ";
|
||||
@ -209,6 +212,8 @@ void TConsegna_mask::doc2mask(const TDocumento& doc, const TString & articolo)
|
||||
r.add(rec.get(RDOC_DESCR), s.cid2index(S_DESCR));
|
||||
r.add(rec.get(RDOC_TIPORIGA), s.cid2index(S_TIPORIGA));
|
||||
r.add(rec.get(RDOC_NRIGA),s.cid2index(S_NUMRIGA));
|
||||
r.add(rec.get(RDOC_CODAGG1),s.cid2index(S_CODAGG1));
|
||||
r.add(rec.get(RDOC_CODAGG2),s.cid2index(S_CODAGG2));
|
||||
}
|
||||
}
|
||||
if (_ordina_per_codice)
|
||||
@ -245,6 +250,28 @@ TConsegna_mask::TConsegna_mask(int header_code, bool per_codice, bool ignora_des
|
||||
s.set_column_header(S_QTADAEVADERE, h);
|
||||
s.sheet_mask().field(S_QTADAEVADERE).set_prompt("Da evadere ");
|
||||
}
|
||||
|
||||
TConfig c(CONFIG_DITTA, "ve");
|
||||
|
||||
if (c.exist("CODAGG1"))
|
||||
{
|
||||
TString80 codagg1 = c.get("CODAGG1");
|
||||
TMask_field & agg1 =s.sheet_mask().field(S_CODAGG1);
|
||||
|
||||
s.set_column_header(S_CODAGG1, codagg1);
|
||||
codagg1.rpad(strlen(agg1.prompt()));
|
||||
agg1.set_prompt(codagg1);
|
||||
}
|
||||
|
||||
if (c.exist("CODAGG2"))
|
||||
{
|
||||
TString80 codagg2 = c.get("CODAGG2");
|
||||
TMask_field & agg2 =s.sheet_mask().field(S_CODAGG2);
|
||||
|
||||
s.set_column_header(S_CODAGG2, codagg2);
|
||||
codagg2.rpad(strlen(agg2.prompt()));
|
||||
agg2.set_prompt(codagg2);
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -330,15 +357,28 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
}
|
||||
|
||||
TRiga_documento& rout = outdoc[riga_rif];
|
||||
TString memo(1024);
|
||||
|
||||
memo = rout.get(RDOC_DESCR);
|
||||
|
||||
if (rout.get_bool(RDOC_DESCLUNGA))
|
||||
memo << rout.get(RDOC_DESCEST);
|
||||
// Costruisce la stringa di riferimento
|
||||
TString riferimento;
|
||||
indoc.riferimento(riferimento);
|
||||
if (riferimento.empty())
|
||||
riferimento = indoc.tipo().descrizione();
|
||||
if (usa_doc_rif() && indoc.get(DOC_NUMDOCRIF).not_empty())
|
||||
TString80 nrif = indoc.get(DOC_NUMDOCRIF);
|
||||
|
||||
if (nrif.blank())
|
||||
nrif = indoc.get(DOC_DOC1);
|
||||
if (nrif.blank())
|
||||
nrif = indoc.get(DOC_DOC2);
|
||||
if (nrif.blank())
|
||||
nrif = indoc.get(DOC_DOC3);
|
||||
if (usa_doc_rif() && nrif.full())
|
||||
{
|
||||
riferimento << " n. " << indoc.get(DOC_NUMDOCRIF);
|
||||
riferimento << " n. " << nrif;
|
||||
riferimento << " del " << indoc.get(DOC_DATADOCRIF);
|
||||
}
|
||||
else
|
||||
@ -346,30 +386,87 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
riferimento << " n. " << indoc.numero();
|
||||
riferimento << " del " << indoc.data().string();
|
||||
}
|
||||
if (memo.full())
|
||||
memo << '\n';
|
||||
memo << riferimento;
|
||||
|
||||
const TString4 numrif = num_riferimenti_in();
|
||||
|
||||
// Setta la descrizione se vuota
|
||||
if (rout.get(RDOC_DESCR).empty())
|
||||
rout.put(RDOC_DESCR, riferimento);
|
||||
else
|
||||
if (numrif.full())
|
||||
{
|
||||
// Altrimenti aggiungi il riferimento al memo
|
||||
TString memo(1024);
|
||||
memo = rout.get(RDOC_DESCEST);
|
||||
if (memo.empty())
|
||||
riferimento.cut(0);
|
||||
TSheet_field& s = m.sfield(F_ROWS);
|
||||
TAssoc_array doc_rows;
|
||||
|
||||
FOR_EACH_SHEET_ROW(s, n, row)
|
||||
{
|
||||
TString80 rif(rout.get(RDOC_DESCR));
|
||||
const int r = row->get_int(s.cid2index(S_NUMRIGA));
|
||||
if (row->get_char(0) > ' ') // E' da consegnare?
|
||||
{
|
||||
const TRiga_documento& rin = indoc[r];
|
||||
TString query("USE RDOC KEY 4");
|
||||
TString select;
|
||||
const char provv = rin.get_char(RDOC_PROVV);
|
||||
const int anno = rin.get_int(RDOC_ANNO);
|
||||
const TString4 codnum = rin.get(RDOC_CODNUM);
|
||||
const long ndoc = rin.get_long(RDOC_NDOC);
|
||||
const int idriga = rin.get_int(RDOC_IDRIGA);
|
||||
|
||||
query << "\nSELECT CODNUM=\"" << numrif << '\"';
|
||||
select.format("DAPROVV=\"%c\" DAANNO=%d DACODNUM=\"%s\" DANDOC=%ld DAIDRIGA=%d", provv, anno, (const char *) codnum, ndoc, idriga);
|
||||
query << "\nFROM " << select;
|
||||
query << "\nTO " << select;
|
||||
|
||||
TISAM_recordset recset(query);
|
||||
|
||||
rif << '\n';
|
||||
rout.put(RDOC_DESCR, rif);
|
||||
rout.put(RDOC_DESCLUNGA, "X");
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
const char provv = recset.get(RDOC_PROVV).as_string()[0];
|
||||
const int anno = recset.get(RDOC_ANNO).as_int();
|
||||
const TString4 codnum = recset.get(RDOC_CODNUM).as_string();
|
||||
const long ndoc = recset.get(RDOC_NDOC).as_int();
|
||||
TString doc_key; doc_key.format("%c|%d|%s|%ld", provv, anno, (const char *) codnum, ndoc);
|
||||
if (!doc_rows.is_key(doc_key))
|
||||
{
|
||||
const TDocumento d(provv, anno, codnum, ndoc);
|
||||
TString rif;
|
||||
|
||||
if (!d.empty())
|
||||
{
|
||||
d.riferimento(rif);
|
||||
TString80 nrifin = d.get(DOC_NUMDOCRIF);
|
||||
|
||||
if (nrifin.blank())
|
||||
nrifin = d.get(DOC_DOC1);
|
||||
if (nrifin.blank())
|
||||
nrifin = d.get(DOC_DOC2);
|
||||
if (nrifin.blank())
|
||||
nrifin = d.get(DOC_DOC3);
|
||||
|
||||
if (usa_doc_rif() && nrifin.full())
|
||||
{
|
||||
rif << " n. " << nrifin;
|
||||
rif << " del " << d.get(DOC_DATADOCRIF);
|
||||
}
|
||||
else
|
||||
memo << '\n';
|
||||
memo << riferimento;
|
||||
rout.put(RDOC_DESCEST, memo);
|
||||
{
|
||||
rif << " n. " << d.numero();
|
||||
rif << " del " << d.data().string();
|
||||
}
|
||||
riferimento << rif << '\n';
|
||||
}
|
||||
doc_rows.add(doc_key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
memo.insert(riferimento);
|
||||
}
|
||||
rout.put(RDOC_DESCLUNGA, memo.len() > 50);
|
||||
rout.put(RDOC_DESCR, memo.left(50));
|
||||
rout.put(RDOC_DESCEST, memo.mid(50));
|
||||
}
|
||||
|
||||
|
||||
TToken_string campi_riga(80);
|
||||
const bool ragg_rig = raggruppa_righe();
|
||||
@ -390,8 +487,8 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
TSheet_field& s = m.sfield(F_ROWS);
|
||||
FOR_EACH_SHEET_ROW(s, n, row)
|
||||
{
|
||||
const int r = row->get_int(S_NUMRIGA - FIRST_FIELD);
|
||||
if (*row->get(0) > ' ') // E' da consegnare?
|
||||
const int r = row->get_int(s.cid2index(S_NUMRIGA));
|
||||
if (row->get_char(0) > ' ') // E' da consegnare?
|
||||
{
|
||||
TRiga_documento& inrec = indoc[r];
|
||||
const real daeva = row->get(S_QTADAEVADERE - FIRST_FIELD);
|
||||
@ -493,6 +590,8 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
outrec.zero(qtaevasa_field); // Azzera quantita' evasa erroneamente copiata dall'ordine
|
||||
outrec.zero(RDOC_RIGAEVASA); // Azzera flag di evasa erroneamente copiata dall'ordine
|
||||
outrec.set_original_rdoc_key(inrec);
|
||||
if (reload_prices())
|
||||
outrec.zero(RDOC_CHECKED);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -523,7 +622,42 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
}
|
||||
}
|
||||
|
||||
if (indoc.is_evaso())
|
||||
if (reload_prices())
|
||||
{
|
||||
TDocumento_mask * m = new TDocumento_mask(outdoc.get(DOC_TIPODOC));
|
||||
|
||||
m->doc() = outdoc;
|
||||
m->doc2mask();
|
||||
m->mask2doc();
|
||||
outdoc = m->doc();
|
||||
delete m;
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (nettifica())
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = indoc.physical_rows(); i >= 1; i--)
|
||||
{
|
||||
TRiga_documento& inrec = indoc[i];
|
||||
const int nrow = inrec.get_int(RDOC_NRIGA);
|
||||
|
||||
if (inrec.is_evasa())
|
||||
indoc.destroy_row(i, true);
|
||||
else
|
||||
{
|
||||
const real evaso = inrec.qtaevasa();
|
||||
const char* fq = inrec.field_qta();
|
||||
const char* fqe = inrec.field_qtaevasa();
|
||||
|
||||
inrec.add(fq, -evaso); // nuovo modo di incrementare
|
||||
inrec.zero(fqe);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (indoc.is_evaso())
|
||||
{
|
||||
indoc.stato(stato_finale_doc_iniziale()[0]);
|
||||
}
|
||||
|
@ -14,6 +14,8 @@
|
||||
#define S_DESCR 114
|
||||
#define S_TIPORIGA 115
|
||||
#define S_NUMRIGA 116
|
||||
#define S_CODAGG1 117
|
||||
#define S_CODAGG2 118
|
||||
|
||||
#define F_CODNUM 201
|
||||
#define F_DESNUM 202
|
||||
|
@ -188,13 +188,15 @@ BEGIN
|
||||
ITEM "Descrizione@50"
|
||||
ITEM "Tipo@4"
|
||||
ITEM "N.ro riga"
|
||||
ITEM "Codice Aggiuntivo 1"
|
||||
ITEM "Codice Aggiuntivo 2"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Riga 1" -1 -1 66 13
|
||||
PAGE "Riga 1" -1 -1 66 15
|
||||
|
||||
GROUPBOX DLG_NULL 64 8
|
||||
BEGIN
|
||||
@ -317,6 +319,18 @@ BEGIN
|
||||
PROMPT 41 10 "Riga evasa"
|
||||
END
|
||||
|
||||
STRING S_CODAGG1 20
|
||||
BEGIN
|
||||
PROMPT 2 11 "Cod.Aggiuntivo 1 "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_CODAGG2 20
|
||||
BEGIN
|
||||
PROMPT 2 12 "Cod.Aggiuntivo 2 "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
|
@ -9,8 +9,6 @@
|
||||
|
||||
#include "sconti.h"
|
||||
#include "veini.h"
|
||||
#include "velib.h"
|
||||
#include "vepriv.h"
|
||||
#include "verig.h"
|
||||
#include "veuml1.h"
|
||||
#include "veini.h"
|
||||
@ -50,7 +48,7 @@ bool numdocrif_hndl( TMask_field& field, KEY key )
|
||||
TRelation rel(LF_DOC);
|
||||
TString sortkey = "TIPOCF|CODCF|PROVV|ANNO|CODNUM|"; sortkey << campo;
|
||||
TSorted_cursor cur(&rel, sortkey, "", 2, &filtrec, &filtrec);
|
||||
TString80 f; f.format("CODNUM==\"%s\"", (const char*)m.get(F_CODNUM));
|
||||
TString16 f; f.format("CODNUM==\"%s\"", (const char*)m.get(F_CODNUM));
|
||||
|
||||
cur.setfilter(f);
|
||||
|
||||
@ -294,8 +292,15 @@ bool data_hndl( TMask_field& field, KEY key )
|
||||
if (key == K_ENTER || field.to_check(key))
|
||||
{
|
||||
const TDate datadoc(m.get(F_DATADOC));
|
||||
if (!datadoc.ok())
|
||||
return field.error_box("La data documento deve essere comunque indicata.");
|
||||
const int annodoc = m.get_int(F_ANNO);
|
||||
if (datadoc.year() != annodoc)
|
||||
{
|
||||
if (datadoc.ok())
|
||||
return field.error_box(TR("La data documento deve appartenere all'anno %d"), annodoc);
|
||||
else
|
||||
return field.error_box(TR("La data documento deve essere comunque indicata"));
|
||||
}
|
||||
|
||||
const TCodice_numerazione codnum(m.get(F_CODNUM));
|
||||
if (codnum.test_eser())
|
||||
{
|
||||
@ -333,12 +338,17 @@ bool data_hndl( TMask_field& field, KEY key )
|
||||
doc.read(_isgteq);
|
||||
if (doc.eof() || doc.prev() == NOERR)
|
||||
{
|
||||
TDate dataprev = doc.get_date(DOC_DATADOC);
|
||||
|
||||
const TDate dataprev = doc.get_date(DOC_DATADOC);
|
||||
same_key = doc.curr().same_key(m.doc().head(), 1, 1);
|
||||
if (same_key && datadoc < dataprev)
|
||||
return field.error_box("Data documento inferiore alla data del documento precedente");
|
||||
}
|
||||
|
||||
doc.curr() = m.doc().head();
|
||||
doc.read(_isgreat);
|
||||
same_key = doc.curr().same_key(m.doc().head(), 1, 1);
|
||||
if (doc.good() && same_key && datadoc > doc.get_date(DOC_DATADOC))
|
||||
return field.error_box("Data documento superiore alla data del documento successivo");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -358,6 +368,11 @@ void row_set_handler( TMask& m, const int field, const int index )
|
||||
case 3:
|
||||
if (field == FR_CODART)
|
||||
m.set_handler( field, search_price_handler );
|
||||
case 4:
|
||||
if (field == FR_CODART)
|
||||
m.set_handler( field, find_price_handler );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
yesnofatal_box( false, "Funzione di handler sulla riga non definita( %d ).", index );
|
||||
@ -367,13 +382,13 @@ void row_set_handler( TMask& m, const int field, const int index )
|
||||
}
|
||||
|
||||
HIDDEN TString16 curr_um;
|
||||
HIDDEN real curr_fc(1.0);
|
||||
HIDDEN real curr_fc = UNO;
|
||||
|
||||
bool iva_handler( TMask_field& f, KEY key )
|
||||
{
|
||||
TDocumento_mask & mask = (TDocumento_mask &) f.mask().get_sheet()->mask();
|
||||
|
||||
if (key == 0 || (key == K_ENTER && f.get().empty()))
|
||||
if (key == 0 || (key == K_ENTER && f.empty()))
|
||||
{
|
||||
const TString16 codiva = mask.condv().clifo().vendite().get(CFV_ASSFIS);
|
||||
if (codiva.not_empty())
|
||||
@ -2007,17 +2022,18 @@ bool TDocumento_mask::numdocrif_search_handler(TMask_field& f, KEY key)
|
||||
TRelation rel(LF_DOC);
|
||||
rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
|
||||
TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec);
|
||||
TString80 f; f.format("(CODNUM==\"%s\") && (PROVV==\"%s\") && (ANNO==\"%s\")",
|
||||
(const char *)m.get(F_CODNUM), (const char *)m.get(F_PROVV), (const char *)m.get(F_ANNO));
|
||||
|
||||
cur.setfilter(f);
|
||||
TCursor_sheet sheet(&cur, "CODCF|20->RAGSOC|ANNO|CODNUM|NUMDOCRIF|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|DATADOC|CODVAL|G1:TOTDOC",
|
||||
TString80 filter;
|
||||
filter.format("(CODNUM==\"%s\") && (PROVV==\"D\") && (ANNO==\"%d\")",
|
||||
(const char *)m.get(F_CODNUM), m.get_int(F_ANNO));
|
||||
cur.setfilter(filter);
|
||||
TToken_string siblings;
|
||||
TBrowse_sheet sheet(&cur, "CODCF|20->RAGSOC|NUMDOCRIF|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|DATADOC|G1:TOTDOC|CODVAL",
|
||||
"Documento di riferimento",
|
||||
"Codice|Ragione Sociale@50|Anno|Numeraz|Docum.Rif.|Data@10|Docum.Rif. 1|Docum.Rif. 2|Docum.Rif. 3|Documento|Data\nDocumento@10|Valuta|Totale\nDocumento@18V",
|
||||
0, 1);
|
||||
"Codice|Ragione Sociale@50|Docum.Rif.|Data@10|Docum.Rif. 1|Docum.Rif. 2|Docum.Rif. 3|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta",
|
||||
0, (TEdit_field&)f, siblings);
|
||||
if (sheet.run() == K_ENTER)
|
||||
{
|
||||
const TString16 ndoc = sheet.row(-1).get(9);
|
||||
const long ndoc = sheet.row(-1).get_long(7);
|
||||
m.set(F_NDOC, ndoc);
|
||||
m.stop_run(K_AUTO_ENTER);
|
||||
}
|
||||
@ -2038,16 +2054,16 @@ bool TDocumento_mask::ragsoc_search_handler(TMask_field& f, KEY key)
|
||||
filtrec.put(DOC_ANNO, m.get(F_ANNO));
|
||||
|
||||
TRelation rel(LF_DOC);
|
||||
rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
|
||||
TSorted_cursor cur(&rel, "TIPOCF|UPPER(20->RAGSOC)|PROVV|ANNO|CODNUM|PROVV|NDOC", "", 1, &filtrec, &filtrec);
|
||||
TString80 form; form.format("CODNUM==\"%s\"", (const char *)m.get(F_CODNUM));
|
||||
TString16 filter; filter.format("CODNUM==\"%s\"", (const char*)m.get(F_CODNUM));
|
||||
|
||||
cur.setfilter(form, true);
|
||||
cur.setfilter(filter, true);
|
||||
TToken_string siblings;
|
||||
TBrowse_sheet sheet(&cur, "20->RAGSOC|CODCF|NDOC|DATADOC|G1:TOTDOC|CODVAL|20->PAIV",
|
||||
TR("Ragione Sociale"),
|
||||
HR("Ragione Sociale@50|Codice|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta|Partita IVA"),
|
||||
0, (TEdit_field&)f, siblings);
|
||||
|
||||
TCursor_sheet sheet(&cur, "20->RAGSOC|CODCF|20->PAIV|ANNO|CODNUM|NDOC|DATADOC|CODVAL|G1:TOTDOC",
|
||||
"Ragione Sociale",
|
||||
"Ragione Sociale@50|Codice|Partita IVA|Anno|Numeraz|Documento|Data\nDocumento@10|Valuta|Totale\nDocumento@18V",
|
||||
0, 1);
|
||||
|
||||
TString ragsoc(f.get()); ragsoc.upper();
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
enum _formule {_somma, _bolli, _bolli_int, _spinc, _prezzo, _importo, _imponibile, _sconto, _iva,
|
||||
_provv, _qtares, _valdoc, _tipo, _imponibili, _imposte, _totprovv, _pscontot, _ritenuta,
|
||||
_tipo_ritenuta, _quant, _quantevasa, _componente, _comp_qta };
|
||||
_tipo_ritenuta, _quant, _quantevasa, _componente, _comp_qta, _nrate};
|
||||
enum TTipo_calcolo { _nessun_calcolo, _qtaprezzo, _valore, _percentuale, _scontopi};
|
||||
|
||||
void row_set_handler( TMask& m, const int field, const int index );
|
||||
|
@ -174,6 +174,9 @@ ENDIF
|
||||
DISPLAY "Codice@20" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FR_CODART CODART
|
||||
IFDEF(OU_CODART)
|
||||
OUTPUT OUM_CODART OU_CODART
|
||||
ENDIF
|
||||
WARNING "Articolo assente"
|
||||
IFDEF(CH_CODART)
|
||||
CHECKTYPE CH_CODART
|
||||
@ -205,6 +208,9 @@ ENDIF
|
||||
DISPLAY "Descrizione@50" LF_ANAMAG->DESCR
|
||||
DISPLAY "Codice@20" CODART
|
||||
OUTPUT FR_CODART CODART
|
||||
IFDEF(OU_CODART)
|
||||
OUTPUT OUM_CODART OU_CODART
|
||||
ENDIF
|
||||
WARNING "Articolo assente"
|
||||
IFDEF(CH_CODALT)
|
||||
CHECKTYPE CH_CODALT
|
||||
@ -683,6 +689,9 @@ ENDIF
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Codice@20" CODART
|
||||
OUTPUT FR_DESCRART DESCR
|
||||
IFDEF(OU_CODART)
|
||||
OUTPUT OUM_CODART OU_CODART
|
||||
ENDIF
|
||||
ADD RUN ve2 -3
|
||||
IFDEF(MS_DESCRART)
|
||||
MESSAGE MS_DESCRART
|
||||
|
@ -16,6 +16,7 @@ DEFINE_FIELD(DESMAG)
|
||||
DEFINE_FIELD(CODDEP)
|
||||
DEFINE_FIELD(DESDEP)
|
||||
DEFINE_FIELD(CODART)
|
||||
// F_OUT(CODART, FR_CODAGG1, USER1)
|
||||
DEFINE_FIELD(DESCRART)
|
||||
DEFINE_FIELD(UMQTA)
|
||||
DEFINE_FIELD(QTA)
|
||||
|
@ -24,6 +24,8 @@
|
||||
!!define DI7_##name e7 ;\
|
||||
!!define DI8_##name e8 ;\
|
||||
!!define DI9_##name e9 ;
|
||||
#define F_OUT(name, mfield, field) !!define OUM_##name mfield ; \
|
||||
!!define OU_##name field ; \
|
||||
|
||||
INCLDEF("verig.h")
|
||||
|
||||
|
@ -248,7 +248,7 @@ int TToas400::separa_sconti(const TString& sconto, TToken_string& sconti4) const
|
||||
bool TToas400::genera_righedoc(const TString& path, char t)
|
||||
{
|
||||
//Crea il file vuoto delle righe documenti
|
||||
const char* tipor = t == 'B' ? "rbolle" : "rfatt";
|
||||
const char* tipor = t == 'B' ? "rbolle" : "rfatture";
|
||||
TFilename trrrig = path; trrrig.add(tipor); trrrig.ext("trr");
|
||||
TFilename siriorig = path; siriorig.add(tipor); siriorig.ext("dbf");
|
||||
|
||||
@ -379,7 +379,7 @@ void TToas400::copia_documento(TRectype& recdest, const TRectype& recsource, con
|
||||
// tipo -> B=bolle, F=fatture
|
||||
bool TToas400::genera_documenti(const TString& path, char t)
|
||||
{
|
||||
const char* tipo = t == 'B' ? "bolle" : "fatt";
|
||||
const char* tipo = t == 'B' ? "bolle" : "fatture";
|
||||
|
||||
//crea il file delle testate delle bolle utilizzando bolle.trr come tracciato record
|
||||
TFilename siriodoc = path; siriodoc.add(tipo); siriodoc.ext("dbf");
|
||||
|
@ -40,7 +40,6 @@
|
||||
#define F_DOC8 158
|
||||
#define F_DOC9 159
|
||||
#define F_DOC10 160
|
||||
#define F_PROVVISORIO 162
|
||||
#define F_APPLICAZIONE 163
|
||||
#define F_INTERATTIVO 164
|
||||
#define F_INSERT_MODE 165
|
||||
@ -50,6 +49,8 @@
|
||||
#define F_USA_DCONS 170
|
||||
#define F_KILLDESC 171
|
||||
#define F_SCARTI 172
|
||||
#define F_NETTIFICA 173
|
||||
#define F_RELOAD_PRICES 174
|
||||
|
||||
#define H_DOC1 180
|
||||
#define H_DOC2 181
|
||||
@ -76,6 +77,8 @@
|
||||
#define F_RIFERIMENTI_IN_TESTA 321
|
||||
#define F_IGNORA_DESCRIZIONI 330
|
||||
#define F_USA_DOCRIF 331
|
||||
#define F_RIF_DOCIN 332
|
||||
#define F_COMMESSA 333
|
||||
|
||||
#define F_PREZZO_DA_ORDINE 340
|
||||
|
||||
|
@ -493,31 +493,45 @@ END
|
||||
|
||||
BOOLEAN F_KILLDESC
|
||||
BEGIN
|
||||
PROMPT 45 14 "Non riportare descrizione estesa"
|
||||
PROMPT 45 13 "Non riportare descrizione estesa"
|
||||
FIELD B10
|
||||
END
|
||||
|
||||
BOOLEAN F_ORDINA
|
||||
BEGIN
|
||||
PROMPT 45 15 "Ordina per codice"
|
||||
PROMPT 45 14 "Ordina per codice"
|
||||
FIELD B7
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_SCARTI
|
||||
BEGIN
|
||||
PROMPT 45 16 "Calcolo automatico degli scarti"
|
||||
FIELD B11
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_USA_DCONS
|
||||
BEGIN
|
||||
PROMPT 45 15 "Usa data di consegna"
|
||||
PROMPT 45 14 "Usa data di consegna"
|
||||
FIELD B9
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_SCARTI
|
||||
BEGIN
|
||||
PROMPT 45 15 "Calcolo automatico degli scarti"
|
||||
FIELD B11
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_NETTIFICA
|
||||
BEGIN
|
||||
PROMPT 45 16 "Nettifica le quantità"
|
||||
FIELD B12
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_RELOAD_PRICES
|
||||
BEGIN
|
||||
PROMPT 45 17 "Ricarica i prezzi"
|
||||
FIELD B13
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
RADIOBUTTON F_PROTOCOLLO 1 38
|
||||
BEGIN
|
||||
PROMPT 44 13 "@bProtocollo IVA"
|
||||
@ -628,6 +642,12 @@ BEGIN
|
||||
FIELD S1[13,13]
|
||||
END
|
||||
|
||||
BOOLEAN F_COMMESSA
|
||||
BEGIN
|
||||
PROMPT 56 3 "Commessa"
|
||||
FIELD S1[14,14]
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 1 9 "@bModalita' di raggruppamento delle righe"
|
||||
@ -666,7 +686,7 @@ BEGIN
|
||||
FIELD B5
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 1 14 "@bGestione descrizioni"
|
||||
END
|
||||
@ -695,9 +715,21 @@ BEGIN
|
||||
FIELD B8
|
||||
END
|
||||
|
||||
STRING F_RIF_DOCIN 4
|
||||
BEGIN
|
||||
PROMPT 2 17 "Numerazione documenti in entrata "
|
||||
USE %NUM
|
||||
INPUT CODTAB F_RIF_DOCIN
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_RIF_DOCIN CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
FIELD S11
|
||||
END
|
||||
|
||||
NUMBER F_COLONNE_CO 1
|
||||
BEGIN
|
||||
PROMPT 1 18 "Intestazioni consegna ordini "
|
||||
PROMPT 1 19 "Intestazioni consegna ordini "
|
||||
SHEET "Tipo|Colonna 1@25|Colonna 2@25"
|
||||
ITEM " |Quantita' residua|Quantita' da evadere"
|
||||
ITEM "1|Quantita' consegnata|Quantita' da fatturare"
|
||||
|
@ -122,6 +122,11 @@ PAGE "Tipi documento validi" -1 -1 60 14
|
||||
MESSAGE CLEAR,F_EMRI
|
||||
ITEM "4|Scontrino"
|
||||
MESSAGE ENABLE,F_EMRI
|
||||
ITEM "5|Conferimento soci"
|
||||
MESSAGE CLEAR,F_EMRI
|
||||
ITEM "6|Prestazioni ai soci"
|
||||
MESSAGE CLEAR,F_EMRI
|
||||
|
||||
END
|
||||
|
||||
STRING F_TIPODOC1 4
|
||||
|
@ -19,7 +19,7 @@
|
||||
#define PRS_DESCRCONTOA 119
|
||||
#define PRS_CAMPI 120
|
||||
#define PRS_QTA 121
|
||||
|
||||
#define PRS_SEZIONE 122
|
||||
#define PRS_CDC_V1 131
|
||||
#define PRS_CDC_A1 151
|
||||
|
||||
|
@ -42,6 +42,13 @@ BEGIN
|
||||
MESSAGE COPY,20@
|
||||
END
|
||||
|
||||
LISTBOX PRS_SEZIONE 6
|
||||
BEGIN
|
||||
PROMPT 2 3 "Sezione per cooperative "
|
||||
FIELD S11
|
||||
ITEM "D|Dare"
|
||||
ITEM "A|Avere"
|
||||
END
|
||||
|
||||
STRING PRS_CODASSFIS 4
|
||||
BEGIN
|
||||
|
@ -24,6 +24,7 @@
|
||||
#define SPP_TIPORIT 124
|
||||
#define SPP_CODTRB 125
|
||||
#define SPp_CODTRB1 126
|
||||
#define F_SEZIONE 127
|
||||
|
||||
#define SPP_CDC_V1 130
|
||||
#define SPP_CDC_V2 131
|
||||
|
@ -42,6 +42,14 @@ BEGIN
|
||||
MESSAGE COPY,20@
|
||||
END
|
||||
|
||||
LISTBOX F_SEZIONE 6
|
||||
BEGIN
|
||||
PROMPT 2 "Sezione per cooperative "
|
||||
FIELD S11
|
||||
ITEM "D|Dare"
|
||||
ITEM "A|Avere"
|
||||
END
|
||||
|
||||
STRING SPP_CODASSFIS 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "Codice IVA "
|
||||
|
@ -59,6 +59,8 @@ BEGIN
|
||||
ITEM "2|Fattura" MESSAGE ENABLE,2@|ENABLE,F_LORDO
|
||||
ITEM "3|Ordine" MESSAGE CLEAR,2@|ENABLE,F_LORDO
|
||||
ITEM "4|Scontrino" MESSAGE ENABLE,2@|DISABLE,F_LORDO|"X",F_LORDO
|
||||
ITEM "5|Conferimento soci" MESSAGE CLEAR,2@
|
||||
ITEM "6|Prestazioni ai soci" MESSAGE CLEAR,2@
|
||||
END
|
||||
|
||||
STRING F_PROFILO 8
|
||||
|
Loading…
x
Reference in New Issue
Block a user