Patch level : 10.0 163

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 3.2 patch 1262


git-svn-id: svn://10.65.10.50/trunk@17628 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2008-11-14 00:01:46 +00:00
parent 8ff4fb139e
commit 5cb56fdb07
22 changed files with 647 additions and 198 deletions

@ -131,17 +131,30 @@ Col(5) = 110
Col(6) = 111
Col(7) = 112
Col(8) = 113
Col(9) = 120
Col(10) = 121
Col(11) = 124
Col(12) = 103
Col(13) = 104
Col(14) = 127
Col(15) = 128
Col(16) = 129
Col(17) = 102
Col(18) = 101
Col(9) = 154
Col(10) = 120
Col(11) = 121
Col(12) = 124
Col(13) = 103
Col(14) = 104
Col(15) = 127
Col(16) = 128
Col(17) = 129
Col(18) = 102
Col(19) = 101
[RIGHE]
NTIPIRIGA=9
1=16
2=17
3=18
4=19
5=05
6=20
7=07
8=08
9=09
[HANDLERS]
NHANDLER=0
[PROFILOGRUPPO]
101 = 0
100 = 3

@ -1,89 +1,89 @@
TO "" 0 0 0 2
BU 402 10 2
BE
PR -19 -3 "~Chiudi ~Turno"
ME EXIT,27
PI 206
EN
BU 401 10 2
BE
PR -29 -3 "Chiudi ~Scontr."
PI 207
EN
BU 403 10 2
BE
PR -39 -3 "~Da Fatturare"
PI 210
EN
BU 18 10 2
BE
PR -49 -3 "~Sospendi"
ME EXIT,20082
PI 208
EN
BU 404 10 2
BE
PR -59 -3 "S~ospesi"
PI 209
EN
BU 405 10 2
BE
PR -69 -1 "~Permessi"
PI 211
EN
BU 17 10
BE
PR -13 -1 "~Elimina"
PR -79 -1 "~Elimina"
ME EXIT,127
PI 104
PI 154
EN
BU 2 10 2
BE
PR -23 -1 "~Annulla"
PR -89 -1 "~Annulla"
ME EXIT,27
PI 102
EN
BU 9 10 2
BE
PR -33 -1 "~Fine"
PR -99 -1 "~Fine"
ME EXIT,20334
PI 114
PI 164
EN
EN
TO "" 0 -4 0 4
BU 402 10 2
BE
PR -18 -3 "~Chiudi ~Turno"
ME EXIT,27
PI 206
EN
BU 401 10 2
BE
PR -28 -3 "Chiudi ~Scontr."
PI 207
EN
BU 403 10 2
BE
PR -38 -3 "~Da Fatturare"
PI 210
EN
BU 18 10 2
BE
PR -48 -3 "~Sospendi"
ME EXIT,20082
PI 208
EN
BU 404 10 2
BE
PR -58 -3 "S~ospesi"
PI 209
EN
BU 405 10 2
BE
PR -19 -1 "~Permessi"
PI 211
EN
TO "" 0 -2 0 2
BU 411 10 2
BE
PR -29 -1 "Funz.1"
PR -18 -1 "Funz.1"
EN
BU 412 10 2
BE
PR -39 -1 "Funz.2"
PR -28 -1 "Funz.2"
EN
BU 413 10 2
BE
PR -49 -1 "Funz.3"
PR -38 -1 "Funz.3"
EN
BU 414 10 2
BE
PR -59 -1 "Funz.4"
PR -48 -1 "Funz.4"
EN
BU 415 10 2
BE
PR -69 -1 "Funz.5"
PR -58 -1 "Funz.5"
EN
BU 416 10 2
BE
PR -79 -1 "Funz.6"
PR -68 -1 "Funz.6"
EN
BU 417 10 2
BE
PR -89 -1 "Funz.7"
PR -78 -1 "Funz.7"
EN
BU 418 10 2
BE
PR -99 -1 "Funz.8"
PR -88 -1 "Funz.8"
EN
EN
PA "Scontrino" -1 -1 0 0
@ -160,7 +160,7 @@ LI 175 30
BE
PR 2 2 "Tipo riga da aggiungere "
EN
SPREADSHEET 500 0 -2
SPREADSHEET 500 0 -4
BE
PR 2 3 ""
IT "Lordo@5"
@ -204,22 +204,48 @@ IT "Impianto@8"
IT "Linea@5"
IT "Codice\ncommessa@20"
IT "Fase\ncommessa@10"
IT "Codice aggiuntivo 1@20"
IT "Codice aggiuntivo 2@20"
IT "Jolly@20"
IT "Jolly@20"
IT "Jolly@20"
IT "Jolly@20"
IT "Jolly@20"
IT "Jolly@20"
IT "Jolly@20"
IT "Jolly@20"
IT "Jolly@20"
IT "Jolly@20"
IT "Riduzione prezzo@18"
EN
CU 708 15
ST 205 20
BE
PR 2 -1 "Imponibile "
FI IMPONIBILI
FL "D"
PR 1 -3 "Articolo "
US 47 KE 1
IN CODART 205
DI "Codice@20" CODART
DI "Descrizione@50" DESCR
OU 205 CODART
WA "Articolo assente"
FL "U"
FI CODART
ADD RU ve2 -3
EN
CU 709 15
NU 185 15
BE
PR 30 -1 "Imposta "
FI IMPOSTE
PR 1 -2 "Giacenza "
FL "D"
PI ".5"
EN
NU 186 15
BE
PR 1 -1 "Disponibilita' "
FL "D"
PI ".5"
EN
CU 610 15
BE
PR 55 -1 "Totale "
PR 41 -3 "@g@bTotale "
FI TOTDOC
FL "D"
EN
@ -291,7 +317,7 @@ FL "D"
EN
ST 105 20
BE
PR 2 6 "Articolo "
PR 2 5 "Articolo "
US 47 KE 1
IN CODART 105
DI "Codice@20" CODART
@ -314,71 +340,71 @@ PR 51 50 ""
FI CHECKED
FL "D"
EN
ST 106 10
ST 106 15
BE
PR 37 6 ""
PR 37 5 ""
FL "U"
US GCG
JO FCG AL 500 INTO CODTAB==CODTAB[1,1]
IN CODTAB[1,1] "1"
IN CODTAB[2,] 106
DI "Livello@20" 500@->S0
DI "Gruppo@10" CODTAB[2,]
DI "Gruppo@15" CODTAB[2,]
DI "Descrizione@30" S0
OU 106 CODTAB[2,]
ME 0 RESET,107|RESET,108|RESET,109
ME ENABLE,107
CH NORMAL
EN
ST 107 6
ST 107 15
BE
PR 50 6 ""
PR 55 5 ""
FL "U"
US GCG
JO FCG AL 500 INTO CODTAB==CODTAB[1,1]
IN CODTAB[1,1] "2"
IN CODTAB[2,] 107
DI "Livello@20" 500@->S0
DI "Gruppo@10" CODTAB[2,]
DI "Gruppo@15" CODTAB[2,]
DI "Descrizione@30" S0
OU 107 CODTAB[2,]
ME 0 RESET,108|RESET,109
ME ENABLE,108
CH NORMAL
EN
ST 108 6
ST 108 15
BE
PR 59 6 ""
PR 37 6 ""
FL "U"
US GCG
JO FCG AL 500 INTO CODTAB==CODTAB[1,1]
IN CODTAB[1,1] "3"
IN CODTAB[2,] 108
DI "Livello@20" 500@->S0
DI "Gruppo@10" CODTAB[2,]
DI "Gruppo@15" CODTAB[2,]
DI "Descrizione@30" S0
OU 108 CODTAB[2,]
ME 0 RESET,109
ME ENABLE,109
CH NORMAL
EN
ST 109 6
ST 109 15
BE
PR 67 6 ""
PR 55 6 ""
FL "U"
US GCG
JO FCG AL 500 INTO CODTAB==CODTAB[1,1]
IN CODTAB[1,1] "4"
IN CODTAB[2,] 109
DI "Livello@20" 500@->S0
DI "Gruppo@10" CODTAB[2,]
DI "Gruppo@15" CODTAB[2,]
DI "Descrizione@30" S0
OU 109 CODTAB[2,]
CH NORMAL
EN
ST 262 8
BE
PR 2 6 "Codice "
PR 2 5 "Codice "
FL "U"
US 55
IN CODICE 262
@ -740,6 +766,62 @@ DI "Codice Fase@10" CODTAB
CO OU 141
CH NORMAL
EN
ST 142 20
BE
PR 2 15 "Stringa 1 "
FI CODAGG1
EN
NU 143 13 5
BE
PR 42 15 "Stringa 2 "
FI CODAGG2
EN
ST 144 20
BE
PR 2 17 "Jolly "
EN
ST 145 20
BE
PR 2 17 "Jolly "
EN
ST 146 20
BE
PR 2 17 "Jolly "
EN
ST 147 20
BE
PR 2 17 "Jolly "
EN
ST 148 20
BE
PR 2 17 "Jolly "
EN
ST 149 20
BE
PR 2 17 "Jolly "
EN
ST 150 20
BE
PR 2 17 "Jolly "
EN
ST 151 20
BE
PR 2 17 "Jolly "
EN
ST 152 20
BE
PR 2 17 "Jolly "
EN
ST 153 20
BE
PR 2 17 "Jolly "
EN
CURRENCY 154 18
BE
PR 42 17 "Rid.prezzo "
FL "U"
FI RIDPREZZO
EN
BU 1 10 2
BE
PR -14 -1 ""

@ -177,15 +177,15 @@ BEGIN
FIELD BARPVAR
END
BOOLEAN FD_CODPVAR
/*BOOLEAN FD_CODPVAR
BEGIN
PROMPT 2 16 "Gestione codici a peso variabile"
FIELD CODPVAR
END
END */
STRING FD_QTACHAR 1
BEGIN
PROMPT 2 18 "Carattere sep.qta "
PROMPT 2 16 "Carattere sep.qta "
FIELD QTACHAR
END

@ -30,7 +30,7 @@ void TApertura_turno_app::main_loop()
{
TTurno_vendita t;
t.apri(false);
t.apri(true);
}
int vd0500(int argc, char* argv[])

@ -126,7 +126,7 @@ class TScontrino_application : public TMotore_application
char _print_type;
bool _chk_doc;
bool _barcode_peso_var;
bool _peso_var;
// bool _peso_var;
char _qta_char;
int _npag;
int _ncassa;
@ -170,6 +170,7 @@ public:
const TString & codmag() const { return _codmag;}
const TString & codmagc() const { return _codmagc;}
const TString & negozio() const { return _negozio;}
bool barcode_peso_variabile() const { return _barcode_peso_var; }
const TString_array & tv_cmds() const {return _tv_cmds;}
const TString_array & tv_labels() const {return _tv_labels;}
const TOperatore & curr_user() const { return _responsabile != NULL ? *_responsabile : *_cassiere;}
@ -189,11 +190,13 @@ class TScontrino_mask : public TDocumento_mask
{
int _row_to_remove;
TToken_string _deleted_rows;
TString80 _art_to_insert;
protected:
static bool scodart_handler( TMask_field& f, KEY key );
static bool sqta_handler( TMask_field& f, KEY key );
static bool sprezzo_handler( TMask_field& f, KEY key );
static bool sriduzione_handler( TMask_field& f, KEY key );
static bool turno_handler( TMask_field& f, KEY key );
static bool chiudi_handler( TMask_field& f, KEY key );
static bool sospendi_handler( TMask_field& f, KEY key );
@ -361,6 +364,13 @@ bool TScontrino_mask::ss_notify( TSheet_field& ss, int r, KEY key )
const TString & codmag = sapp().codmag();
const TString & codmagc = sapp().codmagc();
if (m._art_to_insert.full())
{
riga.put(RDOC_CODART, m._art_to_insert);
riga.zero(RDOC_CHECKED);
update = true;
}
if (quant > 0)
{
riga.put(RDOC_QTA, quant);
@ -463,7 +473,7 @@ void TScontrino_mask::on_idle()
selected--;
if (selected >= ss.items())
selected = ss.items() -1 ;
ss.select(selected);
ss.post_select(selected);
_row_to_remove = 0;
}
TDocumento_mask::on_idle();
@ -506,10 +516,12 @@ TVariable_mask * TScontrino_mask::riga_mask(int numriga)
}
}
}
if ( int pos = m->id2pos(FR_QTA) >= 0)
if (m->id2pos(FR_QTA) >= 0)
m->set_handler(FR_QTA, sqta_handler);
if ( int pos = m->id2pos(FR_PREZZO) >= 0)
if (m->id2pos(FR_PREZZO) >= 0)
m->set_handler(FR_PREZZO, sprezzo_handler);
if (m->id2pos(FR_RIDPREZZO) >= 0)
m->set_handler(FR_RIDPREZZO, sriduzione_handler);
}
}
return m;
@ -529,6 +541,10 @@ bool TScontrino_mask::search_art_handler( TMask_field& f, KEY key )
bool TScontrino_mask::scodart_handler(TMask_field& f, KEY key )
{
TMask& row_mask = f.mask();
bool barcode_var = false;
real prezzo;
if (f.to_check(key))
{
const TString & val = f.get();
@ -536,18 +552,52 @@ bool TScontrino_mask::scodart_handler(TMask_field& f, KEY key )
if (pos >= 0)
{
TMask& row_mask = f.mask();
const TString80 qta = val.left(pos);
const TString80 cod = val.mid(pos + 1);
row_mask.set(FR_CODART, cod, 0x3);
row_mask.set(FR_QTA, qta, 0x3);
return true;
}
const TString & cod = row_mask.get(FR_CODART);
const int codlen = cod.len();
barcode_var = sapp().barcode_peso_variabile() && cod.starts_with("2") && codlen >= 12 && codlen <= 14; // Barcode a peso variabile formato : 2CCCCCCPPPPPX C = Codice, P=PREZZO*100, X=CIN
if (barcode_var)
{
const TString8 codvar(cod.mid(1,6));
const long price = atol(cod.mid(7,5));
prezzo = real(price) / CENTO;
row_mask.set(FR_CODART, codvar, 0x2);
row_mask.reset(FR_CODARTMAG);
row_mask.reset(FR_CHECKED);
}
}
const bool ok = ::codart_handler(f, key);
if (f.to_check(key))
{
if (barcode_var)
{
const real prezzo_orig = row_mask.get_real(FR_PREZZO);
if (prezzo_orig != ZERO)
{
const real qta = prezzo / prezzo_orig;
row_mask.set(FR_QTA, qta);
}
else
{
row_mask.set(FR_PREZZO, prezzo);
row_mask.set(FR_QTA, UNO);
}
}
if (row_mask.get(FR_CODARTMAG).blank() && yesno_box("Articolo % s assente devo inserirlo", (const char *) row_mask.get(FR_CODART)))
f.on_key(K_F9);
}
if (ok && f.to_check(key, false))
{
TMask& row_mask = f.mask();
@ -577,7 +627,7 @@ bool TScontrino_mask::sqta_handler(TMask_field& f, KEY key )
mask.doc()[drow].autosave(s);
mask.update_progs();
}
return ::qta_handler(f, key);
return ::qtaart_handler(f, key);
}
@ -599,18 +649,65 @@ bool TScontrino_mask::sprezzo_handler(TMask_field& f, KEY key )
}
bool TScontrino_mask::sriduzione_handler(TMask_field& f, KEY key )
{
if (f.to_check(key, false))
{
TMask& row_mask = f.mask();
TSheet_field& s = *row_mask.get_sheet();
TDocumento_mask & mask = (TDocumento_mask &) s.mask();
TDocumento & doc = mask.doc();
const int srow = s.selected();
const int drow = srow + 1;
TRiga_documento & riga = doc[drow];
real prezzo = riga.get(RDOC_PREZZOL);
prezzo += riga.get_real(RDOC_RIDPREZZO);
prezzo -= row_mask.get_real(FR_RIDPREZZO);
row_mask.set(FR_PREZZO, prezzo);
s.update_row(srow);
doc[drow].autosave(s);
mask.update_progs();
}
return true;
}
bool TScontrino_mask::chiudi_handler( TMask_field& f, KEY key )
{
if (key == K_SPACE)
{
TChiusura_scontrino_mask & mask = sapp().chiusura();
TTurno_vendita & turno = sapp().turno();
TScontrino_mask & docmask = (TScontrino_mask &) f.mask();
TDocumento & doc = docmask.doc();
const int nrows = doc.physical_rows();
bool zero_doc = true;
int r;
for (r = nrows; zero_doc && r >= 1; r--)
{
const TRiga_documento & row = doc[r];
if (row.imponibile() != ZERO)
zero_doc = false;
}
if (zero_doc)
return false;
for (r = nrows; r >= 1; r--)
{
const TRiga_documento & row = doc[r];
bool valid_row = row.get(RDOC_CODART).full() || row.get(RDOC_DESCR).full() ||
row.get_real(RDOC_QTA) != ZERO || row.get_real(RDOC_PREZZO) != ZERO;
if (!valid_row)
doc.destroy_row(r);
}
TChiusura_scontrino_mask & mask = sapp().chiusura();
TTurno_vendita & turno = sapp().turno();
mask.reset_mask(sapp().ncassa(), docmask.get_date(F_DATADOC), turno.cassa_attuale(), doc);
mask.show(-2, sapp().curr_user().can_invoice());
mask.show(-3, sapp().curr_user().can_invoice());
mask.enable(DLG_OK, doc.totale_doc() == ZERO);
if (mask.run() == K_ENTER)
{
do
@ -768,7 +865,7 @@ bool TScontrino_mask::search_sospesi_handler(TMask_field& f, KEY key)
TScontrino_mask & m = (TScontrino_mask &) f.mask();
TRectype filtrec(LF_DOC);
filtrec.put(DOC_PROVV, m.get(F_PROVV));
filtrec.put(DOC_PROVV, "P");
filtrec.put(DOC_ANNO, m.get(F_ANNO));
filtrec.put(DOC_CODNUM, m.get(F_CODNUM));
@ -777,7 +874,7 @@ bool TScontrino_mask::search_sospesi_handler(TMask_field& f, KEY key)
rel.lfile().set_curr(new TDocumento);
TCursor cur(&rel, "", 1, &filtrec, &filtrec);
TString80 filt; filt.format("(STATO<\"%c\")&&(TIPODOC==\"%s\")", m.doc().tipo().stato_chiuso(), (const char *) m.get(F_TIPODOC));
TString80 filt; filt.format("(TIPODOC==\"%s\")", (const char *) m.get(F_TIPODOC));
cur.setfilter(filt);
cur.set_filterfunction(sospesi_filter);
@ -790,7 +887,7 @@ bool TScontrino_mask::search_sospesi_handler(TMask_field& f, KEY key)
const TString16 ndoc = sheet.row(-1).get(2);
TDate oggi(TODAY);
m.set(F_PROVV, "D");
m.set(F_PROVV, "P");
f.mask().set(F_ANNO, oggi.year());
m.set(F_CODNUM, sapp().numdoc());
m.set(F_NDOC, ndoc);
@ -812,31 +909,10 @@ bool TScontrino_mask::tasti_veloci_handler(TMask_field& f, KEY key)
{
TScontrino_mask & docmask = (TScontrino_mask &) f.mask();
TSheet_field & sf = docmask.sfield(F_SHEET);
int r = sf.items() == 0 ? 0 : sf.selected() + 1;
// int r = sf.items() == 0 ? 0 : sf.selected() + 1;
if (docmask.ss_notify(sf, r, K_INS))
{
r = sf.insert(r, false, false);
if (r >= 0)
{
docmask.ss_notify(sf, r, K_CTRL + K_INS);
TToken_string & row = sf.row(r);
TDocumento & doc = docmask.doc();
TRiga_documento & rdoc = doc[r + 1];
rdoc.put(RDOC_CODART, cmd);
rdoc.zero(RDOC_CHECKED);
rdoc.autoload(sf);
sf.check_row(r);
rdoc.autosave(sf);
sf.force_update();
sf.select(r);
sf.set_focus();
sf.set_dirty();
docmask.ss_notify(sf, r, K_ENTER);
docmask.update_progs();
}
}
docmask._art_to_insert = cmd;
sf.insert(-1, true, true);
}
}
@ -896,18 +972,25 @@ void TChiusura_scontrino_mask::init(TConfig & d)
void TChiusura_scontrino_mask::update_doc(TScontrino_mask & m, const TTurno_vendita & t, bool chiudi)
{
TDocumento & doc = m.doc();
const char stato = doc.tipo().stato_chiuso();
const char stato = get_bool(F_ACCONTO) ? doc.tipo().stato_finale_inserimento() : doc.tipo().stato_chiuso();
doc.put(TRN_CODCASSA, t.ncassa());
doc.put(TRN_PROGR, t.nturno());
doc.put(TRN_USERNAME, t.user());
doc.put("TEMPUSERNAME", t.superuser());
TToken_string del(doc.get("DELETED_ROWS"), '£');
del.add(m.deleted_rows());
doc.put("DELETED_ROWS", del);
if (chiudi)
{
if (doc.get_char(DOC_PROVV) == 'P')
{
TDocumento old(doc);
doc.put(DOC_PROVV, "D");
doc.zero(DOC_NDOC);
doc.renum();
m.set(F_PROVV, "D");
m.set(F_NDOC, doc.get(DOC_NDOC));
const int err = old.remove();
if (err != NOERR)
warning_box("Errore %d nell'eliminazione dello scontrino sospeso", err);
}
const long ora = daytime();
doc.stato(stato);
@ -931,6 +1014,22 @@ void TChiusura_scontrino_mask::update_doc(TScontrino_mask & m, const TTurno_vend
doc.put(DOC_CODCF, codcf);
}
}
else
{
doc.put(DOC_PROVV, "P");
doc.zero(DOC_NDOC);
doc.renum();
m.set(F_PROVV, "P");
m.set(F_NDOC, doc.get(DOC_NDOC));
}
doc.put(TRN_CODCASSA, t.ncassa());
doc.put(TRN_PROGR, t.nturno());
doc.put(TRN_USERNAME, t.user());
doc.put("TEMPUSERNAME", t.superuser());
TToken_string del(doc.get("DELETED_ROWS"), '£');
del.add(m.deleted_rows());
doc.put("DELETED_ROWS", del);
}
real TChiusura_scontrino_mask::calcola_saldo()
@ -952,6 +1051,11 @@ real TChiusura_scontrino_mask::calcola_resto()
for (short id = F_INC01; id <= F_INC08; id++, i++)
resto += get_real(id);
enable(DLG_OK, resto >= ZERO);
if (field(DLG_OK).enabled())
{
set(F_ACCONTO, "");
disable(F_ACCONTO);
}
return resto > ZERO ? resto : ZERO;
}
@ -994,7 +1098,7 @@ bool TChiusura_scontrino_mask::on_field_event(TOperable_field& o, TField_event e
}
break;
case F_CODCFC:
enable(DLG_OK, field(DLG_OK).enabled() || o.get().full());
enable(DLG_OK, field(DLG_OK).enabled() || o.get().full() || get(F_ACCONTO).full());
break;
default:
break;
@ -1013,7 +1117,7 @@ void TChiusura_scontrino_mask::reset_mask(int ncassa, const TDate & data, const
if (aperto)
set(F_CASSAINI, cassa_attuale);
enable(F_SALDO, aperto);
// enable(F_SALDO, aperto);
for (short i = F_INC01 ; i<= F_INC08; i++)
if (field(i).shown())
{
@ -1029,6 +1133,7 @@ void TChiusura_scontrino_mask::reset_mask(int ncassa, const TDate & data, const
enable(-3, da_fatturare);
disable(DLG_OK);
enable(F_ACCONTO);
}
TScontrino_application::~TScontrino_application()
@ -1077,7 +1182,7 @@ bool TScontrino_application::user_create( )
_tipodocf = d.get("TIPODOCF");
_chk_doc = d.get_bool("CHECKDOC");
_barcode_peso_var = d.get_bool("BARPVAR");
_peso_var = d.get_bool("CODPVAR");
// _peso_var = d.get_bool("CODPVAR");
_qta_char = d.get_char("QTACHAR", NULL, -1, ')');
_chiusura->init(d);
@ -1185,6 +1290,7 @@ void TScontrino_application::set_authorizations(TMask & m)
const int items = sf.items();
sf.enable_column(FR_PREZZO, curr_user().can_change_price());
sf.enable_column(FR_RIDPREZZO, curr_user().can_change_price());
sf.enable_column(FR_SCONTO, curr_user().can_change_sconti());
for (int i = 0; i < items; i++)
sf.check_row(i);
@ -1284,6 +1390,7 @@ void TScontrino_application::print_wincor()
TScontrino_mask & m = (TScontrino_mask & ) edit_mask();
TDocumento & doc = m.doc();
const TString & cofi = doc.clifor().get(CLI_COFI);
TCond_vendita cv(NULL, NULL);
if (cofi.full())
{
@ -1300,7 +1407,7 @@ void TScontrino_application::print_wincor()
{
const TRiga_documento& riga = doc[r];
if (riga.is_merce())
if (riga.get(RDOC_DESCR).full() || riga.importo(true, true) != ZERO)
{
cmd = "[PLU,";
tmp = riga.get(RDOC_DESCR);
@ -1308,23 +1415,54 @@ void TScontrino_application::print_wincor()
para = tmp;
cmd << para.get(0);
real price = riga.get_real(RDOC_PREZZOL);
tmp = price.string(text_len, 2); tmp.trim();
if (tmp.ends_with(".00") && _doppio_zero)
tmp.strip(".");
cmd << ',' << tmp;
if (riga.is_sconto())
{
cmd = "[SBT]";
aga_dde_execute(conn, cmd);
if (riga.is_sconto_perc())
{
cmd = "[SCP2,";
cv.set_sconto(riga.get(RDOC_SCONTO));
real perc = ((1 - cv.sconto_val()) * CENTO);
tmp = perc.string(text_len, 2); tmp.trim();
if (tmp.ends_with(".00") && _doppio_zero)
tmp.strip(".");
}
else
{
real price = -riga.importo(true, true);
const TRectype & anamag = cache().get(LF_ANAMAG, riga.get(RDOC_CODARTMAG));
int rep = riga.get_int(ANAMAG_REPARTO);
cmd = "[SCV,";
tmp = price.string(text_len, 2); tmp.trim();
if (tmp.ends_with(".00") && _doppio_zero)
tmp.strip(".");
}
cmd << tmp << ']';
}
else
{
real price = riga.prezzo(true, true);
tmp = price.string(text_len, 2); tmp.trim();
if (tmp.ends_with(".00") && _doppio_zero)
tmp.strip(".");
cmd << ',' << tmp;
const TRectype & anamag = cache().get(LF_ANAMAG, riga.get(RDOC_CODARTMAG));
int rep = riga.get_int(ANAMAG_REPARTO);
if (rep <= 0 || rep > 25)
rep = 1;
cmd << ',' << rep;
if (rep <= 0 || rep > 25)
rep = 1;
cmd << ',' << rep;
real qta = riga.get(RDOC_QTA);
real qta = riga.get(RDOC_QTA);
tmp = qta.string(10, 5); tmp.trim();
cmd << ',' << tmp << ']';
if (riga.is_spese() && riga.spesa().tipo() == 'V')
qta = UNO;
tmp = qta.string(10, 5); tmp.trim();
cmd << ',' << tmp << ']';
}
aga_dde_execute(conn, cmd);
}
@ -1404,7 +1542,7 @@ void TScontrino_application::print_multiprinter_nettuna()
{
const TRiga_documento& riga = doc[r];
if (riga.is_merce())
if (riga.get(RDOC_CODART).full() || riga.importo(true, true) != ZERO)
{
real qta = riga.get(RDOC_QTA);
const bool storno = qta < ZERO;
@ -1412,7 +1550,8 @@ void TScontrino_application::print_multiprinter_nettuna()
para = riga.get(RDOC_DESCR);
cmd << para.get(0) << ";";
real price = riga.get_real(RDOC_PREZZOL);
real price = riga.prezzo(true, true);
tmp = price.stringa(18, 2); tmp.trim();
cmd << tmp << ";";
qta = abs(qta);
@ -1435,8 +1574,8 @@ void TScontrino_application::print_multiprinter_nettuna()
if (riga.is_sconto_perc())
{
cv.set_sconto(riga.get(RDOC_SCONTO));
val = cv.sconto_val() * CENTO;
magg = val < ZERO;
val = ((1 - cv.sconto_val()) * CENTO);
magg = val > ZERO;
val = abs(val);
cmd = magg ? "MAG%" : "SCO%";
}

@ -17,6 +17,7 @@
#define F_CODCFC 122
#define F_RAGSOCC 123
#define F_DAFATT 124
#define F_ACCONTO 125
#define F_CODSEARCH 205
#define DLG_FATT 200

@ -95,6 +95,14 @@ BEGIN
GROUP 3
END
BOOEAN F_ACCONTO
BEGIN
PROMPT 46 15 "Acconto"
MESSAGE TRUE DISABLE,DLG_OK
MESSAGE TRUE ENABLE,DLG_OK
GROUP 3
END
LIST F_TIPOCFC 1 11
BEGIN
PROMPT 2 17 "Tipo "

@ -5,7 +5,7 @@
#define FD_CODLIST 106
#define FD_CHECKDOC 107
#define FD_BARPVAR 108
#define FD_CODPVAR 109
// #define FD_CODPVAR 109
#define FD_QTACHAR 110
#define ROW_INC 10

@ -206,12 +206,31 @@ void TTurno_vendita::leggi(long progr)
}
if (r.items() > 0L)
{
const TString & real_user = ::user();
r.move_last();
if (progr < 0L)
{
bool found = false;
while (!found)
{
_rec = r.cursor()->curr();
const TString & u = _rec.get(TRN_USERNAME);
found = real_user == u;
if (!r.move_prev())
break;
}
if (!found)
r.move_last();
}
_rec = r.cursor()->curr();
const long fine = _rec.get_long(TRN_FINE);
progr = _rec.get_long(TRN_PROGR);
aperto = fine == 0L;
const TString & u = _rec.get(TRN_USERNAME);
if (u == real_user)
aperto = fine == 0L;
}
if (!aperto)
{
@ -223,11 +242,6 @@ void TTurno_vendita::leggi(long progr)
_rec.put(TRN_ANNO, _anno);
_rec.put(TRN_PROGR, progr);
}
else
{
_datafine = TDate(TODAY);
_orafine = 0L;
}
}
const long TTurno_vendita::ora_inizio() const
@ -238,45 +252,45 @@ const long TTurno_vendita::ora_inizio() const
bool TTurno_vendita::apri(const bool select_prev)
{
leggi();
if (aperto())
return error_box(FR("Turno aperto dall'Utente %s"), (const char *) _rec.get(TRN_USERNAME));
TApri_mask m(*this);
TDocumento d('D', _anno, _codnum, 0L);
const long fndoc = d.renum_ndoc();
const long ora = daytime();
m.show(F_TURNO, select_prev);
m.set(F_CASSA, _cassa);
m.set(F_USERNAME, user());
m.set(F_HINIZIO, ora / 10000);
m.set(F_MINIZIO, (ora / 100) % 100);
m.set(F_SINIZIO, ora % 100);
if (m.run() == K_ENTER)
if (!aperto())
{
const long idturno = m.get_long(F_TURNO);
TApri_mask m(*this);
TDocumento d('D', _anno, _codnum, 0L);
const long fndoc = d.renum_ndoc();
const long ora = daytime();
if (idturno > 0L)
m.show(F_TURNO, select_prev);
m.set(F_CASSA, _cassa);
m.set(F_USERNAME, ::user());
m.set(F_HINIZIO, ora / 10000);
m.set(F_MINIZIO, (ora / 100) % 100);
m.set(F_SINIZIO, ora % 100);
if (m.run() == K_ENTER)
{
leggi(idturno);
riapri();
return true;
}
else
{
const real cassa_ini = m.get_real(F_CASSAINI);
const long ora_inizio = m.get_int(F_HINIZIO) * 10000 + m.get_int(F_MINIZIO) * 100 + m.get_int(F_SINIZIO);
TLocalisamfile f(LF_TURNI);
const long idturno = m.get_long(F_TURNO);
if (idturno > 0L)
{
leggi(idturno);
riapri();
return true;
}
else
{
const real cassa_ini = m.get_real(F_CASSAINI);
const long ora_inizio = m.get_int(F_HINIZIO) * 10000 + m.get_int(F_MINIZIO) * 100 + m.get_int(F_SINIZIO);
TLocalisamfile f(LF_TURNI);
_rec.put(TRN_USERNAME, m.get(F_USERNAME));
_rec.put(TRN_CASSAINI, cassa_ini);
_rec.put(TRN_CASSAFIN, cassa_ini);
_rec.put(TRN_DATA, m.get_date(F_DATA));
_rec.put(TRN_INIZIO, ora_inizio);
_rec.put(TRN_FNDOC, fndoc);
_err = _rec.write(f);
_rec.put(TRN_USERNAME, m.get(F_USERNAME));
_rec.put(TRN_CASSAINI, cassa_ini);
_rec.put(TRN_CASSAFIN, cassa_ini);
_rec.put(TRN_DATA, m.get_date(F_DATA));
_rec.put(TRN_INIZIO, ora_inizio);
_rec.put(TRN_FNDOC, fndoc);
_err = _rec.write(f);
}
return _err == NOERR;
}
return _err == NOERR;
}
return false;
}
@ -292,7 +306,7 @@ bool TTurno_vendita::riapri()
bool TTurno_vendita::chiudi()
{
if (!riaperto())
leggi();
leggi(-1);
if (chiuso())
return error_box(FR("Turno chiuso"));

@ -53,7 +53,7 @@ public:
// @ cmember report
TReport & report() {return _rep;}
// @ cmember apri il turno
bool apri(const bool select_prev = true);
bool apri(const bool select_prev = false);
// @ cmember riapri il turno
bool riapri();
// @ cmember chiudi il turno

@ -54,7 +54,7 @@ END
NUMBER F_HFINE 2
BEGIN
PROMPT 2 5 "Ora "
FLAGS "ZDU"
FLAGS "ZU"
NUM_EXPR #F_HFINE<24
GROUP 1
END
@ -62,7 +62,7 @@ END
NUMBER F_MFINE 2
BEGIN
PROMPT 26 5 ":"
FLAGS "ZDU"
FLAGS "ZU"
NUM_EXPR #F_MFINE<60
GROUP 1
END
@ -70,7 +70,7 @@ END
NUMBER F_SFINE 2
BEGIN
PROMPT 30 5 ":"
FLAGS "ZDU"
FLAGS "ZU"
NUM_EXPR #F_SFINE<60
GROUP 1
END

@ -11,7 +11,8 @@ Fields=B0,1|B1,1|B2,1|B3,1|B4,1|B5,1|B6,1|B7,1|B8,1|B9,1
Fields=B10,1|B11,1|B12,1|B13,1|B14,1|B15,1|FPC,1
[Data]
FRD|VDIMPLOR|Importo lordo vendita al dettaglio|SOMMA("IMPONIBILE()","(TIPO()=='M'&&(QTA>0))")|||||||||||18||||||||||||||||||||||||||||||||||||||||||||||X|X|||||||||||||||
FRD|VDQTALOR|Quantita' lorda vendita al dettaglio|SOMMA("QTA","(TIPO()=='M'&&(QTA>0))")|||||||||||18||||||||||||||||||||||||||||||||||||||||||||||X| |||||||||||||||
FRD|VDIMPRES|Importo reso vendita al dettaglio|SOMMA("IMPONIBILE()","(TIPO()=='M'&&(QTA<0))")|||||||||||18||||||||||||||||||||||||||||||||||||||||||||||X|X|||||||||||||||
FRD|VDQTARES|Quantita' resa vendita al dettaglio|SOMMA("-QTA","(TIPO()=='M'&&(QTA<0))")|||||||||||18||||||||||||||||||||||||||||||||||||||||||||||X| |||||||||||||||
TRI|16|Merce al dettaglio|||||||M||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |||||||
TRI|17|Spese a valore al dettaglio|||||||S||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |||||||
TRI|18|Spese a quantita' e prezzo al dettaglio|||||||S||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |||||||
TRI|19|Spese in percentuale al dettaglio|||||||S||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |||||||
TRI|20|Prestazioni al dettaglio|||||||P||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |||||||

9
vd/verig16.ini Executable file

@ -0,0 +1,9 @@
#Profilo di riga tipo merce
[MAIN]
CALCOLI=*
CAMPICALC=
IMPONIBILE=IMPNS
[HANDLERS]
NHANDLER = 0

48
vd/verig16.uml Executable file

@ -0,0 +1,48 @@
#include "..\ve\verigdef.h"
#define FULL_SCREEN
// else
// #define MASK_WIDTH 60
// #define MASK_HEIGHT 14
//
#define MASK_TITLE1 "Merce"
#define PAGE_2
DEFINE_FIELD(CODMAG)
DEFINE_FIELD(DESMAG)
DEFINE_FIELD(CODDEP)
DEFINE_FIELD(DESDEP)
DEFINE_FIELD(CODART)
DEFINE_FIELD(DESCRART)
DEFINE_FIELD(UMQTA)
DEFINE_FIELD(QTA)
DEFINE_FIELD(PREZZO)
DEFINE_FIELD(QTAEVASA)
DEFINE_FIELD(RIGAEVASA)
DEFINE_FIELD(DATACONS)
F_POS(PREZZO, 42, 9,"Prezzo " )
DEFINE_FIELD(SCONTO)
F_POS(SCONTO, 2, 11,"Sconto " )
DEFINE_FIELD(PERCPROV)
F_POS(PERCPROV, 42, 11,"Provvigione" )
DEFINE_FIELD(CODIVA)
F_POS(CODIVA, 2, 13,"Cod. IVA " )
DEFINE_FIELD(DESIVA)
F_POS(DESIVA, 22, 13,"" )
DEFINE_FIELD(CAUS)
DEFINE_FIELD(NCOLLI)
DEFINE_FIELD(PNETTO)
DEFINE_FIELD(TARA)
DEFINE_FIELD(DESCRCAUS)
DEFINE_FIELD(CODMAGC)
DEFINE_FIELD(DESMAGC)
DEFINE_FIELD(CODDEPC)
DEFINE_FIELD(DESDEPC)
DEFINE_FIELD(IMPIANTO)
DEFINE_FIELD(LINEA)
DEFINE_FIELD(CODCMS)
DEFINE_FIELD(RIDPREZZO)
#include "..\ve\verig.uml"

9
vd/verig17.ini Executable file

@ -0,0 +1,9 @@
#Profilo di riga tipo spese trasporto
[MAIN]
CALCOLI=*
CAMPICALC=
IMPONIBILE=IMPNS
[HANDLERS]
NHANDLER = 0

27
vd/verig17.uml Executable file

@ -0,0 +1,27 @@
#include "..\ve\verigdef.h"
#define FULL_SCREEN
#define MASK_TITLE1 "Spese di tipo (Valore)"
#define PAGE_2
DEFINE_FIELD(CODSPV)
DEFINE_FIELD(DESCRSPV)
DEFINE_FIELD(UMQTASP)
DEFINE_FIELD(VALORE)
DEFINE_FIELD(QTA)
DEFINE_FIELD(SCONTO)
F_POS(SCONTO, 2, 11,"Sconto " )
DEFINE_FIELD(CODIVA)
F_POS(CODIVA, 2, 13,"Cod. IVA " )
DEFINE_FIELD(DESIVA)
F_POS(DESIVA, 22, 13,"" )
DEFINE_FIELD(CODCMS)
DEFINE_FIELD(RIDPREZZO)
F_FLG(QTAGG1, "")
#include "..\ve\verig.uml"

9
vd/verig18.ini Executable file

@ -0,0 +1,9 @@
#Profilo di riga tipo spese imballo
[MAIN]
CALCOLI=*
CAMPICALC=
IMPONIBILE=IMPNS
[HANDLERS]
NHANDLER = 0

23
vd/verig18.uml Executable file

@ -0,0 +1,23 @@
#include "..\ve\verigdef.h"
#define FULL_SCREEN
#define MASK_TITLE1 "Spese di tipo (Quantita'/Prezzo)"
#define PAGE_2
DEFINE_FIELD(CODSPQ)
DEFINE_FIELD(DESCRSPQ)
DEFINE_FIELD(UMQTASP)
DEFINE_FIELD(QTA)
DEFINE_FIELD(PREZZO)
DEFINE_FIELD(SCONTO)
F_POS(SCONTO, 2, 11,"Sconto " )
DEFINE_FIELD(CODIVA)
F_POS(CODIVA, 2, 13,"Cod. IVA " )
DEFINE_FIELD(DESIVA)
F_POS(DESIVA, 22, 13,"" )
DEFINE_FIELD(CODCMS)
DEFINE_FIELD(RIDPREZZO)
#include "..\ve\verig.uml"

9
vd/verig19.ini Executable file

@ -0,0 +1,9 @@
#Profilo di riga tipo spese generali in percentuale
[MAIN]
CALCOLI=*
CAMPICALC=
IMPONIBILE=IMPNN
[HANDLERS]
NHANDLER = 0

21
vd/verig19.uml Executable file

@ -0,0 +1,21 @@
#include "..\ve\verigdef.h"
#define FULL_SCREEN
#define MASK_TITLE1 "Spese di tipo (Percentuale)"
DEFINE_FIELD(CODSPP)
DEFINE_FIELD(DESCRSPP)
DEFINE_FIELD(PERCSP)
DEFINE_FIELD(CODIVA)
F_POS(CODIVA, 2, 11,"Cod. IVA " )
DEFINE_FIELD(DESIVA)
F_POS(DESIVA, 22, 11,"" )
DEFINE_FIELD(CODCMS)
DEFINE_FIELD(RIDPREZZO)
#define PAGE_2
#include "..\ve\verig.uml"

9
vd/verig20.ini Executable file

@ -0,0 +1,9 @@
#Profilo di riga tipo prestazioni
[MAIN]
CALCOLI=*
CAMPICALC=
IMPONIBILE=IMPNS
[HANDLERS]
NHANDLER = 0

27
vd/verig20.uml Executable file

@ -0,0 +1,27 @@
#include "..\ve\verigdef.h"
#define FULL_SCREEN
#define MASK_TITLE1 "Prestazioni"
#define PAGE_2
DEFINE_FIELD(CODPRS)
DEFINE_FIELD(DESCRPRS)
DEFINE_FIELD(UMQTASP)
DEFINE_FIELD(QTA)
DEFINE_FIELD(PREZZO)
DEFINE_FIELD(QTAEVASA)
DEFINE_FIELD(RIGAEVASA)
DEFINE_FIELD(DATACONS)
DEFINE_FIELD(SCONTO)
F_POS(SCONTO, 2, 11,"Sconto " )
DEFINE_FIELD(CODIVA)
F_POS(CODIVA, 2, 13,"Cod. IVA " )
DEFINE_FIELD(DESIVA)
F_POS(DESIVA, 22, 13,"" )
DEFINE_FIELD(CODCMS)
DEFINE_FIELD(RIDPREZZO)
#include "..\ve\verig.uml"