Patch level : aga 2.0 387

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Riportata la versione AGA 1.7 patch 2386


git-svn-id: svn://10.65.10.50/trunk@10768 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2003-01-28 13:33:45 +00:00
parent 30ecba4392
commit 0ae61deb48
25 changed files with 471 additions and 91 deletions

View File

@ -46,6 +46,7 @@
#define F_RAGSOC 165
#define F_REGSOSPEXT 166
#define F_STAMPA_PLAFONDS 167
#define F_STAMPA_NUMERI 168
#define F_PRINTER 201
#define F_CONFIG 202

View File

@ -158,7 +158,7 @@ END
STRING F_ATTIVITA 5
BEGIN
PROMPT 1 9 "Codice attivita' "
PROMPT 1 8 "Codice attivita' "
FIELD S8
FLAGS "URZ"
GROUP GRP_VENDITE GRP_ACQUISTI GRP_RIEPIVA
@ -176,7 +176,7 @@ END
NUMBER F_CODULC 3
BEGIN
PROMPT 35 9 "Unita' locale "
PROMPT 35 8 "Unita' locale "
FLAGS "R"
GROUP GRP_VENDITE GRP_ACQUISTI GRP_RIEPIVA GRP_INCASSI GRP_GIORNALE GRP_LSOCIALI GRP_GIORNMAG
FIELD I7
@ -198,22 +198,26 @@ END
NUMBER F_PAGSTAMP 5
BEGIN
PROMPT 1 11 "Pagine stampate "
PROMPT 1 10 "Pagine stampate "
HELP "Numero di pagine gia' stampate"
FIELD I1
FLAGS "R"
GROUP 1
END
NUMBER F_PAGNUM 5
BEGIN
PROMPT 35 11 "Pagine numerate "
PROMPT 35 10 "Pagine numerate "
HELP "numero di pagine di cui e' stata stampata la numerazione"
FIELD I2
FLAGS "R"
GROUP 1
END
BOOLEAN F_STAMPA_NUMERI
BEGIN
PROMPT 1 11 "Stampa numeri di pagina durante la stampa del registro"
FIELD S11
END
DATE F_DATAVID
BEGIN
PROMPT 1 13 "Data vidimazione "

View File

@ -110,10 +110,11 @@ TMask* TPrimanota_application::load_mask(int n)
ism.set_handler(112, fase_handler);
else
{
ism.hide(111); ism.hide(112);
is.delete_column(112); is.delete_column(111);
for (short id = 155; id <= 157; id++)
for (short id = 111; id <= 114; id++)
{
is.delete_column(id);
ism.hide(id); // Descrizioni commessa e fase
}
}
// Se esiste lo sheet delle rate

View File

@ -940,6 +940,23 @@ HIDDEN void replace_number(TViswin* vsw, long rig, real num, int tab)
vsw->replace(rig, str, tab);
}
real Visliq_app::min_vers(int anno, int month)
{
TInteressi_IVA_table ver;
real min;
if (month > 12)
{
if (ver.read(_year, 12) == NOERR)
min = ver.get(I_ANNUALE);
}
else
{
if (ver.read(_year, month) == NOERR)
min = ver.get(I_PERIODICO);
}
return min;
}
void Visliq_app::recalc_liq_data(TViswin* vsw, real& rimb, real& rett, real& vers,
real& acc, real& varimp, real& impnonver, real & credspec,
TString& d1, TString& d2, TString& d3, TDate& date,
@ -1194,11 +1211,11 @@ void Visliq_app::recalc_liq_data(TViswin* vsw, real& rimb, real& rett, real& ver
long idv = vsw->search("IMPORTO DA", x, iadoc, TRUE);
if (idv < 0)
idv = iadoc+6;
if (risul > ZERO)
{
ln = "IMPORTO DA ";
if (risul < IVA_DA_RIPORTARE && month < 13)
if (risul < min_vers(_year, month) && month < 13)
ln << "NON ";
ln << "VERSARE ";
replace_number(vsw, idv, risul, 75);
@ -1342,8 +1359,9 @@ void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field
risc -= cred;
risd -= debt;
// aggiunge nuovo credito o debito
if (rstart.sign() < 0 || (rstart.sign() > 0 && rstart < IVA_DA_RIPORTARE))
// aggiunge nuovo credito o debito
real min = min_vers(_year, i);
if (rstart.sign() < 0 || (rstart.sign() > 0 && rstart < min))
risl += rstart;
real newcred(0.0);
@ -1353,7 +1371,7 @@ void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field
newcred = -rstart;
risc -= rstart;
}
if (rstart.sign() > 0 && rstart < IVA_DA_RIPORTARE)
if (rstart.sign() > 0 && rstart < min)
{
newdebt = rstart;
risd += rstart;
@ -1827,8 +1845,9 @@ void Visliq_app::write_general(TMask& m)
risc -= cred;
risd -= debt;
// aggiunge nuovo credito o debito
if (rstart.sign() < 0 || (rstart.sign() > 0 && rstart < IVA_DA_RIPORTARE))
// aggiunge nuovo credito o debito
real min = min_vers(_year, i);
if (rstart.sign() < 0 || (rstart.sign() > 0 && rstart < min))
risl += rstart;
real newcred(0.0);
@ -1838,7 +1857,7 @@ void Visliq_app::write_general(TMask& m)
newcred = -rstart;
risc -= rstart;
}
if (rstart.sign() > 0 && rstart < IVA_DA_RIPORTARE)
if (rstart.sign() > 0 && rstart < min)
{
newdebt = rstart;
risd += rstart;

View File

@ -4,7 +4,6 @@
#include <tabutil.h>
// IVA a debito da riportare al mese successivo
#define IVA_DA_RIPORTARE real(50000)
class TSheet_field;
class TViswin;
@ -99,6 +98,7 @@ public:
bool select_butt(TMask& m);
TTable* del() { return _del; }
real Visliq_app::min_vers(int anno, int month);
// riaggiusta la liquidazione del mese dato
void recalc_liq_data(TViswin* v, real& rimb, real& rett, real& vers, real& acc,
real& varimp, real& impnonver, real& credspec,

View File

@ -797,7 +797,9 @@ bool TDistinta_mask::on_distsheet_event(TOperable_field& o, TField_event e, long
TQuantita qta(art, um, ZERO);
m.set(F_UMEXPR, qta.um());
}
}
}
if (e == fe_modify && rec.get_bool("SOSPESO"))
warning_box("Attenzione l'articolo %s e' sospeso.", (const char *) rec.get(ANAMAG_CODART));
break;
case LF_DIST :
m.set(F_DESCOMP, rec.get("DESCR"));
@ -951,7 +953,7 @@ bool TDistinta_mask::on_field_event(TOperable_field& o, TField_event e, long jol
set(F_DESCR, mag.get(ANAMAG_DESCR));
set(F_PREZZO, mag.get(ANAMAG_COSTSTD));
set(F_PESO, mag.get(ANAMAG_PESO));
set(F_UMP, mag.get(ANAMAG_UMP));
set(F_UMP, mag.get(ANAMAG_UMP));
}
break;
case 'L':

View File

@ -177,6 +177,8 @@ class TSpreadsheet : public TControl
protected:
//@cmember Gestisce gli eventi delle celle (chiamata dal <mf TSpreadsheet::xiev_handler>)
virtual bool event_handler(XI_OBJ* itf, XI_EVENT* xiev);
KEY barcode_newline() const;
//@cmember Copia una cella nel corrispondente campo della maschera e ne ritorna il contenuto
const char* copy_cell2field(XI_OBJ* cell = NULL);
@ -365,7 +367,18 @@ public:
// @doc INTERNAL
KEY TSpreadsheet::barcode_newline() const
{
static KEY _barcode_newline = 0xFFFF;
if (_barcode_newline == 0xFFFF)
{
TConfig ini(CONFIG_INSTALL, "Main");
_barcode_newline = ini.get_int("BarcodeNewline");
}
return _barcode_newline;
}
// @doc INTERNAL
// @mfunc Costruttore
TSpreadsheet::TSpreadsheet(
@ -990,6 +1003,11 @@ bool TSpreadsheet::test_focus_change()
// Certified 75%
bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
{
static KEY _lastab = K_TAB;
static char tmp[16];
static clock_t digit_timer = 0;
BOOLEAN& refused = xiev->refused;
switch (xiev->type)
@ -1435,7 +1453,20 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
case XIE_CHAR_CELL:
if (_edit_field)
{
const KEY k = xiev_to_key(xiev);
KEY k = xiev_to_key(xiev);
if (isalnum(k))
digit_timer = clock();
else
{
if (k == barcode_newline())
{
const clock_t delay = clock() - digit_timer;
if (delay <= 60)
k = K_CTRL+'+';
}
}
switch(k)
{
case K_F2:

View File

@ -1314,7 +1314,7 @@ void TCursor::filter(
_filter = fil;
if (_fexpr) delete _fexpr;
_frefs.destroy();
TTypeexp type = (_filter.find('"') != -1) ? _strexpr : _numexpr;
TTypeexp type = (_filter.find('"') >= 0) ? _strexpr : _numexpr;
if (_filter.not_empty())
{
_fexpr = new TExpression(_filter, type);

View File

@ -39,6 +39,7 @@
#define F_DESCDEFDEP 146
#define H_DEFAULTMAG 147
#define F_STOP_PROD 148
#define F_MOV_SOSP 149
#define G_SGNVAL 20
#define G_SGNQTA 21

View File

@ -163,8 +163,8 @@ END
BOOLEAN F_STOP_PROD
BEGIN
PROMPT 50 15 "Scarica gli art.di produzione"
FIELD B4
PROMPT 50 15 "Scarica gli art.di produzione"
FIELD B4
END
LISTBOX F_COSTO_ESPL 14
@ -228,6 +228,13 @@ BEGIN
FLAGS "D"
PROMPT 32 19 ""
END
BOOLEAN F_MOV_SOSP
BEGIN
PROMPT 2 20 "Movimenta gli articoli sospesi"
FIELD B5
END
ENDPAGE
PAGE "Movimentazione campi" 11 60 14

View File

@ -38,7 +38,9 @@ class TMask_movmag : public TMask
static bool handle_righeprezzo2(TMask_field &f, KEY k); // handler del prezzo delle righe
static bool handle_codcaus(TMask_field &fld, KEY k); // handler della causale
static bool handle_datacomp(TMask_field &, KEY k); // handler del numero di registrazione
static bool handle_checksosp(TMask_field &fld, KEY k); // handler
static bool handle_codarticolo(TMask_field &fld, KEY k); // handler
static bool handle_causrig(TMask_field &fld, KEY k); // handler
static bool handle_giacattuale(TMask_field &fld, KEY k); // handler della giacenza attuale
static bool codgrp_handler(TMask_field &fld, KEY k); // handler del codice gruppo
static void sheetrighe_put(TSheet_field &fld_righe, int item);
@ -81,7 +83,7 @@ TMask_movmag::TMask_movmag(TMov_mag * m_m)
set_handler(F_DATACOMP, handle_datacomp);
set_handler(F_CODCAUS, handle_codcaus);
ss.sheet_mask().field(F_QUANT).set_handler(handle_righeprezzo1);
ss.sheet_mask().field(F_CAUSRIG).set_handler(handle_righeprezzo1);
ss.sheet_mask().field(F_CAUSRIG).set_handler(handle_causrig);
ss.sheet_mask().field(F_CODART).set_handler(handle_codarticolo);
ss.sheet_mask().field(F_GIAC).set_handler(handle_giacattuale);
ss.set_notify(notify_righe);
@ -311,18 +313,56 @@ TArticolo_giacenza& TMask_movmag::curr_art()
return *_curr_art;
}
bool TMask_movmag::handle_checksosp(TMask_field &f, KEY k)
{
if (k==K_TAB && f.focusdirty())
{
TMask_movmag& mov_mask = (TMask_movmag &)f.mask().get_sheet()->mask();
TMask & row_mask = f.mask();
TString16 caus(row_mask.get(F_CAUSRIG));
mov_mask.curr_art().read(row_mask.get(F_CODART));
if (caus.empty())
caus = mov_mask.get(F_CODCAUS);
const TCausale_magazzino c(caus);
if (!c.movimenta_sospesi() && mov_mask.curr_art().get_bool("SOSPESO"))
return error_box("Articolo %s sospeso, quindi non movmentabile", (const char *)f.get());
}
return TRUE;
}
bool TMask_movmag::handle_codarticolo(TMask_field &f, KEY k)
{
if (k==K_TAB)
{
// TMask_movmag& maskmov = (TMask_movmag&)f.mask();
TMask_movmag& maskmov = (TMask_movmag &)f.mask().get_sheet()->mask();
maskmov.curr_art().read(f.get());
if (f.focusdirty())
{
if (!handle_checksosp(f, k))
return FALSE;
handle_righeprezzo2(f, k);
}
}
}
return TRUE;
}
bool TMask_movmag::handle_causrig(TMask_field &f, KEY k)
{
if (k==K_TAB && f.focusdirty())
{
if (!handle_checksosp(f, k))
return FALSE;
handle_righeprezzo1(f, k);
}
return TRUE;
}
// proposta hard: propone il prezzo in ogni caso
bool TMask_movmag::handle_giacattuale(TMask_field &f, KEY k)
{

View File

@ -447,6 +447,8 @@ public:
bool update_val() const {return !get_bool("B0");}
bool update_ultcos() const {return get_bool("B2");}
bool esplodente() const {return get_bool("B3");}
bool scarica_artprod() const {return get_bool("B4");}
bool movimenta_sospesi() const {return get_bool("B5");}
const TString & default_magdep() const {return get("S10");}
const char *default_mag() const {return get("S10").mid(0,3);}
const char *default_dep() const {return get("S10").mid(3,2);}

View File

@ -1,3 +1,3 @@
47
0
$anamag|0|0|801|0|Anagrafica di magazzino|NART||
$anamag|0|0|802|0|Anagrafica di magazzino|NART||

View File

@ -1,5 +1,5 @@
47
69
70
CODART|1|20|0|Codice Articolo
DESCR|1|50|0|Descrizione
DESCRAGG|11|10|0|Descrizione aggiuntiva
@ -59,6 +59,7 @@ CONTOINDA|1|12|0|Codice piano dei conti industriale (GrCoSo) Acquisti
CONTOINDV|1|12|0|Codice piano dei conti industriale (GrCoSo) Vendite
COLLTYPE|1|1|0|Tipo collegamento DB
CODMAG|1|5|0|Codice magazzino
SOSPESO|8|1|0|Codice sospeso (obsoleto)
USER1|1|40|0|Campo libero 1
USER2|1|20|0|Campo libero 2
USER3|1|20|0|Campo libero 3

View File

@ -469,9 +469,14 @@ void TMotore_application::ini2mask(TConfig& ini, TMask& msk, bool query)
// l'autoload ??
f.insert(-1, FALSE);
// Aggiunge la riga allo sheet
// ((TDocumento_mask &) msk).autoload(f.items()); // Cagata tremenda: non capisco
const bool checked = rec.get_bool(RDOC_CHECKED);
rec.autoload(f);
f.check_row(f.items()-1, 0x2);
if (!checked) //se non e' checked, il record viene autosalvato (in modo che sia salvato completamente)
rec.autosave(f);
}
}
msk.set_mode(oldmode);

View File

@ -162,6 +162,7 @@
#define F_NUMRIGULC1 301
#define F_NUMREGULC2 302
#define F_NUMRIGULC2 303
#define F_SOSPESO 304
#define G_CODART 1
#define G_DESART 2

View File

@ -175,6 +175,12 @@ BEGIN
FLAG "U"
END
BOOLEAN F_SOSPESO
BEGIN
PROMPT 45 7 "Sospeso"
FIELD SOSPESO
END
TEXT DLG_NULL
BEGIN
PROMPT 2 8 "@bCodici corrispondenti"

View File

@ -15,13 +15,15 @@ class TDeletedoc_app : public TSkeleton_application
{
TArchive _arc;
TString _desc, _last_std;
TString16 _num;
int _anno;
char _unit;
TFilename _tmp_dir;
TIsamtempfile *_tdoc,*_trdoc;
protected:
void backup_delete_doc(int op, int who); // Backup e cancellazione dei documenti da eliminare
void backup_delete_doc(int op, int who, bool pack_rows); // Backup e cancellazione dei documenti da eliminare
void restore_doc(); // Ripristino documenti da disco
void create_tmp_files(bool create=TRUE);
void delete_tmp_files(bool remove=TRUE);
@ -45,13 +47,14 @@ bool TDeletedoc_app::state_handler(TMask& m, KEY k)
return TRUE;
}
void TDeletedoc_app::backup_delete_doc(int op, int who)
void TDeletedoc_app::backup_delete_doc(int op, int who, bool pack_rows)
{
TIsamfile doc(LF_DOC);
TIsamfile rdoc(LF_RIGHEDOC);
TIsamfile clifo(LF_CLIFO);
TIsamfile cfven(LF_CFVEN);
TIsamfile indsp(LF_INDSP);
TIsamfile tab(LF_TAB);
TIsamfile occas(LF_OCCAS);
TIsamfile movmag(LF_MOVMAG);
@ -62,12 +65,14 @@ void TDeletedoc_app::backup_delete_doc(int op, int who)
rdoc.open();
clifo.open();
cfven.open();
indsp.open();
tab.open();
occas.open();
movmag.open();
rmovmag.open();
int err = doc.lock();
int err= NOERR;
// int err = doc.lock();
if (err != NOERR)
{
error_box("Il file documenti non puo' essere bloccato in modo esclusivo."
@ -80,6 +85,7 @@ void TDeletedoc_app::backup_delete_doc(int op, int who)
create_tmp_files();
TString_array to_zap; // Array contenente le chiavi dei documenti da eliminare
TString_array to_pack; // Array contenente le chiavi dei documenti da compattare
TRecnotype total = 0;
doc.zero();
@ -89,8 +95,12 @@ void TDeletedoc_app::backup_delete_doc(int op, int who)
for (int scanerr = doc.first();
scanerr == NOERR && !p.iscancelled();
scanerr = doc.next())
{
{
p.addstatus(1);
if (_anno != 0 && _anno != doc.get_int(DOC_ANNO))
continue;
if (_num.not_empty() && _num != doc.get(DOC_CODNUM))
continue;
documento.read(doc.curr());
bool to_delete = FALSE;
@ -106,6 +116,24 @@ void TDeletedoc_app::backup_delete_doc(int op, int who)
to_delete = TRUE;
}
if (pack_rows && !to_delete && documento.tipo().is_ordine())
{
const int rows = documento.physical_rows();
for (int x = 1; x <= rows; x++)
{
if (documento[x].is_evasa());
{
TToken_string id(30);
id = doc.get(DOC_PROVV);
id.add(doc.get(DOC_ANNO));
id.add(doc.get(DOC_CODNUM));
id.add(doc.get(DOC_NDOC));
to_pack.add(id);
break;
}
}
}
if (to_delete) // Se TRUE il puo' essere eliminato!
{ // Memorizza la chiave 1 del documento in un array
if (op & 0x1)
@ -158,20 +186,42 @@ void TDeletedoc_app::backup_delete_doc(int op, int who)
TString caption("Confermare la cancellazione di ");
caption.add_plural(total, "documento");
if (yesno_box(caption))
{
TProgind pi(total, caption, FALSE, TRUE, 10);
for (int i = 0; i < to_zap.items(); i++)
{
TToken_string& id = to_zap.row(i);
id.restart();
const char provv = id.get_char();
const int anno = id.get_int();
const TString16 codnum = id.get();
const long numdoc = id.get_int();
documento.read(provv,anno,codnum,numdoc);
documento.TMultiple_rectype::remove(doc);
pi.addstatus(1);
}
{
{
TProgind pi(total, caption, FALSE, TRUE, 10);
for (int i = 0; i < to_zap.items(); i++)
{
TToken_string& id = to_zap.row(i);
id.restart();
const char provv = id.get_char();
const int anno = id.get_int();
const TString16 codnum = id.get();
const long numdoc = id.get_int();
documento.read(provv,anno,codnum,numdoc);
documento.TMultiple_rectype::remove(doc);
pi.addstatus(1);
}
}
{
TProgind pi1(to_pack.items(), "Compattamento documenti", FALSE, TRUE, 10);
for (int i = 0; i < to_pack.items(); i++)
{
TToken_string& id = to_pack.row(i);
id.restart();
const char provv = id.get_char();
const int anno = id.get_int();
const TString16 codnum = id.get();
const long numdoc = id.get_int();
documento.read(provv,anno,codnum,numdoc);
const int rows = documento.physical_rows();
// Memorizza le righe del documento sui file temporanei
for (int x = rows; x >= 1; x--)
if (documento[x].is_evasa())
documento.destroy_row(x, TRUE);
documento.rewrite(doc);
pi1.addstatus(1);
}
}
}
}
}
@ -289,11 +339,14 @@ void TDeletedoc_app::main_loop()
_desc = m.get(F_DESC);
const int scelta = m.get_int(F_OPERAZIONE);
const int cosa = m.get_int(F_DOCUMENTI);
const bool pack_rows = m.get_bool(F_COMPATTA);
_anno = m.get_int(F_ANNO);
_num = m.get(F_CODNUM);
switch (scelta)
{
case 1 : backup_delete_doc(0x1, cosa); break;
case 2 : backup_delete_doc(0x2, cosa); break;
case 3 : backup_delete_doc(0x3, cosa); break;
case 1 : backup_delete_doc(0x1, cosa, pack_rows); break;
case 2 : backup_delete_doc(0x2, cosa, pack_rows); break;
case 3 : backup_delete_doc(0x3, cosa, pack_rows); break;
default: restore_doc(); break;
}
}

View File

@ -4,4 +4,8 @@
#define F_STADESC 104
#define F_OPERAZIONE 105
#define F_DOCUMENTI 106
#define F_COMPATTA 107
#define F_ANNO 108
#define F_CODNUM 109
#define F_DESNUM 110

View File

@ -1,26 +1,29 @@
#include "ve5100a.h"
PAGE "Eliminazione/Archiviazione documenti" -1 -1 61 11
PAGE "Eliminazione/Archiviazione documenti" -1 -1 61 15
RADIOBUTTON F_OPERAZIONE 1 34
BEGIN
PROMPT 1 1 "Operazione"
ITEM "1|Eliminazione"
MESSAGE DISABLE,F_DESC|DISABLE,F_UNIT
MESSAGE DISABLE,F_DESC|DISABLE,F_UNIT|ENABLE,F_ANNO|ENABLE,F_CODNUM
ITEM "2|Archiviazione"
MESSAGE ENABLE,F_DESC|ENABLE,F_UNIT
MESSAGE ENABLE,F_DESC|ENABLE,F_UNIT|ENABLE,F_ANNO|ENABLE,F_CODNUM
ITEM "3|Eliminazione e archiviazione"
MESSAGE ENABLE,F_DESC|ENABLE,F_UNIT
MESSAGE ENABLE,F_DESC|ENABLE,F_UNIT|ENABLE,F_ANNO|ENABLE,F_CODNUM
ITEM "4|Ripristino"
MESSAGE DISABLE,F_DESC|ENABLE,F_UNIT
MESSAGE DISABLE,F_DESC|ENABLE,F_UNIT|CLEAR,F_ANNO|CLEAR,F_CODNUM
END
RADIOBUTTON F_DOCUMENTI 1 24
BEGIN
PROMPT 36 1 "Documenti"
ITEM "1|Eliminabili"
ITEM "1|Eliminabili"
MESSAGE CLEAR,F_COMPATTA
ITEM "2|Evasi"
MESSAGE ENABLE,F_COMPATTA
ITEM "3|Entrambi"
MESSAGE ENABLE,F_COMPATTA
END
LIST F_UNIT 2
@ -55,6 +58,46 @@ BEGIN
FLAGS "D"
END
BOOELAN F_COMPATTA
BEGIN
PROMPT 2 9 "Elimina la righe evase"
END
NUMBER F_ANNO 4
BEGIN
PROMPT 2 10 "Esercizio "
FIELD ANNO
WARNING "Inserire un anno valido"
END
STRING F_CODNUM 4
BEGIN
PROMPT 2 11 "Numerazione "
FIELD CODNUM
HELP "Codice numerazione"
USE %NUM
INPUT CODTAB F_CODNUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODNUM CODTAB
OUTPUT F_DESNUM S0
CHECKTYPE NORMAL
FLAG "U"
WARNING "Numerazione assente"
END
STRING F_DESNUM 50 42
BEGIN
PROMPT 15 12 ""
HELP "Descrizione numerazione"
USE %NUM KEY 2
INPUT S0 F_DESNUM
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODNUM
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""

View File

@ -246,7 +246,7 @@ bool TContabilizzazione_app::create()
{
TApplication::create();
open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_OCCAS, LF_INDSP, LF_CFVEN,
LF_DOC, LF_RIGHEDOC, LF_ANAMAG, LF_MOVMAG, LF_RMOVMAG, LF_PROVV,
LF_DOC, LF_RIGHEDOC, LF_ANAMAG, LF_MOVMAG, LF_RMOVMAG, LF_PROVV, LF_MOV,
LF_PCON, LF_CONDV, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_ATTIV, LF_CAUSALI, 0);
_msk = new TMask("ve6100a");
_msk->set_handler(F_CODICE_ELAB,handle_cod_eld);

View File

@ -75,12 +75,13 @@ public:
TImporto TMovimentoPN_VE::real2imp(const real& r, char row_type)
{
CHECK(_caus,"Orgggssbb..._caus pointer is NULL!");
bool dare;
bool dare = FALSE;
if (row_type == 'S')
{
dare = _caus->sezione_ritsoc() == 'D';
}
else
{
if (row_type == 'F')
{
dare = _caus->sezione_ritsoc() == 'D';
@ -91,7 +92,7 @@ TImporto TMovimentoPN_VE::real2imp(const real& r, char row_type)
if (row_type != 'T' && row_type != 'F')
dare = !dare;
}
}
TImporto importo(dare ? 'D' : 'A', r);
return importo;
}
@ -558,11 +559,12 @@ error_type TIVA_array::add_omaggi(const TRiga_documento & r, const TBill& conto,
add(r, conto, ndec, p);
TRiga_documento r_storno(r);
r_storno.set_tipo("01");
r_storno.put(RDOC_CODIVA, _ivasto);
real prezzo = r_storno.get(RDOC_PREZZO);
prezzo = -prezzo;
r_storno.put(RDOC_PREZZO, prezzo);
add(r, conto, ndec, p);
add(r_storno, conto, ndec, p);
return no_error;
}
@ -1890,13 +1892,20 @@ error_type TContabilizzazione::compile_rows_mov(TDocumento& doc)
continue;
r.put(RDOC_CODIVA, codiva1);
_righe_iva->add(r, conto, ALL_DECIMALS, perc);
if (riga_omaggio)
_righe_iva->add_omaggi(r, conto, ALL_DECIMALS, perc);
else
_righe_iva->add(r, conto, ALL_DECIMALS, perc);
}
r.put(RDOC_CODIVA, codiva2); //Restore
}
else
{
_righe_iva->add(r, conto);
if (riga_omaggio)
_righe_iva->add_omaggi(r, conto);
else
_righe_iva->add(r, conto);
const TString16 cod(r.get(RDOC_CODIVA));
if (r.doc().tipo().calcolo_lordo()) // Si ricorda che calcolo_lordo() e fattura_commerciale() sono esclusivi.
@ -2869,12 +2878,20 @@ error_type TContabilizzazione::write_intra(TDocumento& doc)
paeseorig = !is_cessione ? rec_anamag.get(ANAMAG_PAESE) : EMPTY_STRING; // Campo solo per Acquisti
provincia = is_cessione ? rec_anamag.get(ANAMAG_PROV) : cchh.get(LF_COMUNI, commag, COM_PROVCOM);
if (nomenclatura.blank() || unsuppun.is_zero() || massanun.is_zero())
if (nomenclatura.blank() || unsuppun.is_zero() || massanun.is_zero() || provincia.blank())
{
TString msg;
msg << "--- L'articolo " << rec_anamag.get(ANAMAG_CODART) << " non riporta tutti i dati necessari per il movimento intracomunitario:";
msg << "--- L'articolo " << rec_anamag.get(ANAMAG_CODART) << " non riporta tutti i dati necessari per il movimento intracomunitario.";
_viswin->add_line(msg);
msg = " Si consiglia di verificare i seguenti valori sull'anagrafica:";
_viswin->add_line(msg);
msg = " ";
if (nomenclatura.blank()) msg << "nomenclatura combinata; ";
if (unsuppun.is_zero()) msg << "unità di misura supplementare; ";
if (massanun.is_zero()) msg << "massa netta unitaria; ";
if (provincia.blank()) msg << "provincia d'origine; ";
msg.rtrim(2); msg << '.'; // Sostituisce l'ultimo punto e virgola con un punto
_viswin->add_line(msg);
_viswin->add_line(" Verificare i seguenti valori: nomenclatura combinata, unità di misura supplementare, massa netta unitaria.");
}
key.cut(0);
@ -3118,7 +3135,7 @@ void TContabilizzazione::display_error(TDocumento& doc)
"Verificare la consistenza dei files relativi ai movimenti intracomunitari.",(const char*)numerazione,numero);
break;
case cont_seq_error:
msg.format("Il documento precedente al %s/%ld non e' stato contabilizzato.\n"
msg.format("Il documento precedente al %s/%ld non e' stato contabilizzato."
"E' necessario contabilizzare tutti i documenti in sequenza.",
(const char*)numerazione, numero);
break;
@ -3347,7 +3364,9 @@ bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& /*
else
message_box("Contabilizzazione terminata");
}
_viswin->run();
KEY k = _viswin->run();
if (k == K_CTRL+'S') // Ho premuto Stampa
printer().print_txt(_viswin->text());
delete _viswin; _viswin = NULL;
return _can_write; // Se non ha riscontrato errori per nessun documento, _can_write = TRUE

View File

@ -1621,6 +1621,7 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
}
break;
case F_ELAB:
case F_ANNO_ELAB:
if (e == fe_modify)
update_ndoc_filter(TRUE);
break;
@ -1660,6 +1661,7 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
{
const TRectype& head = _tree.testata();
set(F_DATADOC_ELAB, head.get(DOC_DATADOC)); // Anch'essa nella chiave 2!
set(F_ANNO_ELAB, head.get(DOC_ANNO));
set(F_CODNUM_ELAB, head.get(DOC_CODNUM));
field(F_CODNUM_ELAB).check();
set(F_NDOC_ELAB, head.get(DOC_NDOC));
@ -1840,6 +1842,13 @@ bool TElabora_mask::elabora()
delete newdoc;
// Azzera l'anno in caso di ordini
if (in.items() > 0 && in[0].is_ordine())
{
reset(F_ANNO_ELAB);
update_mask = TRUE;
}
if (update_mask)
update_ndoc_filter();
@ -1958,6 +1967,11 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
TString8 si; si << stato_in;
set(F_STATODOC_ELAB, si);
field(F_STATODOC_ELAB).check();
// Azzero anno di elaaborazione quando ho a che fare con degli ordini
const TTipo_documento& tipodocin = _main->doc().tipo(tipo_in);
if (tipodocin.is_ordine())
reset(F_ANNO_ELAB);
}
}
if (almost_one)
@ -1993,12 +2007,18 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
field(F_TIPODOC_ELAB).check();
set(F_STATODOC_ELAB, stato_in);
field(F_STATODOC_ELAB).check();
// Azzero anno di elaaborazione quando ho a che fare con degli ordini
const TTipo_documento& tipodocin = _main->doc().tipo(tipo_in);
if (tipodocin.is_ordine())
reset(F_ANNO_ELAB);
}
}
}
if (almost_one)
filter << ')';
}
}
else
{
@ -2119,8 +2139,8 @@ TElabora_mask::TElabora_mask(TDocumento_mask& main_mask)
: TAutomask("ve0100b"), _main(&main_mask)
{
_myself = this;
set(F_ANNO_ELAB, _main->get(F_ANNO));
set(F_ANNO_ELAB, _main->get(F_ANNO));
set(F_TIPOCF_ELAB, _main->get(F_TIPOCF));
set(F_CODCF_ELAB, _main->get(F_CODCF));
set(F_CODVAL_ELAB, _main->get(F_CODVAL));
@ -2322,14 +2342,50 @@ bool TDocumento_mask::codcamp_handler( TMask_field& f, KEY key )
return TRUE;
}
/*
bool TDocumento_mask::controeuro_handler( TMask_field& f, KEY key )
{
TMask & m = f.mask();
if (m.is_running() && key == K_SPACE)
{
const real cambio_euro = TCurrency::get_euro_change();
const real val = cambio_euro / m.get_real(F_CAMBIO);
m.set(F_CAMBIO, val);
}
return TRUE;
}
*/
bool TDocumento_mask::codval_handler( TMask_field& f, KEY key )
{
if (key == K_TAB && f.focusdirty())
{
TSheet_field& righe = f.mask().sfield(F_SHEET);
{
TMask& m = f.mask();
// Cerco un cambio per la data specificata, se non lo trovo lo invento
TDate datacam = m.get(F_DATACAMBIO);
if (!datacam.ok())
{
datacam = m.get_date(F_DATADOC);
m.set(F_DATACAMBIO, datacam);
}
TExchange exc(f.get());
exchange_type et;
real cambio = exc.get_change(et); // Determino il cambio standard ed il "Contro-Euro"
TString16 key;
key.format("%-3s", (const char*)f.get()); key << datacam.string(ANSI);
const real giornaliero = cache().get("CAM", key, "S4");
if (!giornaliero.is_zero())
cambio = giornaliero; // Ho trovato un cambio per il giorno!
m.set(F_CAMBIO, cambio);
m.set(F_CONTROEURO, et == _exchange_contro ? "X" : "");
TSheet_field& righe = m.sfield(F_SHEET);
righe.force_update();
}
return TRUE;
}

View File

@ -372,7 +372,6 @@ bool codmag_handler( TMask_field& f, KEY key )
bool codmag_coll_handler( TMask_field& f, KEY key )
{
// if (f.to_check(key, TRUE))
if (key == K_TAB && f.focusdirty())
{
TMask& row_mask = f.mask();
@ -428,7 +427,6 @@ void upd_colli_peso_tara(TMask & m, TRectype & a)
bool pricerange_handler(TMask_field& f, KEY key )
{
if (key == K_TAB && f.focusdirty())
{
TMask& row_mask = f.mask();
@ -496,14 +494,9 @@ bool codart_handler(TMask_field& f, KEY key )
condv.set_testa(&mask);
condv.set_riga(&row_mask);
// TLocalisamfile & anamag = ((TEdit_field &) f).browse()->cursor()->file();
// TLocalisamfile & umart = ((TEdit_field &) row_mask.field(FR_UMQTA)).browse()->cursor()->file();
TLocalisamfile anamag(LF_ANAMAG);
TLocalisamfile umart(LF_UMART);
// condv.set_anamag(anamag);
// condv.set_umart(umart);
TString80 codart(f.get());
anamag.setkey(1);
anamag.put(ANAMAG_CODART, codart);
@ -603,6 +596,28 @@ bool codart_handler(TMask_field& f, KEY key )
if (pos >= 0)
iva_handler(row_mask.fld(pos), 0);
if (found)
{
TString16 caus(row_mask.get(FR_CAUS));
if (caus.empty())
caus = mask.get(F_CAUSMAG);
if (caus.not_empty())
{
const TCausale_magazzino c(caus);
if (!c.movimenta_sospesi())
{
const TRectype & rec = cache().get(LF_ANAMAG, row_mask.get(FR_CODARTMAG));
if (rec.get_bool("SOSPESO"))
return error_box("Articolo %s sospeso, quindi non movmentabile", (const char *)codart);
}
}
}
}
else
if (key == K_F8 && !sh.sheet_mask().is_running())
@ -629,12 +644,6 @@ bool codart_handler(TMask_field& f, KEY key )
}
if (explode_db && !sh.sheet_mask().is_running())
{
// TCodice_articolo a(f.get());
// const TCodice_um um = row_mask.get(FR_UMQTA);
// real qta_fin = row_mask.get_real(FR_QTA);
// TQuantita qta(a, um, qta_fin);
// qta.convert2umbase();
// qta_fin = qta.val();
TDocumento & doc = mask.doc();
TRiga_documento & curr_row = doc[current_doc_row];
@ -699,6 +708,8 @@ bool codart_handler(TMask_field& f, KEY key )
}
}
}
return TRUE;
}
@ -706,6 +717,9 @@ bool codartmag_handler( TMask_field& f, KEY key )
{
bool to_check = key == K_TAB && f.focusdirty();
TMask & m = f.mask();
const TString codart = f.get();
const bool artmag = codart.not_empty();
TDocumento_mask& mask= (TDocumento_mask&) m.get_sheet()->mask();
if (!to_check)
{
@ -715,12 +729,10 @@ bool codartmag_handler( TMask_field& f, KEY key )
}
if (to_check)
{
const bool artmag = f.get().not_empty();
m.show(FR_UMQTA, artmag);
m.show(FR_UMQTA2, !artmag);
TDocumento_mask& mask=(TDocumento_mask&)m.get_sheet()->mask();
mask.update_giacenza();
}
return TRUE;
@ -1147,6 +1159,13 @@ bool causmag_handler( TMask_field& f, KEY key )
row_mask.set(FR_CODDEPC, mask.stddep(), TRUE);
}
}
if (!c.movimenta_sospesi())
{
const TRectype & rec = cache().get(LF_ANAMAG, row_mask.get(FR_CODARTMAG));
if (rec.get_bool("SOSPESO"))
return error_box("Articolo %s sospeso, quindi non movmentabile", (const char *)rec.get(ANAMAG_CODART));
}
}
}
return TRUE;
@ -1165,7 +1184,7 @@ bool sppr_handler( TMask_field& f, KEY key )
TMask & mask = row_mask.get_sheet()->mask();
TEdit_field & e = (TEdit_field &) f;
TRelation * r = e.browse()->cursor()->relation();
TString16 cod = r->curr().get("COD");
const TString16 cod = r->curr().get("COD");
TSpesa_prest sp(NULL, cod == "SPP" ? 'S' : 'P');
if (sp.read(row_mask.get(FR_CODART)) == NOERR)
{
@ -1199,7 +1218,7 @@ bool sppr_handler( TMask_field& f, KEY key )
{
const real cambio = mask.get(F_CAMBIO);
real prezzo = sp.prezzo();
const TString16 doc_valuta(mask.get(F_CODVAL));
const TString& doc_valuta = mask.get(F_CODVAL);
const bool controeuro = mask.get_bool(F_CONTROEURO);
sppr_calc(sp, doc_valuta, cambio, prezzo, controeuro ? _exchange_contro : _exchange_base);

65
xi/xiextend.h Executable file
View File

@ -0,0 +1,65 @@
/*******************************************************************************
* Copyright 1991-1995 by ORCA Software, Inc. *
* *
* All rights reserved. May not be reproduced or distributed, in printed or *
* electronic form, without permission of ORCA Software, Inc. *
*******************************************************************************/
#ifdef WSWIN
#define NOCOMM
#define NOMINMAX
#define NOGDICAPMASKS
#define NOVIRTUALKEYCODES
#define NOWINMESSAGES
#define NOWINSTYLES
#define NOSYSMETRICS
#define NOMENUS
#define NOICONS
#define NOKEYSTATES
#define NOSYSCOMMANDS
#define NORASTEROPS
#define NOSHOWWINDOW
#define OEMRESOURCE
#define NOATOM
#define NOCLIPBOARD
#define NOCOLOR
#define NOCTLMGR
#define NODRAWTEXT
#define NOGDI
#define NOKERNEL
/* #define NOUSER */
#define NOMB
#define NOMEMMGR
#define NOMETAFILE
#define NOMINMAX
#define NOMSG
#define NOOPENFILE
#define NOSCROLL
#define NOSOUND
#define NOTEXTMETRIC
#define NOWH
#define NOWINOFFSETS
#define NOCOMM
#define NOKANJI
#define NOHELP
#define NOPROFILER
#define NODEFERWINDOWPOS
#include <windows.h>
#define INTERNAL
#endif
#ifdef OSOS2
#define INCL_DOS
#define INCL_WIN
#define INCL_GPI
#define COLOR pm_COLOR
#define UINT pm_UINT
#define ULONG pm_ULONG
#include <os2.h>
#undef COLOR
#undef UINT
#undef ULONG
#define INTERNAL
#endif