Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Riportata la verione 98.01.04 sul main trunk


git-svn-id: svn://10.65.10.50/trunk@6986 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1998-08-25 18:07:30 +00:00
parent 588b3f3199
commit 1df67d66c8
137 changed files with 7469 additions and 4043 deletions

View File

@ -10,7 +10,7 @@
#include <statbar.h>
COLOR MASK_BACK_COLOR = COLOR_DKCYAN;
/* COLOR MASK_BACK_COLOR = COLOR_DKCYAN;
COLOR MASK_LIGHT_COLOR = COLOR_CYAN;
COLOR MASK_DARK_COLOR = COLOR_GRAY;
COLOR BTN_BACK_COLOR = COLOR_LTGRAY;
@ -23,8 +23,23 @@ COLOR DISABLED_COLOR = COLOR_GRAY;
COLOR DISABLED_BACK_COLOR = MASK_BACK_COLOR;
COLOR FOCUS_COLOR = NORMAL_COLOR;
COLOR FOCUS_BACK_COLOR = COLOR_CYAN;
bool CAMPI_SCAVATI = FALSE;
bool AUTOSELECT = FALSE;
BOOLEAN CAMPI_SCAVATI = FALSE;
BOOLEAN AUTOSELECT = FALSE; */
COLOR MASK_BACK_COLOR = COLOR_LTGRAY;
COLOR MASK_LIGHT_COLOR = COLOR_WHITE;
COLOR MASK_DARK_COLOR = COLOR_GRAY;
COLOR BTN_BACK_COLOR = COLOR_LTGRAY;
COLOR BTN_LIGHT_COLOR = COLOR_WHITE;
COLOR BTN_DARK_COLOR = COLOR_GRAY;
COLOR TOOL_BACK_COLOR = COLOR_GRAY;
COLOR NORMAL_COLOR = COLOR_BLACK;
COLOR NORMAL_BACK_COLOR = COLOR_WHITE;
COLOR DISABLED_COLOR = COLOR_DKGRAY;
COLOR DISABLED_BACK_COLOR = MASK_BACK_COLOR;
COLOR FOCUS_COLOR = NORMAL_COLOR;
COLOR FOCUS_BACK_COLOR = COLOR_YELLOW;
BOOLEAN CAMPI_SCAVATI = FALSE;
BOOLEAN AUTOSELECT = FALSE;
#ifndef STX_DATA
// Very deep hacking

View File

@ -29,6 +29,7 @@
#define DLG_SETPRINT 25 /* TAG del bottone Imposta Stampa */
#define DLG_RECALC 26 /* TAG del bottone Ricalcola */
#define DLG_ELABORA 27 /* TAG del bottone <Elabora> */
#define DLG_F8 27 /* TAG del bottone <Ricerca zoom> */
#define DLG_FAX 28 /* TAG del bottone <Fax> */
#define DLG_EMAIL 29 /* TAG del bottone <Posta> */
#define DLG_USER 100 /* TAG del primo controllo definito dall'utente */

View File

@ -317,7 +317,8 @@ void TForm_flags::read_from(const TMask& m)
// TForm_item
///////////////////////////////////////////////////////////
TForm_item::TForm_item(TPrint_section* section)
: _section(section), _x(-1), _y(-1), _width(0), _height(0), _id(0), _ofs(0),
: _section(section), _x(-1), _y(-1), _width(0),
_height(0),_effective_height(0), _id(0), _ofs(0),
_temp(FALSE)
{}
@ -1229,11 +1230,13 @@ bool TForm_subsection::update()
bool TForm_subsection::print_body(sec_print_mode showfields)
{
const bool at_newpage=(atnewpage() || printer().rows_left() < (word)height());
const bool at_newpage=(atnewpage() || printer().rows_left() < (word)minheight());
bool ok = FALSE;
TCursor* cur = form().cursor();
TRelation* rel = (TRelation* )form().relation();
set_effective_height(0); // resetta l'altezza della sottosezione al suo "minimo"
if (!enabled() )
return FALSE;
@ -1257,9 +1260,9 @@ bool TForm_subsection::print_body(sec_print_mode showfields)
_ssec.set_repeat_count(0);
if (_condexpr) { // sottosezione di raggruppamenti su file
int i = 0;
TString group_expr((const char *)(_section->eval_expr(*_condexpr,_file_id)));
TString group_expr(_section->eval_expr(*_condexpr,_file_id).as_string());
bool again=TRUE;
while (again && group_expr==(const char *)(_section->eval_expr(*_condexpr,_file_id)))
while (again && group_expr==_section->eval_expr(*_condexpr,_file_id).as_string())
{
form().match_result(_file_id);
if (!_bigskip || i==0)
@ -1600,6 +1603,19 @@ void TForm_string::put_paragraph(const char* s)
string_at(x()+plen, _y+i, s+plen);
}
_effective_height = i;
TForm_subsection *subsec= section().subsection_above();
if (subsec)
{
// aggiorno l'altezza effettiva della sottosezione
if (effective_height() > 1)
{
// il campo si è "espanso"
const int last_y=effective_height()+y()-1;
if (last_y > subsec->height())
subsec->set_effective_height(last_y);
}
}
}
else
{
@ -2334,6 +2350,10 @@ TMask* TPrint_section::_msk = NULL;
word TPrint_section::height() const
{
word h = _height;
if (subsection_above() && (word)subsection_above()->effective_height() > h)
{
h = subsection_above()->effective_height();
}
if (int(h) < 0) // Can't write h < 0!
{
if (section_type() == 'F')
@ -2346,7 +2366,7 @@ word TPrint_section::height() const
if (h == 0)
h = 0xFFFF - _height + 1; // Same as abs(_height)
}
}
}
return h;
}
@ -2401,7 +2421,7 @@ void TPrint_section::insert_field(int n, TForm_item* f)
_item.insert(f,n);
}
inline void TPrint_section::add_field(TForm_item* f)
void TPrint_section::add_field(TForm_item* f)
{
_item.add(f);
}
@ -2534,7 +2554,7 @@ word TPrint_section::subs_height() const
if (subsections())
{
fss=subsection(0);
h=subsection(0)->height();
h=subsection(0)->minheight();
h+=subsection(0)->printsection().subs_height(); // ricorsione...
}
return h;
@ -4071,12 +4091,13 @@ bool TPrint_section::update_and_print(const sec_print_mode show_fields, bool new
last_printed_row=print_rows(show_fields,last_printed_row,last_hpos);
// process subsection
if (ss.enabled())
if (ss.enabled())
ok |= ss.print_body(show_fields) ;
}
} // ... loop for each field
const word hgt = height();
if (print_rows(show_fields,last_printed_row,hgt) > 0 && show_fields==printmode_normal)
ok = TRUE;
// print footers
@ -4566,8 +4587,10 @@ bool TForm::print(
{
pr.formlen(height());
}
pr.set_char_size(_fontsize); // Set font name and size
pr.set_fontname(_fontname); // according to current form
if (_fontsize != 0)
pr.set_char_size(_fontsize); // Set font name and size
if (_fontname.not_empty())
pr.set_fontname(_fontname); // according to current form
const bool was_open = pr.isopen();
set_last_page(FALSE); // non e' l'ultima pagina
@ -4849,7 +4872,7 @@ bool TForm::validate(TForm_item &cf, TToken_string &s)
TForm_item &fi= cf.find_field(var);
rval.setvar(j, fi.get()); // il valore corrente del campo viene settato nell'espressione
}
file->put(fld, (const char *)rval); // scrive il risultato dell'espressione nel campo del file
file->put(fld, rval.as_string()); // scrive il risultato dell'espressione nel campo del file
}
if (file->read()== NOERR)
{ // tenta una lettura del file
@ -4961,7 +4984,7 @@ bool TForm::validate(TForm_item &cf, TToken_string &s)
else
if (align== "MIDDLE") cf.y()= fi.y()+ fi.effective_height()/2;
else
if (align== "BOTTOM") cf.y()= fi.y()+ fi.effective_height()-1;
if (align== "BOTTOM") cf.y()= fi.y()+ (fi.effective_height() ? fi.effective_height()-1 : 0);
else
if (align== "LEFT") cf.set_x(fi.x());
else
@ -4991,9 +5014,8 @@ bool TForm::validate(TForm_item &cf, TToken_string &s)
int comma = s.find(',');
TExpression rval(s.mid(comma+1),code[1]=='N' ? _numexpr:_strexpr,TRUE);
cf.section().eval_expr(rval);
const char *res = (const char *)rval;
if (!rval.error())
cf.set(res);
cf.set(rval.as_string());
return TRUE;
}
@ -5284,8 +5306,8 @@ void TForm::init()
_cursor= NULL;
_rel_desc= NULL;
_isnew= FALSE;
_fontname= "Roman 17cpi";
_fontsize= 12;
_fontname= "";
_fontsize= 0;
_x= 0;
_y= 0;
_char_to_pos= '\0';

View File

@ -608,7 +608,7 @@ public:
{ tab(0); return _nfld; }
// @cmember Ritorna l'altezza della sezione
word height() const ;
// @cmember Ritorna l'altezza minima delle sottosezioni
// @cmember Ritorna l'altezza minima delle sottosezioni (non più usato)
word subs_height() const ;
// @cmember Ritorna l'offset della prima colonna
word ofspc() const
@ -804,6 +804,9 @@ public:
// @cmember Ritorna l'altezza effettiva del campo
virtual int effective_height() const
{ return _effective_height; }
// @cmember Imposta l'altezza effettiva del campo
virtual void set_effective_height(int val)
{ _effective_height=val; }
// @cmember Formatta la stringa <p s>. Funzione che per default non fa nulla.
// Ridefinita solo per TForm_number e TForm_string.
virtual void apply_format(TString & s) const {}
@ -1024,6 +1027,12 @@ public:
virtual bool parse(TScanner& s);
virtual bool update();
virtual bool edit(TMask& m);
// @cmember Ritorna l'altezza (in caratteri)
virtual int height() const
{return _ssec.height();}
// @cmember Ritorna l'altezza minima (in caratteri)
int minheight() const
{return _height;}
virtual const char* class_name() const { return "SEZIONE"; }
virtual bool is_section() const { return TRUE; }

View File

@ -1545,7 +1545,7 @@ void TSystemisamfile::makelc(TRectype& rec)
for (int k = 0; k < e.numvar(); k++)
e.setvar(k, get(e.varname(k)));
f.write(e, rec);
f.write(e.as_string(), rec);
}
}
@ -1766,11 +1766,9 @@ int TSystemisamfile::update(
prefix().update_recdes(num());
if (toconvert)
{
packindex();
if (err == NOERR)
err = exec_convapp(lev, FALSE); // Post - conversion
}
if (err == NOERR)
err = exec_convapp(lev, FALSE); // Post - conversion
}
}

View File

@ -23,7 +23,7 @@ bool rpc_Start()
{
delete _client;
_client = NULL;
ok = error_box("Errore di inizializzazione del socket client");
ok = error_box("Errore di inizializzazione del socket client.");
}
}
return ok;

View File

@ -11,7 +11,7 @@
#ifndef __SCANNER_H
#include <scanner.h>
#endif
#endif
class TControl; // __CONTROL_H
class TText_control;
@ -913,6 +913,10 @@ public:
const TString& get_filter() const
{ return _filter;}
// @cmember Cambia il filtro della browse
void set_filter(const char * filter)
{ _filter = filter;}
// @cmember Controlla la validita' del campo
bool check(CheckTime = RUNNING_CHECK);
// @cmember Controlla se il campo puo' essere vuoto

View File

@ -297,6 +297,30 @@ int TMultiple_rectype::loaded_rows(int logicnum) const
return r->rows();
}
// @mfunc confronta due record multipli
int TMultiple_rectype::compare(const TSortable& s) const
{
int res = TRectype::compare(s);
TMultiple_rectype & m = (TMultiple_rectype &) s;
for (int i = 0 ; res == 0 && i < _nfiles; i++)
{
int logicnum = _logicnums[i];
TRecord_array & r = body(logicnum);
TRecord_array & r1 = m.body(logicnum);
res = r.rows() - r1.rows();
if (res == 0 && r.rows() > 0 && r1.rows() > 0)
{
for (int j = r.last_row(), k = r1.last_row(); res == 0 && j > 0 && k > 0; j = r.pred_row(j), k = r1.pred_row(k))
{
res = j - k;
if (res == 0)
res = r[j] != r1[j];
}
}
}
return res;
}
int TMultiple_rectype::remove(TBaseisamfile & f) const
{
int err = NOERR;

View File

@ -36,7 +36,7 @@ class TSocketClient : public TLanClient
{
BYTE* m_pData;
DWORD m_dwSize;
protected: // TLanManager
virtual BOOL Boot();
virtual BOOL ShutDown();

View File

@ -1,7 +1,7 @@
ba Base
74 Modello 740
75 Modello 750
76 Modello 760
74
75
76
77 Modello 770
iv Gestione IVA
se Contabilita' Semplificata
@ -19,8 +19,8 @@ at AVIS Provinciale
in Elenchi Intracomunitari
po Gestione Penna Ottica
ab Analisi di bilancio
ni Nota Integrativa
nr Nota Integrativa Ridotta
ni
nr
pc Parcellazione
af Autoformazione
gi Gestione ICI

View File

@ -952,9 +952,7 @@ void TPrinter::init_formlen(
int w;
while (mincol < maxcol )
{
w = xvt_dwin_get_text_width(prwin, (char*)(const char*)spc, _formwidth);
w = xvt_dwin_get_text_width(prwin, (char*)(const char*)spc, _formwidth);
if (w < pw)
mincol = _formwidth+1;
else

View File

@ -205,7 +205,7 @@ bool TProgind::setstatus(long l)
{
CHECK(l >= 0, "Bad progind status");
const long old_perc = _status * 100L / _max;
_status = l > _max ? _max : l;
_status = l > _max ? _max : l;
const long new_perc = _status * 100L / _max;
const bool tictac = new_perc != old_perc;
if (tictac)

View File

@ -20,6 +20,11 @@
#define RDOC_PREZZO "PREZZO"
#define RDOC_UMQTA "UMQTA"
#define RDOC_QTA "QTA"
#define RDOC_QTAGG1 "QTAGG1"
#define RDOC_QTAGG2 "QTAGG2"
#define RDOC_QTAGG3 "QTAGG3"
#define RDOC_QTAGG4 "QTAGG4"
#define RDOC_QTAGG5 "QTAGG5"
#define RDOC_QTAEVASA "QTAEVASA"
#define RDOC_RIGAEVASA "RIGAEVASA"
#define RDOC_TARA "TARA"

View File

@ -82,8 +82,8 @@ real& real::operator *= (long double b)
}
real& real::operator /= (long double b)
{
CHECK(b != 0.0, "Disivision by zero");
{
CHECK(b != 0.0, "Division by zero");
_dec /= b;
return *this;
}
@ -346,6 +346,7 @@ HIDDEN real __tmp_real;
real::real ()
{
dzero (ptr ());
trail();
}
real::real (const real & b)
@ -389,6 +390,8 @@ real::real (const char *s)
atod (ptr (), (char *) s);
else
dzero (ptr ());
trail();
}
real& real::operator =(const real & b)
@ -550,6 +553,7 @@ istream & operator >> (
{
in >> __string;
atod (a.ptr (), __string);
a.trail();
return in;
}

View File

@ -29,8 +29,6 @@ protected:
// @cmember Permette di stampare l'oggetto
virtual void print_on(ostream& out) const;
// @access Protected Member
protected:
// @cmember Duplica il numero reale (vedi classe <c TObject>)
virtual TObject* dup() const;
// @cmember Traduce in lettere il numero reale
@ -164,6 +162,8 @@ protected:
// @access Protected Member
protected:
// @cmember Permette di stampare l'oggetto
virtual void print_on(ostream& out) const;
// @cmember Duplica il numero reale (vedi classe <c TObject>)
virtual TObject* dup() const;

View File

@ -147,6 +147,7 @@ class TFile_cache : public TObject
TToken_string _code;
TString16 _filecode;
TLocalisamfile* _file;
TString16 _filecode;
int _key;
long _last_firm;
int _error;

View File

@ -316,9 +316,6 @@ void TRelation_application::query_mode(
set_mode(MODE_QUERY);
init_query_mode(*_mask);
}
if (_curr_transaction.not_empty())
ini2query_mask();
}
@ -358,6 +355,7 @@ void TRelation_application::insert_mode()
init_insert_mode(*_mask);
// ....possibilmente spostare questa chiamata .....
if (_curr_transaction == TRANSACTION_INSERT)
ini2insert_mask();
}
@ -396,6 +394,7 @@ bool TRelation_application::modify_mode()
get_relation()->save_status();
init_modify_mode(*_mask);
// ....possibilmente spostare questa chiamata .....
if (_curr_transaction == TRANSACTION_MODIFY)
ini2insert_mask();
return TRUE;
@ -861,6 +860,10 @@ void TRelation_application::main_loop()
// ciclo delle transazioni
_recins = -1;
// imposta la maschera in query mode
query_mode();
_mask->open_modal();
// Provoca l'autopremimento per il messaggio di LINK
if (_lnflag)
{
@ -882,9 +885,9 @@ void TRelation_application::main_loop()
_mask->send_key(K_AUTO_ENTER, 0);
}
}
query_mode();
_mask->open_modal();
if (_curr_transaction.not_empty())
ini2query_mask();
do
{
@ -1252,13 +1255,15 @@ bool TRelation_application::parse_command_line()
ini.upper();
if (ini.left(2) == "-I" || ini.left(2) == "/I")
{
TString16 ininame(ini.mid(2));
CHECK(!ininame.blank(),"Manca l'indicazione della transazione. Il nome va indicato di seguito al -i, senza interporre spaziatura.");
if (ini.find('*')>=0)
{
// metachars:
list_files(ini.mid(2), _trans_ini);
list_files(ininame, _trans_ini);
}
else
_trans_ini.add(ini.mid(2));
_trans_ini.add(ininame);
break;
}
}

View File

@ -1875,6 +1875,19 @@ const char* TFieldref::read(TConfig& ini, const char* defpar) const
if (_to < l && _to > 0) buffer.cut(_to);
if (_from > 0) buffer.ltrim(_from);
}
else
{
// Gestisce valori tra virgolette
const int last = buffer.len()-1;
if (last > 0)
{
if ((buffer[0] == '"' || buffer[0] == '\'') && buffer[0] == buffer[last])
{
buffer.ltrim(1);
buffer.rtrim(1);
}
}
}
return buffer;
}
@ -1891,8 +1904,16 @@ void TFieldref::write(TConfig& ini, const char* defpar, const char* val) const
ini.set(_name, buffer, para);
}
else
{
ini.set(_name, val, para);
{
if (strchr(val,' ') != NULL) // Controlla se c'e' bisogno di virgolette
{
const char virg = strchr(val, '"') ? '\'' : '"';
buffer.cut(0);
buffer << virg << val << virg;
ini.set(_name, buffer, para);
}
else
ini.set(_name, val, para);
}
}

View File

@ -36,3 +36,4 @@ bool TStack::destroy_base()
if (_sp > 0) _sp--;
return _data.destroy(0, TRUE);
}

View File

@ -545,7 +545,7 @@ HIDDEN bool _numcalc_val(TMask_field& f, KEY k)
const int fldid = atoi(s);
e.setvar(i, fldid == 0 ? f.get() : f.mask().get(fldid));
}
const TFixed_string s((const char*)e);
const TFixed_string s(e.as_string());
f.set(s);
return TRUE;
}
@ -568,7 +568,7 @@ HIDDEN bool _strcalc_val(TMask_field& f, KEY k)
const int fldid = atoi(s);
e.setvar(i, fldid == 0 ? f.get() : f.mask().get(fldid));
}
TFixed_string s((const char*) e);
TFixed_string s( e.as_string());
f.set(s);
return TRUE;
}

View File

@ -53,6 +53,11 @@ TVariable_mask::TVariable_mask(const char* name, int num, int max) : TMask()
}
TVariable_mask::TVariable_mask() : TMask()
{
}
TMask& TVariable_sheet_field::sheet_mask() const
{
TMask & m = TSheet_field::sheet_mask();

View File

@ -39,7 +39,8 @@ public:
virtual void enable(short fld_id, bool on = TRUE);
// @cmember Legge il campo da file
virtual TMask_field* parse_field(TScanner& scanner);
// @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk)
TVariable_mask( );
// @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk)
TVariable_mask( const char* name, int num = 0, int max = MAX_PAGES);
// @cmember Distruttore

View File

@ -1165,7 +1165,7 @@ WINDOW TScroll_window::create(short x, short y, short dx, short dy,
}
PNT TScroll_window::log2dev(long x, long y) const
{
{
if (_autoscroll)
{
if (_pixmap)

View File

@ -200,6 +200,9 @@ public:
// @cmember Distruttore
virtual ~TWindow();
// @cmember Ritorna l'handler della finestra padre
WINDOW parent() const;
// @cmember Ritorna l'identificatore della classe finestra
virtual word class_id() const;

View File

@ -30,6 +30,9 @@
#define F_UPDTULC 137
#define F_CODICE2 138
#define F_DESCAU2 139
#define F_DIBAEXPLOSION 140
#define F_DEFAULTMAG 141
#define F_DEFAULTDEP 142
#define G_SGNVAL 20
#define G_SGNQTA 21

View File

@ -147,6 +147,37 @@ BEGIN
WARNING "La causale collegata deve essere una causale senza ulteriori collegamenti"
END
BOOL F_DIBAEXPLOSION
BEGIN
FIELD B3
PROMPT 2 17 "Esplodi mediante Distinta Base"
END
STRING F_DEFAULTMAG 3
BEGIN
PROMPT 2 19 "Magazzino di default "
FIELD S10[1,3]
USE MAG SELECT CODTAB[4,5]==""
INPUT CODTAB F_DEFAULTMAG
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DEFAULTMAG CODTAB
MESSAGE EMPTY DISABLE,F_DEFAULTDEP
MESSAGE ENABLE,F_DEFAULTDEP
END
STRING F_DEFAULTDEP 2
BEGIN
PROMPT 2 20 "Deposito di default "
FIELD S10[4,5]
USE MAG SELECT CODTAB[4,5]!=""
INPUT CODTAB[1,3] F_DEFAULTMAG
INPUT CODTAB[4,5] F_DEFAULTDEP
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DEFAULTMAG CODTAB[1,3]
OUTPUT F_DEFAULTDEP CODTAB[4,5]
END
ENDPAGE
PAGE "Movimentazione campi" 11 60 14

View File

@ -1,11 +1,10 @@
// ARTICOLI
#define F_CODLIV 101
#define F_DESLIV 102
#define F_FORMLIV 103
#define F_CODLIV 101
#define F_DESLIV 102
#define F_FORMLIV 103
#define F_CODGROUP 104
#define F_DESGROUP 105
#define F_LENFORM 106
#define F_CODGROUP 104
#define F_DESGROUP 105
#define F_LENFORM 106
#define F_NEXTLIV 107
#define F_CHECKLIV 108
#define F_NEXTLIV 107
#define F_CHECKLIV 108

View File

@ -1,5 +1,10 @@
#define F_CODLIV 101
#define F_DESLIV 102
#define F_FORMLIV 103
#define F_CODGROUP 104
#define F_DESGROUP 105
// giacenze
#define F_CODLIV 101
#define F_DESLIV 102
#define F_FORMLIV 103
#define F_CODGROUP 104
#define F_DESGROUP 105
#define F_LENFORM 106
#define F_AUTOINSERT 107
#define F_CODICEADATA 108

View File

@ -1,4 +1,4 @@
#include "batbfca.h"
#include "batbfcg.h"
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
@ -51,6 +51,19 @@ BEGIN
CHECKTYPE REQUIRED
END
BOOLEAN F_AUTOINSERT
BEGIN
PROMPT 7 8 "Abilita auto inserimento"
FIELD B0
END
BOOLEAN F_CODICEADATA
BEGIN
PROMPT 7 8 "Codice come data"
FLAG "H"
FIELD B1
END
NUMBER F_LENFORM 2
BEGIN
PROMPT 2 100 ""
@ -59,6 +72,7 @@ BEGIN
END
ENDPAGE

View File

@ -1,4 +1,4 @@
#include "batbfca.h"
#include "batbfcG.h"
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
@ -20,10 +20,19 @@ BEGIN
OUTPUT F_CODLIV CODTAB
OUTPUT F_DESLIV S0
OUTPUT F_FORMLIV S1
OUTPUT F_AUTOINSERT B0
CHECKTYPE FORCED
ADD NONE
END
BOOL F_AUTOINSERT
BEGIN
PROMPT 1 1 ""
FLAG "HG"
MESSAGE TRUE NORMAL,F_DESGROUP
MESSAGE FALSE REQUIRED,F_DESGROUP
END
// descrizione parte del formato codice
STRING F_DESLIV 50
BEGIN
@ -79,7 +88,7 @@ BEGIN
DISPLAY "Livello@20 " 500@->S0
DISPLAY "Codice@23" CODTAB[2,25]
COPY OUTPUT F_CODGROUP
CHECKTYPE REQUIRED
CHECKTYPE REQUIRED
END
ENDPAGE

View File

@ -1,3 +1,3 @@
111
0
$rmovmag|0|0|94|0|Righe movimenti di magazzino|||
$rmovmag|136|150|95|0|Righe movimenti di magazzino|||

View File

@ -1,5 +1,5 @@
111
10
11
NUMREG|3|7|0|Numero di registrazione
NRIG|2|4|0|Numero di riga
CODMAG|1|5|0|Codice magazzino e deposito
@ -10,6 +10,7 @@ QUANT|4|15|5|Quantita'
PREZZO|4|18|3|Prezzo
CAUS|1|6|0|Causale di magazzino della riga
AUTOMATICA|1|1|0|Flag di riga automatica
ESPLOSA|8|1|0|Flag di riga esplosa (da DiBa)
2
NUMREG+NRIG|
CODART+LIVGIAC+CODMAG+NUMREG|X

View File

@ -1,6 +1,7 @@
// gestione tabelle di magazzino
#include <tabapp.h>
#include <tabutil.h>
#include <modaut.h>
#include "batbcau.h"
#include "batbfca.h"
#include "..\ve\batbmag.h"
@ -20,7 +21,9 @@ class TMask_tabmag : public TMask
static bool singlemag_handler(TMask_field &, KEY); // handler
static bool sumsign_handler(TMask_field &, KEY); // handler
static bool format_handler(TMask_field &, KEY); // handler dei metacaratteri
static bool codliv_handler(TMask_field &, KEY); // handler del numero formato
static bool formatgiac_handler(TMask_field &, KEY); // handler dei metacaratteri
static bool codlivart_handler(TMask_field &, KEY); // handler del numero formato articoli
static bool codlivgiac_handler(TMask_field &, KEY); // handler del numero formato giacenze
static bool codgrp_handler(TMask_field &, KEY); // handler del numero formato
static bool numlivart_handler(TMask_field &, KEY); // handler del numero formato
@ -55,6 +58,8 @@ TMask_tabmag::TMask_tabmag(const char * _maskname,const TString16 &tabname):
}
else if (tabname == "%CAU")
{
if (!main_app().has_module(DBAUT))
hide(F_DIBAEXPLOSION);
set_handler(F_SGNGIAC, sumsign_handler);
}
else if (tabname == "FCA") // FORMATO CODICE ARTICOLI
@ -63,7 +68,7 @@ TMask_tabmag::TMask_tabmag(const char * _maskname,const TString16 &tabname):
aux_tabf = new TTable("FCA");
metach= new TMetachar("");
set_handler(F_FORMLIV, format_handler);
set_handler(F_CODLIV, codliv_handler);
set_handler(F_CODLIV, codlivart_handler);
}
else if (tabname == "GCA") // GRUPPI CODICE ARTICOLI
{
@ -76,8 +81,8 @@ TMask_tabmag::TMask_tabmag(const char * _maskname,const TString16 &tabname):
cod_liv = new TCodgiac_livelli;
metach = new TMetachar("") ;
aux_tabf = new TTable("FCG");
set_handler(F_FORMLIV, format_handler);
set_handler(F_CODLIV, codliv_handler);
set_handler(F_FORMLIV, formatgiac_handler);
set_handler(F_CODLIV, codlivgiac_handler);
}
else if (tabname == "GCG") // GRUPPI CODICE GIACENZE
{
@ -143,37 +148,70 @@ bool TMask_tabmag::format_handler(TMask_field& f, KEY k)
if (k == K_TAB && f.focusdirty())
{
TString s(f.get());
TMask_tabmag & myself=((TMask_tabmag &)f.mask());
TTable * aux_tabf=myself.aux_tabf;
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
TTable * aux_tabf=mask.aux_tabf;
s.strip_spaces();
f.set(s);
aux_tabf->zero();
aux_tabf->put("CODTAB",myself.get_int(F_CODLIV)+1);
aux_tabf->put("CODTAB",mask.get_int(F_CODLIV)+1);
if (aux_tabf->read()==NOERR)
{
// non è l'ultimo livello: solo caratteri obbligatori
if (myself.metach->has_opzchars(s))
if (mask.metach->has_opzchars(s))
{
f.error_box("I caratteri di formato opzionali ('%s') sono consentiti solo per l'ultimo livello",
myself.metach->opz_chars());
mask.metach->opz_chars());
return FALSE;
}
}
// setta il campo con la lunghezza massima della stringa di formato
//myself.field(F_LENFORM).set(myself.metach->maxstrlen(f.get()));
}
return TRUE;
}
// HANDLER DEL CODICE LIVELLO
bool TMask_tabmag::codliv_handler(TMask_field& f, KEY k)
// HANDLER DEL FORMATO DEL LIVELLO
bool TMask_tabmag::formatgiac_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
{
TMask_tabmag & myself=((TMask_tabmag &)f.mask());
TTable * aux_tabf=myself.aux_tabf;
const int maxlen=15;
int total_len=0;
TString s(f.get());
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
TTable * aux_tabf=mask.aux_tabf;
s.strip_spaces();
f.set(s);
mask.set(F_LENFORM,mask.metach->maxstrlen(s));
aux_tabf->zero();
aux_tabf->put("CODTAB",1);
if (aux_tabf->read()==NOERR)
{
do {
if (aux_tabf->get_int("CODTAB") != mask.get_int(F_CODLIV))
total_len+=aux_tabf->get_int("I0");
} while (aux_tabf->next()==NOERR);
}
total_len+=mask.get_int(F_LENFORM);
if (total_len > maxlen)
{
f.error_box("La somma delle lunghezze dei codici \n dei livelli di giacenza eccede \nil massimo consentito di %d caratteri",maxlen);
return FALSE;
}
}
return TRUE;
}
// HANDLER DEL CODICE LIVELLO
bool TMask_tabmag::codlivart_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
{
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
TTable * aux_tabf=mask.aux_tabf;
int codliv=atoi((const char *)f.get());
if (codliv>1)
@ -187,7 +225,7 @@ bool TMask_tabmag::codliv_handler(TMask_field& f, KEY k)
TString prevformat(aux_tabf->get("S1"));
aux_tabf->zero();
aux_tabf->put("CODTAB",codliv+1);
if (aux_tabf->read()!=NOERR && myself.metach->has_opzchars(prevformat))
if (aux_tabf->read()!=NOERR && mask.metach->has_opzchars(prevformat))
{
f.error_box("Il livello precedente include caratteri opzionali nel formato\ne non puo' divenire un livello intermedio");
return FALSE;
@ -202,14 +240,39 @@ bool TMask_tabmag::codliv_handler(TMask_field& f, KEY k)
}
// HANDLER DEL CODICE LIVELLO
bool TMask_tabmag::codlivgiac_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
{
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
TTable * aux_tabf=mask.aux_tabf;
int codliv=atoi((const char *)f.get());
if (codliv>1)
// Non è il primo codice
{
aux_tabf->zero();
aux_tabf->put("CODTAB",codliv-1);
if (aux_tabf->read()!=NOERR)
// non esiste un precedente
{
f.error_box("Non si possono inserire salti nel livello del codice");
return FALSE;
}
}
}
return TRUE;
}
// gestisce l'introduzione del codice del livello articoli
bool TMask_tabmag::numlivart_handler(TMask_field& f, KEY k)
{
if ((k == K_TAB && f.focusdirty())||k == K_ENTER )
{
TMask_tabmag & myself=((TMask_tabmag &)f.mask());
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
if (myself.get_int(F_CODLIV)==myself.cod_liv->last_level())
if (mask.get_int(F_CODLIV)==mask.cod_liv->last_level())
// non esiste un seguente
{
f.error_box("Non è possibile definire gruppi per l'ultimo livello di codice articolo");
@ -226,15 +289,15 @@ bool TMask_tabmag::codgrp_handler(TMask_field& f, KEY k)
{
if ((k == K_TAB && f.focusdirty() )||k == K_ENTER )
{
TMask_tabmag & myself=((TMask_tabmag &)f.mask());
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
if (!myself.cod_liv->enabled())
if (!mask.cod_liv->enabled())
{
f.error_box("Livelli del codice non abilitati");
return FALSE;
}
if (!f.empty() && !(myself.cod_liv->fit_to_format(f.get(),myself.get_int(F_CODLIV))))
if (!f.empty() && !(mask.cod_liv->fit_to_format(f.get(),mask.get_int(F_CODLIV))))
{
f.error_box("Codice non corrispondente al formato previsto");
return FALSE;

View File

@ -11,13 +11,18 @@
#include "..\ve\veconf.h"
#include "mg1100.h"
#ifndef __DBLIB_H
#include "..\db\dblib.h"
#endif
//********************
//********************
// maschera dell'applicazione "Gestione interattiva movimenti di magazzino"
//
class TMask_movmag: public TMask {
class TMask_movmag: public TMask
{
static TRecord_cache cache_causali;
TMov_mag * mov_mag;
TCodgiac_livelli * livelli_giac; // oggetto gestione livelli di giacenza
@ -26,7 +31,10 @@ class TMask_movmag: public TMask {
bool price_proposed;
real proposed_price(const char * codart, real quant,const char * causrig);
bool update_rigamov (int r, const char * old_codcaus);
// aggiorna la riga di magazzino aggiungendo righe automatiche o esplosioni
bool update_rigamov (int r, const char * old_codcaus, const char * old_codart, const real & old_quant);
bool add_autorows (int r, const char * old_codcaus, const char * old_codart, const real & old_quant);
bool add_explrows (int r);
TMagazzini _magazzini;
static bool notify_righe(TSheet_field & fld_righe, int item, KEY k); // notify delle righe di sheet
@ -92,7 +100,6 @@ TMask_movmag::~TMask_movmag()
{
}
// item varies from 1 to items()
void TMask_movmag::sheetrighe_get(TSheet_field &fld_righe, int item)
{
@ -127,14 +134,20 @@ void TMask_movmag::sheetrighe_put(TSheet_field &fld_righe, int item)
bool TMask_movmag::handle_righe(TMask_field &f, KEY k)
{
if (k == K_ENTER) {
TSheet_field & ss=(TSheet_field & )f;
for (int i=0; i< ss.items(); i++)
if (k == K_ENTER)
{
TSheet_field& ss=(TSheet_field & )f;
const int column = ss.cid2index(F_CODMAG);
if (ss.column_enabled(column))
{
if (*ss.cell(i,ss.cid2index(F_CODMAG)) ==' ')
for (int i = 0; i < ss.items(); i++)
{
f.error_box("Nella riga %d manca l'indicazione del magazzino ",i+1);
return FALSE;
if (*ss.cell(i,column) <= ' ')
{
f.error_box("Nella riga %d manca l'indicazione del magazzino ",i+1);
return FALSE;
}
}
}
}
@ -145,16 +158,16 @@ bool TMask_movmag::notify_righe(TSheet_field & ss, int r, KEY key)
{
TMask_movmag &m=(TMask_movmag &)ss.mask();
static TString16 old_codcaus;
static TString old_codart(20);
static real old_quant(1);
if ( key == K_DEL ) // Cancellazione
{
if (*ss.cell(r,ss.cid2index( F_AUTOMATICA))==riga_automatica)
return FALSE; // can't remove auto lines directly
if (r < ss.items()-1)
while (r < ss.items()-1 && *ss.cell(r+1,ss.cid2index( F_AUTOMATICA))==riga_automatica)
{
if (*ss.cell(r+1,ss.cid2index( F_AUTOMATICA))==riga_automatica)
{
ss.destroy(r + 1);
}
// autoremove automatic lines along with the original one
ss.destroy(r+1);
}
} else if (key == K_INS) { // Inserimento
@ -171,9 +184,10 @@ bool TMask_movmag::notify_righe(TSheet_field & ss, int r, KEY key)
old_codcaus=ss.sheet_mask().get(F_CAUSRIG);
if (old_codcaus.blank())
old_codcaus=ss.mask().get(F_CODCAUS);
old_quant=ss.sheet_mask().get_real(F_QUANT);
old_codart=ss.sheet_mask().get(F_CODART);
} else if (key == K_ENTER) {
if (m.update_rigamov(r,old_codcaus))
if (m.update_rigamov(r,old_codcaus,old_codart,old_quant))
ss.select(r+1);
}
return TRUE;
@ -207,46 +221,155 @@ bool TMask_movmag::handle_righeprezzo2(TMask_field &f, KEY k)
return TRUE;
}
bool TMask_movmag::update_rigamov (int r, const char * old_codcaus)
bool TMask_movmag::update_rigamov (int r, const char * old_codcaus, const char * old_codart, const real & old_quant)
{
bool added_some=add_autorows(r, old_codcaus, old_codart, old_quant);
if (added_some)
add_explrows(r+1);
added_some |=add_explrows(r);
return added_some;
}
bool TMask_movmag::add_autorows (int r, const char * old_codcaus, const char * old_codart, const real & old_quant)
{
bool added_some=FALSE;
TSheet_field & ss=(TSheet_field & )field(F_RIGHE);
real new_factor(ss.cell(r,ss.cid2index(F_QUANT)));
new_factor = old_quant.is_zero() ? ZERO : new_factor / old_quant;
TString16 new_codcaus(ss.cell(r,ss.cid2index(F_CAUSRIG)));
if (new_codcaus.blank())
new_codcaus=get(F_CODCAUS);
TCausale_magazzino &oldcau=(TCausale_magazzino &)cache_causali.get(old_codcaus);
TCausale_magazzino &cau =(TCausale_magazzino &)cache_causali.get(new_codcaus);
if (*cau.caus_collegata()!='\0')
bool rimuovi_righe_coll=FALSE;
bool inserisci_righe_coll=*cau.caus_collegata()!='\0';
if (inserisci_righe_coll)
{
// *******************************
// deve esserci una riga collegata
TString16 codmag,coddep;
real prezzo(ss.cell(r,ss.cid2index(F_PREZZO)));
if (r < ss.items()-1 && *ss.cell(r+1,ss.cid2index( F_AUTOMATICA)) != riga_automatica)
TCausale_magazzino &cau_coll =(TCausale_magazzino &)cache_causali.get(cau.caus_collegata());
if ((r < ss.items()-1 && *ss.cell(r+1,ss.cid2index( F_AUTOMATICA)) == riga_automatica)
&& cau_coll.esplodente()
&& strcmp(old_codart,ss.cell(r,ss.cid2index( F_CODART)))!=0 )
{
// ho cambiato il codice articolo del finito: rimuovo le righe automatiche esplose
rimuovi_righe_coll=TRUE;
}
}
else
if (*oldcau.caus_collegata()!='\0') // ho cambiato causale, passando ad una che non ha collegamenti
rimuovi_righe_coll=TRUE;
// ******************
if (rimuovi_righe_coll)
{
while (r < ss.items()-1
&& *ss.cell(r+1,ss.cid2index( F_AUTOMATICA)) == riga_automatica)
ss.destroy(r + 1);
}
// ******************
if (inserisci_righe_coll)
{
TCausale_magazzino &cau_coll =(TCausale_magazzino &)cache_causali.get(cau.caus_collegata());
TString tmpstr;
int offset=1;
#define COPIA_SU_AUTO(colnum) {tmpstr=(ss.row(r).get(ss.cid2index(colnum))); ss.row(r+offset).add(tmpstr,ss.cid2index(colnum));}
if ((r == ss.items()-1 || r < ss.items()-1 && *ss.cell(r+1,ss.cid2index( F_AUTOMATICA)) != riga_automatica))
{
// manca, la inserisco
ss.insert(r+1);
ss.row(r+1)=ss.row(r);
} else {
ss.row(r+1)=ss.row(r);
}
//codmag=ss.cell(r,ss.cid2index(F_CODMAG));
//coddep=ss.cell(r,ss.cid2index(F_CODDEP));
//ss.row(r+1).add(codmag,ss.cid2index(F_CODMAG));
//ss.row(r+1).add(coddep,ss.cid2index(F_CODDEP));
ss.row(r+1).add(prezzo.string(),ss.cid2index(F_PREZZO));
ss.row(r+1).add(cau.caus_collegata(),ss.cid2index(F_CAUSRIG));
ss.row(r+1).add(TString(1,riga_automatica),ss.cid2index(F_AUTOMATICA));
ss.check_row(r+1);
ss.force_update(r+1);
return TRUE;
} else
if (*oldcau.caus_collegata()!='\0')
ss.insert(r+offset);
ss.row(r+offset)=ss.row(r);
ss.row(r+offset).add(TString(1,riga_automatica),ss.cid2index(F_AUTOMATICA));
if (cau_coll.has_default_mag())
ss.row(r+1).add(cau_coll.default_mag(),ss.cid2index(F_CODMAG));
if (cau_coll.has_default_dep())
ss.row(r+1).add(cau_coll.default_mag(),ss.cid2index(F_CODDEP));
COPIA_SU_AUTO(F_PREZZO);
added_some= TRUE;
}
while (r+offset < ss.items() && *ss.cell(r+offset,ss.cid2index( F_AUTOMATICA))==riga_automatica)
{
// scollega la vecchia riga
ss.destroy(r + 1);
// riporta eventuali cambiamenti della riga "Master" sulle righe automatice
if (*ss.cell(r+offset,ss.cid2index( F_ESPLOSA)) <=' ')
{
COPIA_SU_AUTO(F_CODART);
COPIA_SU_AUTO(F_LIV1);
COPIA_SU_AUTO(F_LIV2);
COPIA_SU_AUTO(F_LIV3);
COPIA_SU_AUTO(F_LIV4);
COPIA_SU_AUTO(F_UM);
COPIA_SU_AUTO(F_QUANT);
ss.row(r+offset).add(cau.caus_collegata(),ss.cid2index(F_CAUSRIG));
ss.check_row(r+offset);
ss.force_update(r+offset);
} else {
if (new_factor != 1.0)
{
real q(ss.row(r+offset).get(ss.cid2index(F_QUANT)));
q*=new_factor;
tmpstr=q.string();
ss.row(r+offset).add(tmpstr,ss.cid2index(F_QUANT));
ss.force_update(r+offset);
}
}
offset++;
}
return FALSE;
}
return added_some;
}
bool TMask_movmag::add_explrows(int r)
{
TSheet_field & sheet=(TSheet_field & )field(F_RIGHE);
TString16 new_codcaus(sheet.cell(r,sheet.cid2index(F_CAUSRIG)));
if (new_codcaus.blank())
new_codcaus=get(F_CODCAUS);
bool added_some=FALSE;
TCausale_magazzino &cau =(TCausale_magazzino &)cache_causali.get(new_codcaus);
if (cau.esplodente() && *sheet.cell(r,sheet.cid2index(F_ESPLOSA)) == ' ')
{
TDistinta_tree distinta;
TArray boom;
// *******************************
// c'e' una riga di movimento esplodente non ancora esplosa:
// va sostituita con n righe esplose
TString codmag;
real prezzo,quant;
distinta.set_root(sheet.cell(r,sheet.cid2index(F_CODART)));
distinta.explode(boom);
for (int newrow=0; newrow < boom.items() ; newrow++)
{
TRiga_esplosione & riga_esp=(TRiga_esplosione & )(boom[newrow]);
sheet.insert(r+newrow+1);
TToken_string & nuova_riga=sheet.row(r+newrow+1);
nuova_riga=sheet.row(r);
nuova_riga.add(riga_esp.articolo() ,sheet.cid2index(F_CODART));
nuova_riga.add(riga_esp.um() , sheet.cid2index(F_UM));
quant=sheet.row(r).get(sheet.cid2index(F_QUANT));
quant*=riga_esp.val();
nuova_riga.add(quant.string() , sheet.cid2index(F_QUANT));
if (codmag.not_empty())
{
nuova_riga.add(codmag.sub(1,3) ,sheet.cid2index(F_CODMAG));
nuova_riga.add(codmag.sub(4,5) ,sheet.cid2index(F_CODDEP));
}
if (!prezzo.is_zero())
nuova_riga.add(prezzo.string(),sheet.cid2index(F_PREZZO));
nuova_riga.add("X",sheet.cid2index(F_ESPLOSA));
sheet.check_row(r+1+newrow);
sheet.force_update(r+1+newrow);
added_some=TRUE;
}
// elimino la riga "padre"
sheet.destroy(r);
}
return added_some;
}
real TMask_movmag::proposed_price(const char *codart,
@ -293,7 +416,7 @@ bool TMask_movmag::handle_codcaus(TMask_field &fld, KEY k)
for (int i=0; i< ss.items(); i++)
{
if (*ss.cell(i,ss.cid2index(F_CAUSRIG)) ==' ')
added_some &=(m.update_rigamov(i,old_codcaus));
added_some &=(m.update_rigamov(i,old_codcaus,ss.cell(i,ss.cid2index(F_CODART)), real(ss.cell(i,ss.cid2index(F_QUANT)))));
}
if (added_some)
{
@ -324,7 +447,8 @@ bool TMask_movmag::handle_datacomp(TMask_field &fld, KEY k)
class TApp_movmag: public TRelation_application {
class TApp_movmag: public TRelation_application
{
TArray used_files;
TMask_movmag *_msk; // maschera principale
TCodgiac_livelli * _livelli_giac;// oggetto handler per i livelli di giacenza
@ -338,6 +462,7 @@ class TApp_movmag: public TRelation_application {
virtual const char *get_next_key();
TString16 _nextcod;
public:
TApp_movmag() {};
virtual ~TApp_movmag() {};
@ -380,14 +505,15 @@ bool TApp_movmag::user_destroy()
// autonumerazione
const char *TApp_movmag::get_next_key()
{
return _nextcod.format("%d|%s",F_NUMREG,((TMov_mag &)_rel->curr()).get_next_key());
const char* nk = ((TMov_mag &)_rel->curr()).get_next_key();
return _nextcod.format("%d|%s",F_NUMREG, nk);
}
int mg1100(int argc, char* argv[])
{
TApp_movmag a;
a.run(argc, argv, "Movimenti di magazzino");
exit(0);
return 0;
}

View File

@ -135,79 +135,51 @@ BEGIN
GROUP G_DEFMOV
END
LISTBOX F_TIPOCONDV 1 12
RADIOBUTTON F_TIPOCF 15
BEGIN
FIELD TIPOCV
PROMPT 2 10 "Condizione di vendita "
ITEM " |Nessuna"
MESSAGE CLEAR,F_CATVEN
MESSAGE RESET,F_CODLIST|RESET,F_CODCONTR|RESET,F_CODOFF
MESSAGE HIDE,F_CODLIST|HIDE,F_CODCONTR|HIDE,F_CODOFF|CLEAR,F_TIPOCF
ITEM "L|Listino"
MESSAGE ENABLE,F_CATVEN
MESSAGE SHOW,F_CODLIST|HIDE,F_CODCONTR|HIDE,F_CODOFF
MESSAGE RESET,F_CODCONTR|RESET,F_CODOFF|CLEAR,F_TIPOCF
ITEM "C|Contratto"
MESSAGE CLEAR,F_CATVEN
MESSAGE HIDE,F_CODLIST|SHOW,F_CODCONTR|HIDE,F_CODOFF
MESSAGE RESET,F_CODLIST|RESET,F_CODOFF|ENABLE,F_TIPOCF
ITEM "O|Offerta"
MESSAGE CLEAR,F_CATVEN
MESSAGE HIDE,F_CODLIST|HIDE,F_CODCONTR|SHOW,F_CODOFF
MESSAGE RESET,F_CODLIST|RESET,F_CODCONTR|CLEAR,F_TIPOCF
// GROUP G_DEFMOV
END
LISTBOX F_TIPOCF 20
BEGIN
PROMPT 42 10 "relativo a "
PROMPT 2 8 ""
FLAGS "G"
FIELD TIPOCF
ITEM " |"
ITEM " |Nessuno"
MESSAGE HIDE,F_CODCLI|HIDE,F_CODFOR|HIDE,F_RAGSOC|RESET,F_CODCF|HIDE,F_CODCF
ITEM "C|cliente"
ITEM "C|Cliente"
MESSAGE SHOW,F_CODCF|SHOW,F_CODCLI|HIDE,F_CODFOR|SHOW,F_RAGSOC|CHECK,F_CODCONTR
ITEM "F|fornitore"
ITEM "F|Fornitore"
MESSAGE SHOW,F_CODCF|HIDE,F_CODCLI|SHOW,F_CODFOR|SHOW,F_RAGSOC|CHECK,F_CODCONTR
GROUP G_DEFMOV
END
TEXT F_CODCLI
BEGIN
PROMPT 20 10 "Codice cliente "
END
TEXT F_CODFOR
BEGIN
PROMPT 20 10 "Codice fornitore "
END
// agisce anche quando l'utente non entra in gioco (settaggio da contratto...)
NUMBER F_CODCF 6
BEGIN
// FLAGS "UHG"
FIELD CODCF
PROMPT 19 12 ""
PROMPT 37 10 ""
USE LF_CLIFO
INPUT TIPOCF F_TIPOCF
INPUT CODCF F_CODCF
INPUT TIPOCF F_TIPOCF SELECT
INPUT CODCF F_CODCF
DISPLAY "Codice " CODCF
DISPLAY "Ragione sociale@50" RAGSOC
OUTPUT F_CODCF CODCF
// OUTPUT F_CODCLI CODCF
// OUTPUT F_CODFOR CODCF
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE NORMAL
END
TEXT F_CODCLI
BEGIN
PROMPT 2 12 "Codice cliente "
END
TEXT F_CODFOR
BEGIN
PROMPT 2 12 "Codice fornitore "
END
// esegue i controlli e ricopia i valori del codice sia in CLI che in FOR
STRING F_RAGSOC 50 40
STRING F_RAGSOC 50 30
BEGIN
PROMPT 30 12 ""
PROMPT 48 12 ""
USE LF_CLIFO KEY 2
INPUT TIPOCF F_TIPOCF SELECT
INPUT RAGSOC F_RAGSOC
@ -216,11 +188,35 @@ BEGIN
OUTPUT F_CODCF CODCF
GROUP G_DEFMOV
END
LISTBOX F_TIPOCONDV 1 12
BEGIN
FIELD TIPOCV
PROMPT 2 12 "Condizione di vendita "
ITEM " |Nessuna"
MESSAGE CLEAR,F_CATVEN
MESSAGE RESET,F_CODLIST|RESET,F_CODCONTR|RESET,F_CODOFF
MESSAGE HIDE,F_CODLIST|HIDE,F_CODCONTR|HIDE,F_CODOFF
ITEM "L|Listino"
MESSAGE ENABLE,F_CATVEN
MESSAGE SHOW,F_CODLIST|HIDE,F_CODCONTR|HIDE,F_CODOFF
MESSAGE RESET,F_CODCONTR|RESET,F_CODOFF
ITEM "C|Contratto"
MESSAGE CLEAR,F_CATVEN
MESSAGE HIDE,F_CODLIST|SHOW,F_CODCONTR|HIDE,F_CODOFF
MESSAGE RESET,F_CODLIST|RESET,F_CODOFF
ITEM "O|Offerta"
MESSAGE CLEAR,F_CATVEN
MESSAGE HIDE,F_CODLIST|HIDE,F_CODCONTR|SHOW,F_CODOFF
MESSAGE RESET,F_CODLIST|RESET,F_CODCONTR
// GROUP G_DEFMOV
END
STRING F_CATVEN 2
BEGIN
FLAGS "DU"
PROMPT 2 13 "Cat.ven."
PROMPT 2 14 "Cat.ven."
FIELD CATVEN
USE CVE
INPUT CODTAB F_CATVEN
@ -234,7 +230,7 @@ END
STRING F_CODLIST 3
BEGIN
FLAGS "U"
PROMPT 20 13 "Codice listino "
PROMPT 2 16 "Codice listino "
FIELD CODCONDV
USE LF_CONDV
INPUT TIPO "L"
@ -254,7 +250,7 @@ END
STRING F_CODCONTR 3
BEGIN
FLAGS "U"
PROMPT 20 13 "Codice contratto "
PROMPT 2 16 "Codice contratto "
FIELD CODCONDV
USE LF_CONDV
INPUT TIPO "C"
@ -277,7 +273,7 @@ END
STRING F_CODOFF 3
BEGIN
FLAGS "U"
PROMPT 20 13 "Codice offerta "
PROMPT 2 16 "Codice offerta "
FIELD CODCONDV
USE LF_CONDV
INPUT TIPO "O"
@ -337,9 +333,9 @@ BEGIN
GROUP G_DEFMOV
END
SPREADSHEET F_RIGHE 77 12
SPREADSHEET F_RIGHE
BEGIN
PROMPT 2 7 "RIGHE DI MOVIMENTO"
PROMPT 0 7 "RIGHE DI MOVIMENTO"
FLAGS "AI"
//USE LF_RMOVMAG KEY NRIG
//INPUT NUMREG F_NUMREG
@ -358,7 +354,8 @@ BEGIN
ITEM "Causale"
END
ENDPAGE
ENDMASK
#include "mg1100a.uml"

View File

@ -12,6 +12,7 @@
#define F_QUANT 111
#define F_PREZZO 112
#define F_CAUSRIG 113
#define F_ESPLOSA 120
// colonne non visibili dello Sheet
#define F_DESMAG 150
@ -22,4 +23,4 @@
#define F_VALORE 156
#define F_DESCAUSRIG 157
#define G_NOAUTO 1
#define G_NOAUTO 1

View File

@ -33,13 +33,15 @@ STRING F_CODART 20
BEGIN
PROMPT 2 2 "Codice articolo "
FIELD CODART
FLAGS "U"
FLAGS "UG"
USE LF_ANAMAG
JOIN LF_UMART INTO CODART==CODART NRIGA==1
INPUT CODART F_CODART
DISPLAY "Codice@20" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CODART CODART
OUTPUT F_DESART DESCR
OUTPUT F_UM LF_UMART->UM
CHECKTYPE REQUIRED
GROUP G_NOAUTO
ADD RUN ve2 -3
@ -50,6 +52,7 @@ BEGIN
PROMPT 2 3 "Descrizione "
FLAGS "U"
USE LF_ANAMAG KEY 2
JOIN LF_UMART INTO CODART==CODART NRIGA==1
INPUT DESCR F_DESART
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice@20" CODART
@ -75,6 +78,22 @@ BEGIN
CHECKTYPE REQUIRED
END
STRING F_DESMAG 50
BEGIN
PROMPT 22 5 ""
USE MAG KEY 2 SELECT CODTAB[4,5]==""
INPUT S0 F_DESMAG
DISPLAY "Denominazione mag.@50" S0
DISPLAY "Cod. magazzino" CODTAB[1,3]
DISPLAY "Cod. deposito" CODTAB[4,5]
OUTPUT F_CODMAG CODTAB[1,3]
CHECKTYPE NORMAL
MESSAGE EMPTY CHECK,F_CODMAG
// GUIDO!!!!!!!!!!!!!!!!! in che ordine vengono eseguiti gli output
// a cascata??? perchè mi ritrovo il coddep cancellato???
END
STRING F_CODDEP 2
BEGIN
PROMPT 2 6 "Deposito "
@ -94,22 +113,6 @@ BEGIN
WARNING "Indicare il deposito"
END
STRING F_DESMAG 50
BEGIN
PROMPT 22 5 ""
USE MAG KEY 2 SELECT CODTAB[4,5]==""
INPUT S0 F_DESMAG
DISPLAY "Denominazione mag.@50" S0
DISPLAY "Cod. magazzino" CODTAB[1,3]
DISPLAY "Cod. deposito" CODTAB[4,5]
OUTPUT F_CODMAG CODTAB[1,3]
CHECKTYPE NORMAL
MESSAGE EMPTY CHECK,F_CODMAG
// GUIDO!!!!!!!!!!!!!!!!! in che ordine vengono eseguiti gli output
// a cascata??? perchè mi ritrovo il coddep cancellato???
END
STRING F_DESDEP 50
BEGIN
PROMPT 22 6 ""
@ -135,7 +138,8 @@ BOOLEAN H_GESTGIA
BEGIN
PROMPT 1 1 ""
FLAGS "HG"
MESSAGE TRUE ENABLE,F_CODDEP|CHECK,F_CODDEP|SHOW,F_DESDEP
// MESSAGE TRUE ENABLE,F_CODDEP|CHECK,F_CODDEP|SHOW,F_DESDEP
MESSAGE TRUE ENABLE,F_CODDEP|SHOW,F_DESDEP
MESSAGE FALSE RESET,F_CODDEP|RESET,F_DESDEP|DISABLE,F_CODDEP|HIDE,F_DESDEP
END
@ -262,6 +266,14 @@ BEGIN
PROMPT 42 16 ""
END
BOOL F_ESPLOSA
BEGIN
FLAGS "GH"
FIELD ESPLOSA
PROMPT 2 18 ""
END
ENDPAGE
ENDMASK

View File

@ -77,12 +77,7 @@ public:
bool TApp_rebuildbalances::create()
{
used_files= new TArray;
used_files->add(new TLocalisamfile(LF_ANAMAG));
used_files->add(new TLocalisamfile(LF_UMART));
used_files->add(new TLocalisamfile(LF_MAG));
used_files->add(new TLocalisamfile(LF_MOVMAG));
used_files->add(new TLocalisamfile(LF_RMOVMAG));
open_files(LF_ANAMAG,LF_UMART,LF_MAG,LF_MOVMAG,LF_RMOVMAG,LF_TABCOM,LF_STOMAG,0);
TSkeleton_application::create();
return TRUE;
}
@ -106,8 +101,8 @@ void TApp_rebuildbalances::main_loop()
TMask_buildmov m;
while (m.run()==K_ENTER)
{
if (!rebuild_balances(m.get(F_ANNOES)/*, TRUE*/))
error_box("Ricostruzione saldi incompleta o errata. Ripetere");
if (!rebuild_balances(m.get(F_ANNOES)))
warning_box("A causa degli errori riscontrati i saldi di magazzino \npotrebbero non essere stati del tutto aggiornati. \nProcedere ad una nuova operazione di ''Ricostruzione saldi''");
}
}

View File

@ -112,16 +112,19 @@ bool TMask_openclose::handle_what(TMask_field &fld, KEY k)
return TRUE;
}
// Corrispondenza elementi di _movimenti:
/* elemento 0 : movimento con causale di rimanenze iniziali
elemento 1 : " " " In conto lav.
elemento 2 : " " " A conto lav.
elemento 3 : " " " In prod. fin.
elemento 4 : " " " In prod. comp.
elemento 5 : " " " Ordinato fornitori
elemento 6 : " " " Ordinato clienti
elemento 7 e successivi: tutte le righe in eccesso a MAX_ROWS
*/
#define CAUS_A_RIMIN 0 // movimento con causale di rimanenze iniziali
#define CAUS_A_INCL 1 // " " " In conto lav.
#define CAUS_A_ACL 2 // " " " A conto lav.
#define CAUS_A_INPRF 3 // " " " In prod. fin.
#define CAUS_A_INPRC 4 // " " " In prod. comp.
#define CAUS_A_ORDF 5 // " " " Ordinato fornitori
#define CAUS_A_ORDC 6 // " " " Ordinato clienti
// elemento 7 e successivi: tutte le righe in eccesso a MAX_ROWS
class TApp_openclose : public TSkeleton_application
{
@ -141,7 +144,8 @@ class TApp_openclose : public TSkeleton_application
TDate _date_to_close;
TDate _date_to_open;
action _what;
TTipo_valorizz _calctype, _stotype; // Stotype sta per sto-cazzo
bool _valorizza_comp;
TTipo_valorizz _calctype,_stotype; // Stotype sta per sto-cazzo: valorizzazione per lo storico
protected:
virtual bool create();
@ -157,6 +161,7 @@ public:
virtual ~TApp_openclose() {};
};
bool TApp_openclose::create()
{
_msk = new TMask_openclose(has_module(ORAUT));
@ -169,6 +174,7 @@ bool TApp_openclose::create()
return TSkeleton_application::create();
}
bool TApp_openclose::destroy()
{
delete _msk;
@ -181,6 +187,7 @@ bool TApp_openclose::destroy()
return TSkeleton_application::destroy();
}
void TApp_openclose::compila_movimento(TMov_mag& currmov, TArticolo_giacenza& art, TRectype& rec, const int caus)
{
// Aggiorna la testata se il movimento e' nuovo (non ha righe)
@ -194,7 +201,8 @@ void TApp_openclose::compila_movimento(TMov_mag& currmov, TArticolo_giacenza& ar
}
// Aggiunge una nuova riga al movimento corrente
TString codmag(rec.get(MAG_CODMAG));
TString codmagdep(rec.get(MAG_CODMAG));
TString codmag(codmagdep);codmag.cut(3);
TString codart(rec.get(MAG_CODART));
TString livello(rec.get(MAG_LIVELLO));
@ -202,12 +210,16 @@ void TApp_openclose::compila_movimento(TMov_mag& currmov, TArticolo_giacenza& ar
// switch sul tipo di causale per settare quantita' e prezzo:
switch (caus)
{
case 0: // Rimanenze iniziali
case CAUS_A_RIMIN: // Rimanenze iniziali
{
qta = rec.get_real(MAG_GIAC) + rec.get_real(MAG_PRODFIN)-rec.get_real(MAG_PRODCOMP)
+ rec.get_real(MAG_ACL) - rec.get_real(MAG_INCL); // ??corretta da AcL, IncL e InProdF ??
qta = rec.get_real(MAG_GIAC) + rec.get_real(MAG_ACL) - rec.get_real(MAG_INCL); // ??corretta da AcL, IncL e InProdF ??
if (!_valorizza_comp)
qta += rec.get_real(MAG_PRODFIN)-rec.get_real(MAG_PRODCOMP);
switch (_calctype)
{
case valorizz_costmediopond:
val = art.costo_mediopond(_es_to_close, codmag, livello);
break;
case valorizz_costmedio:
val = art.costo_medio(_es_to_close, codmag, livello);
break;
@ -247,24 +259,24 @@ void TApp_openclose::compila_movimento(TMov_mag& currmov, TArticolo_giacenza& ar
prezzo = val/qta;
}
break;
case 1: // In conto lav.
case CAUS_A_INCL: // In conto lav.
qta = rec.get_real(MAG_INCL);
break;
case 2: // A conto lav.
case CAUS_A_ACL: // A conto lav.
qta = rec.get_real(MAG_ACL);
break;
case 3: // In prod. fin.
case CAUS_A_INPRF: // In prod. fin.
qta = rec.get_real(MAG_PRODFIN);
break;
case 4: // In prod. com.
case CAUS_A_INPRC: // In prod. com.
qta = rec.get_real(MAG_PRODCOMP);
break;
case 5: // Ord. forn.
case CAUS_A_ORDF: // Ord. forn.
qta = rec.get_real(MAG_ORDF);
val = rec.get_real(MAG_VALORDF);
prezzo = val/qta;
break;
case 6: // Ord. cli.
case CAUS_A_ORDC: // Ord. cli.
qta = rec.get_real(MAG_ORDC);
val = rec.get_real(MAG_VALORDC);
prezzo = val/qta;
@ -279,7 +291,7 @@ void TApp_openclose::compila_movimento(TMov_mag& currmov, TArticolo_giacenza& ar
const int r = ums.first_row();
if (r > 0)
riga.put(RMOVMAG_UM, (ums[r]).get(UMART_UM));
riga.put(RMOVMAG_CODMAG, codmag);
riga.put(RMOVMAG_CODMAG, codmagdep);
riga.put(RMOVMAG_CODART, codart);
riga.put(RMOVMAG_LIVGIAC, livello);
// La causale di riga va messa solo se e' diversa da quella di testata!
@ -288,25 +300,24 @@ void TApp_openclose::compila_movimento(TMov_mag& currmov, TArticolo_giacenza& ar
}
}
// Chiude l'esercizio selezionato (in base al flag lo fa provvisoriamente o definitivamente)
// L'unica differenza sta nella creazione dei movimenti d'apertura nel caso di chiusura definitiva
void TApp_openclose::chiudi_esercizio()
{
TArticolo_giacenza artgiac;
TRelation rel(LF_ANAMAG);
TCursor cur(&rel);
rel.lfile().set_curr(new TArticolo_giacenza()); // setta il Multirec come current della relazione
TString descr1, descr2;
int err = NOERR;
TTable esc("ESC");
rel.lfile().set_curr((TRectype*)&artgiac);
const long items = cur.items();
rebuild_balances(_es_to_close); // Cosi' ci assicuriamo che i saldi dell'esercizio vecchio siano a posto
descr1.format(_what == definitiva ? "Apertura esercizio %s" : "Aggiornamento saldi esercizio %s", (const char*) _es_to_open);
descr2 << descr1 << " in corso...";
TProgind *prog = new TProgind(items, descr2, FALSE, TRUE, 10);
// cose specifiche per chiusura definitiva...
// Reperisce l'ultimo movimento di magazzino per il numero di registrazione
@ -315,6 +326,8 @@ void TApp_openclose::chiudi_esercizio()
// Indici per i movimenti. Crea i movimenti di base (uno per ogni causale)
int indici[7], last = 6;
if (_what == definitiva)
{
for (int j=0; j < 7; j++)
{
_movimenti.add(new TMov_mag);
@ -324,10 +337,10 @@ void TApp_openclose::chiudi_esercizio()
indici[j] = j;
}
// Ciclo per i fottuti articoli
for (cur = 0L; cur.ok(); cur +=1)
{
if (_what == definitiva)
const long max_art = cur.items();
TProgind *prog = new TProgind(max_art, descr2, FALSE, TRUE, 10);
// Ciclo per i fottuti articoli
for (cur = 0L; cur.ok(); cur +=1)
{
// Scorre i saldi del vecchio esercizio per questo TArticolo_giacenza
// compilando un array di almeno 7 TMov_mag
@ -362,28 +375,14 @@ void TApp_openclose::chiudi_esercizio()
compila_movimento(currmov, art, rec, i);
}
}
prog->addstatus(1L);
}
else
{
// calcola il valore delle rimanenze finali dell'esercizio vecchio
// e riporta il record con l'anno esercizio nuovo.
((TArticolo_giacenza&)cur.curr()).riporta_saldi(_es_to_close, _es_to_open, _calctype, _catven, _codlis);
}
// Aggiornamento storico....
prog->addstatus(1L);
}
delete prog;
// Vi sarebbe l'azzeramento saldi dell'esercizio nuovo, (in caso di chiusura definitiva)
// ma e' gia' fatta alla fine perche' dopo la ricostruzione movimenti l'esercizio vecchio
// e' marcato come chiuso.
if (_what == definitiva)
{
// Scorre i movimenti generati ed effettua la scrittura
const int items = _movimenti.items();
prog = new TProgind(items, "Scrittura movimenti in corso...",FALSE,TRUE,10);
for (int i=0; err == NOERR && i<items;i++)
delete prog;
// **************
// Effettua la scrittura dei movimenti di apertura generati
const int max_mov = _movimenti.items();
prog = new TProgind(max_mov, "Scrittura movimenti di apertura in corso...",FALSE,TRUE,10);
for (int i=0; err == NOERR && i<max_mov;i++)
{
prog->addstatus(1L);
TMov_mag& mov = (TMov_mag&) _movimenti[i];
@ -394,6 +393,8 @@ void TApp_openclose::chiudi_esercizio()
}
delete prog;
// **************
// chiude l'esercizio
if (err == NOERR)
{
// Marca l'esercizio come chiuso
@ -414,10 +415,11 @@ void TApp_openclose::chiudi_esercizio()
_movimenti.destroy();
}
// La ricostruzione dei saldi e' comune in entrambi i casi (definitiva o provvisoria)
// A questo punto l'esercizio vecchio e' marcato come chiuso in base al tipo di chiusura
// (definitiva o provvisoria); La ricostruzione dei saldi e' comune in entrambi i casi:
// la rebuild_balances() deve sapere da sola se azzerare o meno le giacenze
// a seconda che l'esercizio precedente sia chiuso (AZZERA) o no (NON AZZERARE).
rebuild_balances(_es_to_open);
rebuild_balances(_es_to_open, _calctype, _catven, _codlis);
}
@ -450,6 +452,7 @@ void TApp_openclose::main_loop()
_calctype = (TTipo_valorizz) _msk->get_int(F_VALORIZZAZIONE);
_stotype = (TTipo_valorizz) _msk->get_int(F_STOMET);
_what = (action) _msk->get_int(F_WHAT); //Provvisoria o definitiva?
_valorizza_comp= _msk->get(F_VALCOMP)=="C"; //Valorizza i componenti o i finiti
_codlis = _msk->get(F_LIST);
_catven = _msk->get(F_CATVEN);
for (short xx = F_CAURIM; xx <= F_CAUORC; xx++) // legge le causali impostate
@ -458,6 +461,7 @@ void TApp_openclose::main_loop()
}
}
int mg1400(int argc, char* argv[])
{
TApp_openclose a;

View File

@ -14,4 +14,5 @@
#define F_CATVEN 114
#define F_LIST 115
#define F_WHAT 116
#define F_VALCOMP 117

View File

@ -1,6 +1,6 @@
#include "mg1400.h"
PAGE "Chiusura/Apertura esercizio" -1 -1 75 15
PAGE "Chiusura/Apertura esercizio" -1 -1 75 17
RADIOBUTTON F_WHAT 20
BEGIN
@ -31,18 +31,19 @@ BEGIN
FLAGS "DRZ"
END
LISTBOX F_VALORIZZAZIONE 20
LISTBOX F_VALORIZZAZIONE 30
BEGIN
PROMPT 2 5 "Valorizzazione "
ITEM "0|Al costo medio" MESSAGE HIDE,2@|ENABLE,3@
ITEM "1|All'ultimo costo" MESSAGE HIDE,2@|ENABLE,3@
ITEM "2|Alla media dei costi" MESSAGE HIDE,2@|ENABLE,3@
ITEM "3|Al prezzo di listino" MESSAGE SHOW,2@|ENABLE,3@
ITEM "4|Al costo standard" MESSAGE HIDE,2@|ENABLE,3@
ITEM "5|L.I.F.O. annuale" MESSAGE HIDE,2@|DISABLE,3@|COPY,F_STOMET
ITEM "6|F.I.F.O. annuale" MESSAGE HIDE,2@|DISABLE,3@|COPY,F_STOMET
ITEM "7|L.I.F.O. storico" MESSAGE HIDE,2@|DISABLE,3@|COPY,F_STOMET
ITEM "8|F.I.F.O. storico" MESSAGE HIDE,2@|DISABLE,3@|COPY,F_STOMET
ITEM "5|Al costo medio ponderato" MESSAGE HIDE,2@|ENABLE,3@
ITEM "4|Al costo medio acquisti" MESSAGE HIDE,2@|ENABLE,3@
ITEM "0|All'ultimo costo" MESSAGE HIDE,2@|ENABLE,3@
ITEM "1|Alla media dei costi" MESSAGE HIDE,2@|ENABLE,3@
ITEM "2|Al prezzo di listino" MESSAGE SHOW,2@|ENABLE,3@
ITEM "3|Al costo standard" MESSAGE HIDE,2@|ENABLE,3@
ITEM "6|L.I.F.O. annuale" MESSAGE HIDE,2@|DISABLE,3@|COPY,F_STOMET
ITEM "7|F.I.F.O. annuale" MESSAGE HIDE,2@|DISABLE,3@|COPY,F_STOMET
ITEM "8|L.I.F.O. storico" MESSAGE HIDE,2@|DISABLE,3@|COPY,F_STOMET
ITEM "9|F.I.F.O. storico" MESSAGE HIDE,2@|DISABLE,3@|COPY,F_STOMET
/*
TBI LIFO/FIFO ragionieristico
ITEM "9|L.I.F.O. ragionieristico" MESSAGE HIDE,2@|DISABLE,3@|COPY,F_STOMET
@ -50,7 +51,7 @@ BEGIN
*/
END
LISTBOX F_STOMET 20
LISTBOX F_STOMET 30
BEGIN
PROMPT 2 6 "Storico "
ITEM "5|L.I.F.O. annuale"
@ -118,6 +119,8 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_CAURIM CODTAB
CHECKTYPE REQUIRED
WARNING "La causale deve avere i segni: GIAC+ RIMIN+"
ADD RUN MG0 -0 %CAU
GROUP 4
END
@ -131,6 +134,8 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_CAUICL CODTAB
CHECKTYPE REQUIRED
WARNING "La causale deve avere i segni: GIAC+, INCL+"
ADD RUN MG0 -0 %CAU
GROUP 4
END
@ -144,6 +149,8 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_CAUACL CODTAB
CHECKTYPE REQUIRED
WARNING "La causale deve avere i segni: GIAC-, ACL+"
ADD RUN MG0 -0 %CAU
GROUP 4
END
@ -157,7 +164,9 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_CAUPRF CODTAB
CHECKTYPE REQUIRED
WARNING "La causale deve avere i segni: GIAC-, PRODF+"
GROUP 4
ADD RUN MG0 -0 %CAU
END
STRING F_CAUPRC 5
@ -170,7 +179,9 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_CAUPRC CODTAB
CHECKTYPE REQUIRED
WARNING "La causale deve avere i segni: GIAC+, PRODC+"
GROUP 4
ADD RUN MG0 -0 %CAU
END
STRING F_CAUORF 5
@ -183,7 +194,9 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_CAUORF CODTAB
CHECKTYPE REQUIRED
WARNING "La causale deve avere il segno: ORDF+"
GROUP 1 4
ADD RUN MG0 -0 %CAU
END
STRING F_CAUORC 5
@ -196,7 +209,17 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_CAUORC CODTAB
CHECKTYPE REQUIRED
WARNING "La causale deve avere il segno: ORDC+"
GROUP 1 4
ADD RUN MG0 -0 %CAU
END
LIST F_VALCOMP 40
BEGIN
PROMPT 3 13 "Valorizzo "
ITEM "C|i componenti impegnati in produzione"
ITEM "F|i finiti in fase di produzione"
GROUP 4
END
BUTTON DLG_OK 10 2

View File

@ -79,7 +79,6 @@ TStampadatist_mask::TStampadatist_mask():
set_handler(F_TOLIVELLOART, handle_liv);
set_handler(F_TOLIVELLOGIAC, handle_liv);
set_handler(F_ORDINE, handle_ragg);
set_handler(F_DETTAGLIODEP, handle_ragg);
set_handler(F_ORDINEART,handle_subord);
if (!artlev().enabled()) {
TMask_field &f1=field(F_RAGGCODICE);
@ -110,7 +109,7 @@ bool TStampadatist_mask::handle_subord(TMask_field &fld, KEY k)
{
fraggcod.enable();m.send_key(K_SPACE,F_RAGGCODICE);
} else {
if (!m.get_bool(F_TOTALIDEPOSITI) || !m.get_bool(F_DETTAGLIODEP))
if (!m.get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
@ -145,14 +144,14 @@ bool TStampadatist_mask::handle_liv(TMask_field &fld, KEY k)
TOperable_field &ftotmag=(TOperable_field &)fld.mask().field(F_TOTALIMAGAZZINI);
TOperable_field &fdettmag=(TOperable_field &)fld.mask().field(F_DETTAGLIOMAG);
TOperable_field &fdettgiac=(TOperable_field &)fld.mask().field(F_RAGGLIVGIAC);
if (fld.mask().get_int(F_TOLIVELLOART))
{
fdettgiac.reset();
fdettgiac.disable();
} else
fdettgiac.enable();
if (fld.mask().get(F_ORDINE)=="A")
{
if (fld.mask().get_int(F_TOLIVELLOART))
{
fdettgiac.reset();
fdettgiac.disable();
} else
fdettgiac.enable();
if (fld.mask().get_int(F_TOLIVELLOART) || fld.mask().get_int(F_TOLIVELLOGIAC))
{
// raggruppamenti prima del dettaglio magazzini
@ -180,7 +179,7 @@ bool TStampadatist_mask::handle_ragg(TMask_field &fld, KEY k)
if (fld.mask().get(F_ORDINE)=="M")
{
ftotmag.enable();
if (!fld.mask().get_bool(F_TOTALIDEPOSITI) || !fld.mask().get_bool(F_DETTAGLIODEP))
if (!fld.mask().get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
@ -306,8 +305,12 @@ void TStampa_datistorici::setprint_permagazzini()
TRUE,
_mask->get_bool(F_TOTALIDEPOSITI),
_mask->get_bool(F_DETTAGLIODEP));
_form->find_field('B',odd_page,FF_DIVDEPOSITI).enable(_mask->get_bool(F_TOTALIDEPOSITI));
if (!_mask->get_bool(F_TOTALIDEPOSITI))
{
((TSorted_cursor *)_cur)->change_order("ANNOES|CODMAG[1,3]|CODART|LIVELLO");
_form->find_field('B',odd_page,"GRUPPI_DEPOSITO").setcondition("CODMAG[1,3]",_strexpr);
}
TString16 ena=((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)!='S')? "1": "0");
_form->find_field('H',odd_page,FF_FLAGGIAC).set(ena );
_form->find_field('B',odd_page,FF_FLAGGIAC).set(ena);
@ -443,16 +446,21 @@ void TStampa_datistorici::setprint_perarticoli()
case 'M':
_cur->setkey(3);
darec.put("GRMERC",_mask->get(F_DACATMER));
darec.put("CODART",_mask->get(F_DAART));
arec.put("GRMERC",_mask->get(F_ACATMER));
arec.put("CODART",_mask->get(F_AART));
_form->find_field('B',odd_page,"H_CATMER").show();
_form->find_field('B',odd_page,"TOT_CATMER").show();
_form->setcatmer(TRUE);
if (!_mask->get(F_DAART).blank())
{
srangea << "da \"" << _mask->get(F_DAART) << "\" ";
cfilter << "(CODART[1," << _mask->get(F_DAART).len() << "]>=" <<'"' << _mask->get(F_AART)<< "\")&&" ;
}
if (!_mask->get(F_AART).blank())
{
srangea << "fino a \"" << _mask->get(F_AART) << "\"";
cfilter << "(CODART[1," << _mask->get(F_AART).len() << "]<=" <<'"' << _mask->get(F_AART)<< "\")&&" ;
}
if (!_mask->get(F_DACATMER).blank())
srangecm << "da \"" << _mask->get(F_DACATMER) << "\" ";
if (!_mask->get(F_ACATMER).blank())
@ -492,7 +500,11 @@ void TStampa_datistorici::setprint_perarticoli()
TSortedfile *mag;
mag= new TSortedfile(LF_MAG,NULL,sortexp,filter,1);
_cur->relation()->replace(mag,1,joinexp);
_cur->setfilter(cfilter);
if (cfilter.not_empty())
{
cfilter.cut(cfilter.len()-2);
_cur->setfilter(cfilter);
}
_cur->setregion(darec,arec);
}

View File

@ -52,26 +52,26 @@ END
LISTBOX F_ORDINE 10
BEGIN
PROMPT 2 2 "Ordinamento "
ITEM "A|articoli"
MESSAGE ENABLE,F_ORDINEART|HIDE,F_TOTALIDEPOSITI|HIDE,F_DETTAGLIODEP
MESSAGE SHOW,F_TOTALIMAGAZZINI|SHOW,F_DETTAGLIOMAG
ITEM "M|magazzini"
MESSAGE "C",F_ORDINEART|K_SPACE,F_ORDINEART|DISABLE,F_ORDINEART|SHOW,G_CODART@|HIDE,G_DESART@
MESSAGE SHOW,F_TOTALIDEPOSITI|SHOW,F_DETTAGLIODEP
MESSAGE HIDE,F_TOTALIMAGAZZINI|HIDE,F_DETTAGLIOMAG
ITEM "A|articoli"
MESSAGE ENABLE,F_ORDINEART|HIDE,F_TOTALIDEPOSITI|"X",F_DETTAGLIODEP
MESSAGE SHOW,F_TOTALIMAGAZZINI|SHOW,F_DETTAGLIOMAG
ITEM "M|magazzini"
MESSAGE "C",F_ORDINEART|K_SPACE,F_ORDINEART|DISABLE,F_ORDINEART|SHOW,G_CODART@|HIDE,G_DESART@
MESSAGE SHOW,F_TOTALIDEPOSITI|"X",F_DETTAGLIODEP
MESSAGE HIDE,F_TOTALIMAGAZZINI|HIDE,F_DETTAGLIOMAG
END
LISTBOX F_ORDINEART 20
BEGIN
FLAGS "G"
PROMPT 34 2 "sotto-ordinamento "
ITEM "C|codice"
MESSAGE HIDE,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@
ITEM "D|descrizione"
MESSAGE HIDE,G_CATMER@|DISABLE,G_CODART@|SHOW,G_DESART@
ITEM "M|gruppo merc./codice"
MESSAGE SHOW,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@
FLAGS "G"
PROMPT 34 2 "Sotto-ordinamento "
ITEM "C|codice"
MESSAGE HIDE,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@
ITEM "D|descrizione"
MESSAGE HIDE,G_CATMER@|DISABLE,G_CODART@|SHOW,G_DESART@
ITEM "M|gruppo merc./codice"
MESSAGE SHOW,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@
END
NUMBER F_ANNOES 4
@ -88,59 +88,63 @@ BEGIN
ADD NONE
END
LISTBOX F_FILTRO 20
LISTBOX F_FILTRO 30
BEGIN
FLAGS "G"
PROMPT 45 3 "Filtro "
ITEM "T|tutto"
ITEM "S|sotto scorta"
ITEM "P|positivi"
ITEM "N|negativi"
ITEM "0|non nulli"
FLAGS "G"
PROMPT 34 3 "Stampo "
ITEM "0|solo giacenze non nulle"
ITEM "P|solo giacenze positive"
ITEM "N|solo giacenze negativie"
ITEM "S|solo articoli sotto scorta"
ITEM "T|tutto"
END
STRING F_DAART 20
BEGIN
PROMPT 2 5 "Dall'articolo "
FLAGS "U"
USE LF_ANAMAG
INPUT CODART F_DAART
DISPLAY "Codice" CODART
DISPLAY "Descr@50" DESCR
OUTPUT F_DAART CODART
GROUP G_CODART
FLAGS "U"
USE LF_ANAMAG
INPUT CODART F_DAART
DISPLAY "Codice@20" CODART
DISPLAY "Descr@50" DESCR
OUTPUT F_DAART CODART
OUTPUT F_DADES DESCR
GROUP G_CODART
END
STRING F_AART 20
BEGIN
PROMPT 2 6 " all'articolo "
FLAGS "U"
COPY USE F_DAART
INPUT CODART F_AART
COPY DISPLAY F_DAART
OUTPUT F_AART CODART
GROUP G_CODART
FLAGS "U"
COPY USE F_DAART
INPUT CODART F_AART
COPY DISPLAY F_DAART
OUTPUT F_AART CODART
OUTPUT F_ADES DESCR
GROUP G_CODART
END
STRING F_DADES 50
BEGIN
PROMPT 2 5 "Dall'articolo "
FLAGS "U"
USE LF_ANAMAG KEY 2
INPUT DESCR F_DADES
DISPLAY "Descr@50" DESCR
DISPLAY "Codice" CODART
OUTPUT F_DADES DESCR
GROUP G_DESART
FLAGS "U"
USE LF_ANAMAG KEY 2
INPUT DESCR F_DADES
DISPLAY "Descr@50" DESCR
DISPLAY "Codice@20" CODART
OUTPUT F_DAART CODART
OUTPUT F_DADES DESCR
GROUP G_DESART
END
STRING F_ADES 50
BEGIN
PROMPT 2 6 " all'articolo "
FLAGS "U"
COPY USE F_DADES
INPUT DESCR F_ADES
COPY DISPLAY F_DADES
OUTPUT F_ADES DESCR
GROUP G_DESART
FLAGS "U"
COPY USE F_DADES
INPUT DESCR F_ADES
COPY DISPLAY F_DADES
OUTPUT F_ADES DESCR
OUTPUT F_AART CODART
GROUP G_DESART
END
@ -192,16 +196,17 @@ END
BOOL F_TOTALIDEPOSITI
BEGIN
PROMPT 2 13 "Stampo i totali depositi"
MESSAGE TRUE ENABLE,F_DETTAGLIODEP
MESSAGE FALSE "",F_DETTAGLIODEP|DISABLE,F_DETTAGLIODEP
PROMPT 2 13 "Suddivido per depositi"
// MESSAGE TRUE ENABLE,F_DETTAGLIODEP
// MESSAGE FALSE "",F_DETTAGLIODEP|DISABLE,F_DETTAGLIODEP
END
BOOL F_DETTAGLIODEP
BEGIN
PROMPT 42 13 "Stampa il dettaglio depositi"
MESSAGE TRUE ENABLE,F_RAGGLIVGIAC|ENABLE,F_RAGGCODICE
MESSAGE FALSE CLEAR,F_RAGGLIVGIAC|K_SPACE,F_RAGGLIVGIAC|CLEAR,F_RAGGCODICE|K_SPACE,F_RAGGCODICE
FLAGS "HD"
PROMPT 42 13 "Dettaglio i depositi"
MESSAGE TRUE ENABLE,F_RAGGLIVGIAC|ENABLE,F_RAGGCODICE
MESSAGE FALSE CLEAR,F_RAGGLIVGIAC|K_SPACE,F_RAGGLIVGIAC|CLEAR,F_RAGGCODICE|K_SPACE,F_RAGGCODICE
FLAGS "D"
END

View File

@ -141,7 +141,7 @@ END
STRINGA 7 40
BEGIN
KEY "H1"
PROMPT 31 6 "Descrizione"
PROMPT 23 6 "Descrizione"
END
STRINGA 7 40
BEGIN
@ -151,7 +151,7 @@ END
STRINGA 8 12
BEGIN
KEY "H1"
PROMPT 68 6 "Giac."
PROMPT 64 6 "Giac."
GROUP FG_RIGAPREZZI
END
STRINGA 8 12
@ -294,7 +294,7 @@ SECTION BODY ODD 0 COLUMNWISE
STRINGA 11 20 1
BEGIN
KEY "Codice CATMER"
PROMPT 2 1 "Cat. merc."
PROMPT 2 1 "Gruppo merc. "
MESSAGE _USER,CODCATMER|COPY,1551
END
STRINGA 12 70 1
@ -329,7 +329,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,1|COPY,1451
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -352,7 +352,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,2|COPY,1351
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -376,7 +376,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,3|COPY,1251
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -399,7 +399,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,4|COPY,1151
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -422,7 +422,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,5|COPY,1051
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -445,7 +445,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,6|COPY,951
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -468,7 +468,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,7|COPY,851
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -492,7 +492,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,8|COPY,751
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -516,7 +516,7 @@ SECTION BODY ODD 0 COLUMNWISE
FIELD CODART
MESSAGE COPY,651
END
STRINGA 21 30 2
STRINGA 21 70
BEGIN
KEY "DESCR.articolo"
PROMPT 3 1 ""
@ -913,7 +913,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "Livello giac4"
PROMPT 2 1 ""
END
STRINGA 250 30 2
STRINGA 250 30
BEGIN
PROMPT 3 1 ""
END
@ -1015,7 +1015,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY ""
PROMPT 2 1 ""
END
STRINGA 350 30 2
STRINGA 350 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1118,7 +1118,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY ""
PROMPT 2 1 ""
END
STRINGA 450 30 2
STRINGA 450 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1219,7 +1219,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY ""
PROMPT 2 1 ""
END
STRINGA 550 30 2
STRINGA 550 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1322,7 +1322,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY ""
PROMPT 2 1 ""
END
STRINGA 650 30 2
STRINGA 650 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -2241,13 +2241,13 @@ SECTION BODY ODD 0 COLUMNWISE
END // GRUPPI_CATMER
SECTION TOT_CATMER 1 1 1 FOOTER
STRINGA 1551 20 1
SECTION TOT_CATMER 1 1 2 GROUP
STRINGA 1551 20
BEGIN
KEY ""
PROMPT 2 1 ""
PROMPT 2 1 "Totale gr.merc."
END
STRINGA 1550 30 1
STRINGA 1550 30
BEGIN
KEY ""
PROMPT 3 1 ""

View File

@ -151,7 +151,7 @@ END
STRINGA 8 12
BEGIN
KEY "H1"
PROMPT 68 6 "Giac."
PROMPT 64 6 "Giac."
GROUP FG_RIGAPREZZI
END
STRINGA 8 12
@ -294,7 +294,7 @@ SECTION BODY ODD 0 COLUMNWISE
STRINGA 11 20 1
BEGIN
KEY "Codice CATMER"
PROMPT 2 1 "Cat. merc."
PROMPT 2 1 "Gruppo merc. "
MESSAGE _USER,CODCATMER|COPY,1551
END
STRINGA 12 70 1
@ -329,7 +329,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,1|COPY,1451
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -352,7 +352,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,2|COPY,1351
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -376,7 +376,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,3|COPY,1251
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -399,7 +399,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,4|COPY,1151
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -422,7 +422,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,5|COPY,1051
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -445,7 +445,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,6|COPY,951
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -468,7 +468,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,7|COPY,851
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -492,7 +492,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,8|COPY,751
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -516,7 +516,7 @@ SECTION BODY ODD 0 COLUMNWISE
FIELD CODART
MESSAGE COPY,651
END
STRINGA 21 30 2
STRINGA 21 70
BEGIN
KEY "DESCR.articolo"
PROMPT 3 1 ""
@ -913,7 +913,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "Livello giac4"
PROMPT 2 1 ""
END
STRINGA 250 30 2
STRINGA 250 30
BEGIN
PROMPT 3 1 ""
END
@ -1015,7 +1015,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY ""
PROMPT 2 1 ""
END
STRINGA 350 30 2
STRINGA 350 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1118,7 +1118,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY ""
PROMPT 2 1 ""
END
STRINGA 450 30 2
STRINGA 450 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1219,7 +1219,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY ""
PROMPT 2 1 ""
END
STRINGA 550 30 2
STRINGA 550 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1322,7 +1322,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY ""
PROMPT 2 1 ""
END
STRINGA 650 30 2
STRINGA 650 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -2241,13 +2241,13 @@ SECTION BODY ODD 0 COLUMNWISE
END // GRUPPI_CATMER
SECTION TOT_CATMER 1 1 1 group
STRINGA 1551 20 1
SECTION TOT_CATMER 1 1 2 GROUP
STRINGA 1551 20
BEGIN
KEY ""
PROMPT 2 1 ""
PROMPT 2 1 "Totale gr.merc."
END
STRINGA 1550 30 1
STRINGA 1550 30
BEGIN
KEY ""
PROMPT 3 1 ""

View File

@ -1,15 +1,15 @@
#include "mg3frm.h"
USE 109 KEY 2
JOIN 47 TO 109 INTO CODART==CODART
JOIN MAG TO 109 ALIAS 500 INTO CODTAB==CODMAG[1,3]
JOIN MAG TO 109 ALIAS 501 INTO CODTAB==CODMAG
JOIN 49 TO 47 INTO CODART==CODART
USE LF_MAG KEY 2 BY ANNOES CODMAG CODART LIVELLO
JOIN LF_ANAMAG TO LF_MAG INTO CODART==CODART
JOIN MAG TO LF_MAG ALIAS 500 INTO CODTAB==CODMAG[1,3]
JOIN MAG TO LF_MAG ALIAS 501 INTO CODTAB==CODMAG
JOIN LF_UMART TO LF_ANAMAG INTO CODART==CODART
END
DESCRIPTION
BEGIN
47->* "Anagrafica articoli"
109->* "Archivio Giacenze"
LF_MAG->* "Archivio Giacenze"
MAG->* "Tabella magazzini"
49->* "Unità di misura articoli"
END
@ -298,7 +298,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_MAGAZZINO 1 0 0 FILE 109 GROUP CODMAG[1,3]
SECTION GRUPPI_MAGAZZINO 1 0 0 FILE LF_MAG GROUP CODMAG[1,3]
LIST FF_DIVDEPOSITI
BEGIN
FLAGS "H"
@ -321,7 +321,7 @@ SECTION BODY ODD 0 COLUMNWISE
STRINGA 60 20 1
BEGIN
KEY "CODDEP"
PROMPT 2 1 "Deposito "
PROMPT 2 1 "Deposito "
FIELD 501@->CODTAB[4,5]
MESSAGE COPY,51
END
@ -334,7 +334,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_DEPOSITO 1 0 0 FILE 109 GROUP CODMAG[1,5]
SECTION GRUPPI_DEPOSITO 1 0 0 FILE LF_MAG GROUP CODMAG[1,5]
STRINGA 60 40 1
BEGIN
FLAGS "H"
@ -349,7 +349,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,1|COPY,1451
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO1"
PROMPT 3 1 ""
@ -357,7 +357,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_CODART1 1 0 0 FILE 109 GROUP CODART
SECTION GRUPPI_CODART1 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -372,7 +372,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,2|COPY,1351
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -380,7 +380,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_CODART2 1 0 0 FILE 109 GROUP CODART
SECTION GRUPPI_CODART2 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -395,7 +395,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,3|COPY,1251
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -403,7 +403,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_CODART3 1 0 0 FILE 109 GROUP CODART
SECTION GRUPPI_CODART3 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -418,7 +418,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,4|COPY,1151
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -426,7 +426,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_CODART4 1 0 0 FILE 109 GROUP CODART
SECTION GRUPPI_CODART4 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -441,7 +441,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,5|COPY,1051
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -449,7 +449,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_CODART5 1 0 0 FILE 109 GROUP CODART
SECTION GRUPPI_CODART5 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -464,7 +464,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,6|COPY,951
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -472,7 +472,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_CODART6 1 0 0 FILE 109 GROUP CODART
SECTION GRUPPI_CODART6 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -487,7 +487,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,7|COPY,851
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -495,7 +495,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_CODART7 1 0 0 FILE 109 GROUP CODART
SECTION GRUPPI_CODART7 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -511,7 +511,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,8|COPY,751
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -519,7 +519,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_CODART8 1 0 0 FILE 109 GROUP CODART
SECTION GRUPPI_CODART8 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -535,11 +535,11 @@ SECTION BODY ODD 0 COLUMNWISE
FIELD CODART
MESSAGE COPY,651
END
STRINGA 21 30 2
STRINGA 21 70
BEGIN
KEY "DESCR.articolo"
PROMPT 3 1 ""
FIELD 47->DESCR
FIELD LF_ANAMAG->DESCR
MESSAGE COPY,650
END
NUMERO 22 12
@ -559,7 +559,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION ARTICOLO 1 0 0 FILE 109 GROUP CODART
SECTION ARTICOLO 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -582,7 +582,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_LIVGIAC1 1 0 0 FILE 109 GROUP LIVELLO
SECTION GRUPPI_LIVGIAC1 1 0 0 FILE LF_MAG GROUP LIVELLO
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -605,7 +605,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_LIVGIAC2 1 0 0 FILE 109 GROUP LIVELLO
SECTION GRUPPI_LIVGIAC2 1 0 0 FILE LF_MAG GROUP LIVELLO
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -629,7 +629,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_LIVGIAC3 1 0 0 FILE 109 GROUP LIVELLO
SECTION GRUPPI_LIVGIAC3 1 0 0 FILE LF_MAG GROUP LIVELLO
STRINGA 60 20 1
BEGIN
FLAGS "H"
@ -640,11 +640,12 @@ SECTION BODY ODD 0 COLUMNWISE
SECTION H_GLIVGIAC4 1 1 1 GROUP
END // GGIAC4
SECTION GRUPPI_LIVGIAC4 1 0 0 FILE 109 GROUP LIVELLO
SECTION GRUPPI_LIVGIAC4 1 0 0 STR_EXPR LIVELLO
// SEZIONE PRESENTE SOLO PER UNIFORMIT… CON LA STAMPA PER ARTICOLI
END // GGIAC4
SECTION TOT_GLIVGIAC4 1 1 1 GROUP
STRINGA 250 35 2
BEGIN
STRINGA 250 30
BEGIN
PROMPT 3 1 ""
MESSAGE _USER,GRUPPOGIAC,4
END
@ -658,26 +659,26 @@ SECTION BODY ODD 0 COLUMNWISE
BEGIN
KEY "UM"
PROMPT 5 1 ""
FIELD 49->UM
MESSAGE COPY,353
END
NUMERO 241 12
BEGIN
KEY "ACQ"
FIELD LF_UMART->UM
MESSAGE COPY,353
END
NUMERO 241 12
BEGIN
KEY "ACQ"
PROMPT 6 1 ""
PICTURE "########,@#"
MESSAGE ADD,341
FIELD 109->ACQ
PICTURE "########,@#"
MESSAGE ADD,341
FIELD LF_MAG->ACQ
GROUP FG_RIGAVALORI
END
NUMERO 242 12
BEGIN
KEY "VALACQ"
PROMPT 7 1 ""
PICTURE "###.###.##@"
MESSAGE ADD,342
FIELD 109->VALACQ
PICTURE "###.###.##@"
MESSAGE ADD,342
FIELD LF_MAG->VALACQ
GROUP FG_VALORI FG_RIGAVALORI
END
NUMERO 282 12
@ -693,9 +694,9 @@ SECTION BODY ODD 0 COLUMNWISE
BEGIN
KEY "ven"
PROMPT 8 1 ""
PICTURE "########,@#"
MESSAGE ADD,343
FIELD 109->VEN
PICTURE "########,@#"
MESSAGE ADD,343
FIELD LF_MAG->VEN
GROUP FG_RIGAVALORI
END
NUMERO 244 12
@ -705,11 +706,11 @@ SECTION BODY ODD 0 COLUMNWISE
PICTURE "###.###.##@"
MESSAGE ADD,344
GROUP FG_VALORI FG_RIGAVALORI
FIELD 109->VALVEN
END
NUMERO 284 12
BEGIN
KEY "VALven"
FIELD LF_MAG->VALVEN
END
NUMERO 284 12
BEGIN
KEY "VALven"
PROMPT 9 1 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#244/#243
@ -721,17 +722,17 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "rim"
PROMPT 10 1 ""
PICTURE "########,@#"
MESSAGE ADD,345
FIELD 109->RIM
MESSAGE ADD,345
FIELD LF_MAG->RIM
GROUP FG_RIGAVALORI
END
NUMERO 246 12
BEGIN
KEY "VALrim"
PROMPT 11 1 ""
PICTURE "###.###.##@"
MESSAGE ADD,346
FIELD 109->VALRIM
PICTURE "###.###.##@"
MESSAGE ADD,346
FIELD LF_MAG->VALRIM
GROUP FG_VALORI FG_RIGAVALORI
END
NUMERO 286 12
@ -748,8 +749,8 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "giac"
PROMPT 12 1 ""
PICTURE "########,@#"
FIELD 109->GIAC
MESSAGE ADD,347
FIELD LF_MAG->GIAC
MESSAGE ADD,347
GROUP FG_RIGAVALORI
END
NUMERO 248 12
@ -757,23 +758,23 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "scorta-giac"
PROMPT 12 1 ""
PICTURE "#######@,@#"
MESSAGE _NUMEXPR,109->SCORTAMIN-109->GIAC|ADD,347
MESSAGE _NUMEXPR,LF_MAG->SCORTAMIN-LF_MAG->GIAC|ADD,347
GROUP FG_RIGAVALORI
END
/*NUMERO 249 12
BEGIN
KEY "giac"
PROMPT 6 1 ""
PICTURE "########,@#"
FIELD 109->GIAC
MESSAGE ADD,341
GROUP 2 FG_RIGAPREZZI
PICTURE "########,@#"
FIELD LF_MAG->GIAC
MESSAGE ADD,341
GROUP 2 FG_RIGAPREZZI
END*/
END // tot ggiac4
END // GGIAC3
SECTION TOT_GLIVGIAC3 1 1 1 GROUP
STRINGA 350 35 2
STRINGA 350 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -876,7 +877,7 @@ SECTION BODY ODD 0 COLUMNWISE
END // GGIAC2
SECTION TOT_GLIVGIAC2 1 1 1 GROUP
STRINGA 450 35 2
STRINGA 450 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -978,7 +979,7 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot ggiac2
END // GGIAC1
SECTION TOT_GLIVGIAC1 1 1 1 GROUP
STRINGA 550 35 2
STRINGA 550 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1081,7 +1082,7 @@ SECTION BODY ODD 0 COLUMNWISE
END // FILE GIACENZE
SECTION TOT_ARTICOLO 1 1 1 GROUP
STRINGA 650 30 2
STRINGA 650 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -2133,7 +2134,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 6 1 "-------------------------------------------------------------------------------------------------"
END
END
STRINGA 150 30 2
STRINGA 150 30
BEGIN
KEY "Magazzino"
PROMPT 3 1 ""

View File

@ -52,7 +52,7 @@ bool TStampadisp_mask::handle_subord(TMask_field &fld, KEY k)
if (fld.mask().get(F_ORDINE)=="A")
fraggcod.enable();
else {
if (!fld.mask().get_bool(F_TOTALIDEPOSITI) || !fld.mask().get_bool(F_DETTAGLIODEP))
if (!fld.mask().get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
@ -108,7 +108,7 @@ bool TStampadisp_mask::handle_ragg(TMask_field &fld, KEY k)
if (m.get(F_ORDINE)=="M")
{
ftotmag.enable();
if (!m.get_bool(F_TOTALIDEPOSITI) || !m.get_bool(F_DETTAGLIODEP))
if (!m.get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
@ -177,16 +177,32 @@ void TStampa_disp::setprint_permagazzini()
TRectype darec(LF_MAG),arec(LF_MAG);
TString cfilter,sortexp,joinexp;
_form = new TForm_stampemg("mg3200b", "");
_cur = _form->cursor();
_cur = _form->cursor();
TSorted_cursor & cur= (TSorted_cursor & )*_cur;
// ********************
// range di stampa articoli
// setta il filtro sul cursore
TForm_item & rangea=_form->find_field('H',odd_page,FF_RANGEARTIC);
TString srangea;
if (*_mask->get(F_DAART))
{
cfilter << "(CODART[1," << _mask->get(F_DAART).len() << "]>=" <<'"' << _mask->get(F_DAART)<< "\")&&" ;
srangea << "da \"" << _mask->get(F_DAART) << "\" ";
}
if (*_mask->get(F_AART))
{
cfilter << "(CODART[1," << _mask->get(F_AART).len() << "]<=" <<'"' << _mask->get(F_AART)<< "\")&&" ;
srangea << "fino a \"" << _mask->get(F_AART) << "\"";
}
if (cfilter.not_empty())
cfilter.cut(cfilter.len()-2);
// abilita/disabilita le sezioni dei totali
rangea.set(srangea.empty() ? "Tutti gli articoli" : format("Articoli %s",(const char *)srangea));
// ***************
// gestione dei livelli di raggruppamento e di detaglio
// (abilita/disabilita le sezioni dei totali/header)
_form->setdett_permag(
_mask->get_bool(F_RAGGCODICE),
_mask->get_int(F_FROMLIVELLOART),
@ -198,12 +214,28 @@ void TStampa_disp::setprint_permagazzini()
_mask->get_bool(F_TOTALIDEPOSITI),
_mask->get_bool(F_DETTAGLIODEP));
if (!_mask->get_bool(F_TOTALIDEPOSITI))
{
cur.change_order("ANNOES|CODMAG[1,3]|CODART|LIVELLO");
_form->find_field('B',odd_page,"GRUPPI_DEPOSITO").setcondition("CODMAG[1,3]",_strexpr);
}
// ********************
// range di stampa magazzini
TForm_item & rangem=_form->find_field('H',odd_page,FF_RANGEMAGAZ);
TString srangem;
darec.put("ANNOES",_mask->get(F_ANNOES));
darec.put("CODMAG",_mask->get(F_DAMAG));
arec.put("ANNOES",_mask->get(F_ANNOES));
darec.put("CODMAG",_mask->get(F_DAMAG));
arec.put("CODMAG",_mask->get(F_AMAG));
_cur->setfilter(cfilter);
_cur->setregion(darec,arec);
if (*_mask->get(F_DAMAG))
srangem << "da \"" << _mask->get(F_DAMAG) << "\" ";
if (*_mask->get(F_AMAG))
srangem << "fino a \"" << _mask->get(F_AMAG) << "\" ";
rangem.set(srangem.empty() ? "Tutti i magazzini" : format("Magazzini %s",(const char *)srangem));
cur.setfilter(cfilter);
cur.setregion(darec,arec);
}
// ORDINAMENTO
@ -279,16 +311,20 @@ void TStampa_disp::setprint_perarticoli()
case 'M':
_cur->setkey(3);
darec.put("GRMERC",_mask->get(F_DACATMER));
darec.put("CODART",_mask->get(F_DAART));
arec.put("GRMERC",_mask->get(F_ACATMER));
arec.put("CODART",_mask->get(F_AART));
_form->find_field('B',odd_page,"H_CATMER").show();
_form->find_field('B',odd_page,"TOT_CATMER").show();
_form->setcatmer(TRUE);
if (!_mask->get(F_DAART).blank())
{
srangea << "da \"" << _mask->get(F_DAART) << "\" ";
cfilter << "(CODART[1," << _mask->get(F_DAART).len() << "]>=" <<'"' << _mask->get(F_AART)<< "\")&&" ;
}
if (!_mask->get(F_AART).blank())
{
srangea << "fino a \"" << _mask->get(F_AART) << "\"";
cfilter << "(CODART[1," << _mask->get(F_AART).len() << "]<=" <<'"' << _mask->get(F_AART)<< "\")&&" ;
}
if (!_mask->get(F_DACATMER).blank())
srangecm << "da \"" << _mask->get(F_DACATMER) << "\" ";
if (!_mask->get(F_ACATMER).blank())
@ -314,7 +350,11 @@ void TStampa_disp::setprint_perarticoli()
TSortedfile *mag;
mag= new TSortedfile(LF_MAG,NULL,sortexp,filter,1);
_cur->relation()->replace(mag,1,joinexp);
_cur->setfilter(cfilter);
if (cfilter.not_empty())
{
cfilter.cut(cfilter.len()-2);
_cur->setfilter(cfilter);
}
_cur->setregion(darec,arec);
}

View File

@ -19,11 +19,11 @@ END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 8
CARATTERE "X"
INIZIALE 5 2
FINALE 133
// FONT "Courier New"
// SIZE 8
// CARATTERE "X"
// INIZIALE 5 2
// FINALE 133
END
SECTION HEADER ODD 5

View File

@ -5,11 +5,11 @@ LISTBOX F_ORDINE 10
BEGIN
PROMPT 2 1 "Ordinamento "
ITEM "A|articoli"
MESSAGE ENABLE,F_ORDINEART|HIDE,F_TOTALIDEPOSITI|HIDE,F_DETTAGLIODEP
MESSAGE ENABLE,F_ORDINEART|HIDE,F_TOTALIDEPOSITI|"X",F_DETTAGLIODEP
MESSAGE SHOW,F_TOTALIMAGAZZINI|SHOW,F_DETTAGLIOMAG
ITEM "M|magazzini"
MESSAGE "C",F_ORDINEART|K_SPACE,F_ORDINEART|DISABLE,F_ORDINEART|SHOW,G_CODART@|HIDE,G_DESART@
MESSAGE SHOW,F_TOTALIDEPOSITI|SHOW,F_DETTAGLIODEP
MESSAGE SHOW,F_TOTALIDEPOSITI|"X",F_DETTAGLIODEP
MESSAGE HIDE,F_TOTALIMAGAZZINI|HIDE,F_DETTAGLIOMAG
END
@ -49,6 +49,7 @@ BEGIN
DISPLAY "Codice" CODART
DISPLAY "Descr@50" DESCR
OUTPUT F_DAART CODART
OUTPUT F_DADES DESCR
GROUP G_CODART
END
@ -60,6 +61,7 @@ BEGIN
INPUT CODART F_AART
COPY DISPLAY F_DAART
OUTPUT F_AART CODART
OUTPUT F_ADES DESCR
GROUP G_CODART
END
@ -72,6 +74,7 @@ BEGIN
DISPLAY "Descr@50" DESCR
DISPLAY "Codice" CODART
OUTPUT F_DADES DESCR
OUTPUT F_DAART CODART
GROUP G_DESART
END
@ -83,6 +86,7 @@ BEGIN
INPUT DESCR F_ADES
COPY DISPLAY F_DADES
OUTPUT F_ADES DESCR
OUTPUT F_AART CODART
GROUP G_DESART
END
@ -133,15 +137,16 @@ END
BOOL F_TOTALIDEPOSITI
BEGIN
PROMPT 2 12 "Stampo i totali depositi"
MESSAGE TRUE ENABLE,F_DETTAGLIODEP
MESSAGE FALSE CLEAR,F_DETTAGLIODEP|K_SPACE,F_DETTAGLIODEP
PROMPT 2 12 "Suddivido per depositi"
// MESSAGE TRUE ENABLE,F_DETTAGLIODEP
// MESSAGE FALSE CLEAR,F_DETTAGLIODEP|K_SPACE,F_DETTAGLIODEP
END
BOOL F_DETTAGLIODEP
BEGIN
PROMPT 42 12 "Stampa il dettaglio depositi"
MESSAGE TRUE ENABLE,F_RAGGLIVGIAC|ENABLE,F_RAGGCODICE
FLAGS "DH"
PROMPT 42 12 "Dettaglio i depositi"
MESSAGE TRUE ENABLE,F_RAGGLIVGIAC|ENABLE,F_RAGGCODICE
MESSAGE FALSE CLEAR,F_RAGGLIVGIAC|K_SPACE,F_RAGGLIVGIAC|CLEAR,F_RAGGCODICE|K_SPACE,F_RAGGCODICE
END

View File

@ -57,19 +57,19 @@ BEGIN
PROMPT 55 2 "Stampa disponibilita'"
END
STRINGA FF_RANGEARTIC 40
STRINGA FF_RANGEARTIC 120
BEGIN
KEY "RANGE"
PROMPT 1 3 ""
END
STRINGA FF_RANGEMAGAZ 40
STRINGA FF_RANGEMAGAZ 70
BEGIN
KEY "RANGE"
PROMPT 1 4 ""
END
STRINGA FF_RANGECATMER 40
STRINGA FF_RANGECATMER 70
BEGIN
KEY "RANGE"
PROMPT 55 4 ""
@ -148,14 +148,14 @@ END
SECTION BODY ODD 0 COLUMNWISE
SECTION H_CATMER 1 1 2 HEADER
SECTION H_CATMER 1 2 1 GROUP
STRINGA 11 20 1
BEGIN
KEY "CATMER"
PROMPT 2 1 ""
PROMPT 2 1 "Gruppo merc. "
MESSAGE _USER,CODCATMER|COPY,1551
END
STRINGA 12 30 2
STRINGA 12 70
BEGIN
KEY "CODICE CATMER"
PROMPT 3 1 ""
@ -187,7 +187,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,1|COPY,1451
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -210,7 +210,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,2|COPY,1351
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -233,7 +233,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,3|COPY,1251
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -256,7 +256,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,4|COPY,1151
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -279,7 +279,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,5|COPY,1051
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -302,7 +302,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,6|COPY,951
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -325,7 +325,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,7|COPY,851
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -349,7 +349,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,8|COPY,751
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -373,7 +373,7 @@ SECTION BODY ODD 0 COLUMNWISE
FIELD CODART
MESSAGE COPY,651
END
STRINGA 21 30 2
STRINGA 21 70
BEGIN
KEY "DESCR.articolo"
PROMPT 3 1 ""
@ -477,15 +477,23 @@ SECTION BODY ODD 0 COLUMNWISE
END
SECTION GRUPPI_LIVGIAC4 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20
STRINGA 60 70
BEGIN
FLAGS "H"
KEY "MAGAZZ"
PROMPT 3 1 ""
FIELD 500@->s0
MESSAGE RESET,1@|COPY,150
END
STRINGA 60 30
BEGIN
FLAGS "H"
KEY "MAGAZZ"
PROMPT 2 1 ""
FIELD 500@->s0
MESSAGE RESET,1@|COPY,150
FIELD 500@->CODTAB[1,3]
MESSAGE COPY,151
END
SECTION H_MAGAZZINO 1 1 1 HEADER
SECTION H_MAGAZZINO 1 0 0 GROUP
SECTION H_MAGAZZINO_NODEP 1 0 0 STR_EXPR 500@->B0!="X" // DIVISIONE IN DEPOSITI
STRINGA 60 20
BEGIN
@ -498,21 +506,28 @@ SECTION BODY ODD 0 COLUMNWISE
STRINGA 60 20
BEGIN
KEY "codice magazzino"
FIELD 500@->s0
PROMPT 2 1 " Magazzino "
FIELD 500@->CODTAB[1,3]
PROMPT 2 1 " Magazzino "
MESSAGE SHOW,TOT_DEPOSITO
END
STRINGA 60 70
BEGIN
KEY "magazzino"
FIELD 500@->s0
PROMPT 3 1 ""
END
END
END
SECTION GRUPPI_MAGAZZINO 1 0 0 FILE LF_MAG GROUP CODMAG[1,3]
SECTION H_DEPOSITO 1 0 0 HEADER
SECTION H_DEPOSITO 1 0 0 GROUP
END
SECTION TOT_DEPOSITO 1 1 1 GROUP
STRINGA 51 20
BEGIN
KEY "CODICE"
PROMPT 2 1 " Deposito"
PROMPT 2 1 " Deposito "
FIELD 501@->CODTAB[4,5]
END
STRINGA 52 30
BEGIN
@ -607,7 +622,7 @@ SECTION BODY ODD 0 COLUMNWISE
STRINGA 151 20
BEGIN
KEY "Magazzino"
PROMPT 2 1 " Totale mag."
PROMPT 2 1 " Totale mag. "
END
STRINGA 153 3
BEGIN
@ -683,7 +698,7 @@ SECTION BODY ODD 0 COLUMNWISE
END // GGIAC4
SECTION TOT_GLIVGIAC4 1 1 1 GROUP
STRINGA 250 30 2
STRINGA 250 30
BEGIN
PROMPT 3 1 ""
END
@ -766,7 +781,7 @@ SECTION BODY ODD 0 COLUMNWISE
END // GGIAC3
SECTION TOT_GLIVGIAC3 1 1 1 GROUP
STRINGA 350 30 2
STRINGA 350 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -850,7 +865,7 @@ SECTION BODY ODD 0 COLUMNWISE
END // GGIAC2
SECTION TOT_GLIVGIAC2 1 1 1 GROUP
STRINGA 450 30 2
STRINGA 450 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -933,7 +948,7 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot ggiac2
END // GGIAC1
SECTION TOT_GLIVGIAC1 1 1 1 GROUP
STRINGA 550 30 2
STRINGA 550 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1016,8 +1031,8 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot ggiac1
END // FILE GIACENZE
SECTION TOT_ARTICOLO 1 1 1 FOOTER
STRINGA 650 30 2
SECTION TOT_ARTICOLO 1 1 1 GROUP // FOOTER
STRINGA 650 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1102,8 +1117,8 @@ SECTION BODY ODD 0 COLUMNWISE
END // TOT ART
END // GART8
SECTION TOT_GART8 1 1 1 FOOTER
STRINGA 750 30 2
SECTION TOT_GART8 1 1 1 GROUP // FOOTER
STRINGA 750 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1186,8 +1201,8 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot gart8
END // GART7
SECTION TOT_GART7 1 1 1 FOOTER
STRINGA 850 30 2
SECTION TOT_GART7 1 1 1 GROUP // FOOTER
STRINGA 850 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1270,8 +1285,8 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot gart7
END // GART6
SECTION TOT_GART6 1 1 1 FOOTER
STRINGA 950 30 2
SECTION TOT_GART6 1 1 1 GROUP // FOOTER
STRINGA 950 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1354,8 +1369,8 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot gart6
END // GART5
SECTION TOT_GART5 1 1 1 FOOTER
STRINGA 1050 30 2
SECTION TOT_GART5 1 1 1 GROUP // FOOTER
STRINGA 1050 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1438,8 +1453,8 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot gart5
END // GART4
SECTION TOT_GART4 1 1 1 FOOTER
STRINGA 1150 30 2
SECTION TOT_GART4 1 1 1 GROUP // FOOTER
STRINGA 1150 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1522,8 +1537,8 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot gart4
END // GART3
SECTION TOT_GART3 1 1 1 FOOTER
STRINGA 1250 30 2
SECTION TOT_GART3 1 1 1 GROUP // FOOTER
STRINGA 1250 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1606,8 +1621,8 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot gart3
END // GART2
SECTION TOT_GART2 1 1 1 FOOTER
STRINGA 1350 30 2
SECTION TOT_GART2 1 1 1 GROUP // FOOTER
STRINGA 1350 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1690,8 +1705,8 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot gart2
END // GART1
SECTION TOT_GART1 1 1 1 FOOTER
STRINGA 1450 30 2
SECTION TOT_GART1 1 1 1 GROUP // FOOTER
STRINGA 1450 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1774,16 +1789,16 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot gart1
END // GRUPPI_CATMER
SECTION TOT_CATMER 1 1 1 FOOTER
STRINGA 1550 30 2
BEGIN
KEY ""
PROMPT 3 1 ""
END
SECTION TOT_CATMER 1 1 2 GROUP // FOOTER
STRINGA 1551 20
BEGIN
KEY ""
PROMPT 2 1 ""
PROMPT 2 1 "Totale gr.merc."
END
STRINGA 1550 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA 1553 3
BEGIN

View File

@ -1,5 +1,5 @@
#include "mg3frm.h"
USE LF_MAG KEY 2
USE LF_MAG KEY 2 BY ANNOES CODMAG CODART LIVELLO
JOIN LF_ANAMAG TO LF_MAG INTO CODART==CODART
JOIN MAG TO LF_MAG ALIAS 500 INTO CODTAB==CODMAG[1,3]
JOIN MAG TO LF_MAG ALIAS 501 INTO CODTAB==CODMAG
@ -25,7 +25,7 @@ SECTION GRAPHIC
BEGIN
END
SECTION HEADER ODD 5
SECTION HEADER ODD 7
STRINGA 1 40 1
BEGIN
@ -54,73 +54,86 @@ BEGIN
PROMPT 55 2 "Stampa disponibilita'"
END
STRINGA 5 146
STRINGA FF_RANGEARTIC 120
BEGIN
KEY "Separatore (iniziale)"
PROMPT 1 3 "------------------------------------------------------------------------------------------------------------------------------------------------------"
KEY "RANGE"
PROMPT 1 3 ""
END
STRINGA 6 20
BEGIN
KEY "H1"
PROMPT 2 4 "Codice"
END
STRINGA 7 40
BEGIN
KEY "H1"
PROMPT 24 4 "Descrizione"
END
STRINGA 7 40
BEGIN
KEY "H1"
PROMPT 45 4 "UM"
END
STRINGA 8 12
BEGIN
KEY "H1"
PROMPT 55 4 "Giac."
END
STRINGA 9 12
BEGIN
KEY "H1"
PROMPT 67 4 "Ord.F."
END
STRINGA 10 12
BEGIN
KEY "H1"
PROMPT 79 4 "Ord.C."
END
STRINGA 11 12
BEGIN
KEY "H1"
PROMPT 91 4 "A c.lav."
END
STRINGA 12 12
BEGIN
KEY "H1"
PROMPT 103 4 "In c.lav."
END
STRINGA 13 12
BEGIN
KEY "H1"
PROMPT 116 4 "Prod.F."
END
STRINGA 14 12
BEGIN
KEY "H1"
PROMPT 128 4 "Prod.C."
END
STRINGA 15 12
BEGIN
KEY "H1"
PROMPT 139 4 "Disp."
END
STRINGA FF_RANGEMAGAZ 70
BEGIN
KEY "RANGE"
PROMPT 1 4 ""
END
STRINGA 17 146
BEGIN
KEY "Separatore (iniziale)"
PROMPT 1 5 "------------------------------------------------------------------------------------------------------------------------------------------------------"
END
STRINGA 5 151
BEGIN
KEY "Separatore (iniziale)"
PROMPT 1 5 "-----------------------------------------------------------------------------------------------------------------------------------------------------------"
END
STRINGA 6 20
BEGIN
KEY "H1"
PROMPT 2 6 "Codice"
END
STRINGA 7 40
BEGIN
KEY "H1"
PROMPT 23 6 "Descrizione"
END
STRINGA 7 40
BEGIN
KEY "H1"
PROMPT 54 6 "UM"
END
STRINGA 8 12
BEGIN
KEY "H1"
PROMPT 63 6 "Giac."
END
STRINGA 9 12
BEGIN
KEY "H1"
PROMPT 74 6 "Ord.F."
END
STRINGA 10 12
BEGIN
KEY "H1"
PROMPT 86 6 "Ord.C."
END
STRINGA 11 12
BEGIN
KEY "H1"
PROMPT 96 6 "A c.lav."
END
STRINGA 12 12
BEGIN
KEY "H1"
PROMPT 107 6 "In c.lav."
END
STRINGA 13 12
BEGIN
KEY "H1"
PROMPT 121 6 "Prod.F."
END
STRINGA 14 12
BEGIN
KEY "H1"
PROMPT 133 6 "Prod.C."
END
STRINGA 15 12
BEGIN
KEY "H1"
PROMPT 147 6 "Disp."
END
STRINGA 17 151
BEGIN
KEY "Separatore (iniziale)"
PROMPT 1 7 "-----------------------------------------------------------------------------------------------------------------------------------------------------------"
END
END
@ -137,7 +150,7 @@ SECTION BODY ODD 0 COLUMNWISE
STRINGA 60 20 1
BEGIN
KEY "codice magazzino"
PROMPT 2 1 "Magazzino "
PROMPT 2 1 "Magazzino "
FIELD 500@->CODTAB
MESSAGE COPY,151
END
@ -173,7 +186,7 @@ SECTION BODY ODD 0 COLUMNWISE
STRINGA 60 20 1
BEGIN
KEY "codice dep"
PROMPT 2 1 "Deposito "
PROMPT 2 1 "Deposito "
FIELD 501@->CODTAB[4,5]
MESSAGE COPY,51
END
@ -186,7 +199,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_DEPOSITO 1 0 0 FILE LF_MAG GROUP CODMAG[1,5]
SECTION GRUPPI_DEPOSITO 1 0 0 FILE LF_MAG GROUP CODMAG[1,5]
STRINGA 60 40 1
BEGIN
FLAGS "H"
@ -469,7 +482,8 @@ SECTION BODY ODD 0 COLUMNWISE
SECTION GRUPPI_LIVGIAC3 1 0 0 FILE LF_MAG GROUP LIVELLO
SECTION H_GLIVGIAC4 1 1 1 GROUP
END
SECTION GRUPPI_LIVGIAC4 1 0 0 FILE LF_MAG GROUP LIVELLO
SECTION GRUPPI_LIVGIAC4 1 0 0 STR_EXPR LIVELLO
// SEZIONE PRESENTE SOLO PER UNIFORMIT… CON LA STAMPA PER ARTICOLI
END
SECTION TOT_GLIVGIAC4 1 1 1 GROUP
@ -1577,13 +1591,13 @@ SECTION BODY ODD 0 COLUMNWISE
STRINGA 77
BEGIN
KEY "giac"
PROMPT 52 1 "----------------------------------------------------------------------------------------------------"
PROMPT 52 1 "---------------------------------------------------------------------------------------------------------"
END
END
STRINGA 51 20
BEGIN
KEY "CODICE"
PROMPT 2 1 "Totale dep."
PROMPT 2 1 "Totale dep. "
END
STRINGA 50 30
BEGIN
@ -1635,6 +1649,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 10 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,53|ADD,145
GROUP 15
END
NUMERO 46 11
BEGIN
@ -1668,7 +1683,7 @@ SECTION BODY ODD 0 COLUMNWISE
STRINGA 77
BEGIN
KEY "giac"
PROMPT 50 1 "----------------------------------------------------------------------------------------------------"
PROMPT 50 1 "---------------------------------------------------------------------------------------------------------"
END
END
STRINGA 150 30 1
@ -1679,7 +1694,7 @@ SECTION BODY ODD 0 COLUMNWISE
STRINGA 151 20 1
BEGIN
KEY "Magazzino"
PROMPT 2 1 "Totale mag."
PROMPT 2 1 "Totale mag. "
END
STRINGA 153 3
BEGIN

View File

@ -217,10 +217,10 @@ void TForm_schedemag::setdett_permag(bool sudd_dep,bool show_dett,int livart,int
{
*_rmov_raggcond << "+CODMAG[4,5]";
_rmov_sortexp->add("CODMAG[4,5]");
if (show_dett)
{
ragg_exprs(livart,livgiac);
}
}
if (show_dett)
{
ragg_exprs(livart,livgiac);
}
TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,"GRUPPI_RMOVMAG");

View File

@ -18,11 +18,11 @@ BEGIN
PROMPT 2 2 "Ordinamento "
ITEM "A|articoli"
MESSAGE ENABLE,F_ORDINEART
MESSAGE HIDE,F_DETTAGLIOMAG|HIDE,F_DETTAGLIODEP
MESSAGE HIDE,F_DETTAGLIOMAG|"X",F_DETTAGLIODEP
MESSAGE SHOW,F_SUDDIV_MAGAZZINI|SHOW,F_SUDDIV_DEPOSITI
ITEM "M|magazzini"
MESSAGE "C",F_ORDINEART|K_SPACE,F_ORDINEART|DISABLE,F_ORDINEART|SHOW,G_CODART@|HIDE,G_DESART@
MESSAGE SHOW,F_DETTAGLIOMAG|SHOW,F_DETTAGLIODEP
MESSAGE SHOW,F_DETTAGLIOMAG|"X",F_DETTAGLIODEP
MESSAGE HIDE,F_SUDDIV_MAGAZZINI|HIDE,F_SUDDIV_DEPOSITI
END
@ -174,15 +174,15 @@ END
BOOL F_DETTAGLIOMAG
BEGIN
PROMPT 2 11 "Suddivido per depositi"
MESSAGE TRUE ENABLE,F_DETTAGLIODEP
MESSAGE FALSE CLEAR,F_DETTAGLIODEP
PROMPT 2 12 "Suddivido per depositi"
// MESSAGE TRUE ENABLE,F_DETTAGLIODEP
// MESSAGE FALSE CLEAR,F_DETTAGLIODEP
END
BOOL F_DETTAGLIODEP
BEGIN
FLAGS "D"
PROMPT 2 12 "Dettaglio i depositi"
FLAGS "DH"
PROMPT 42 12 "Dettaglio i depositi"
END

View File

@ -120,21 +120,34 @@ SECTION BODY ODD 2
SECTION HEADER_MAG 1 2 2 GROUP
FLAGS "N"
STRINGA 22 50 1
STRINGA 22 20 1
BEGIN
KEY "mag"
PROMPT 1 1 "Magazzino "
FIELD 500@->CODTAB[1,3]
END
STRINGA 22 50 1
BEGIN
KEY "mag"
PROMPT 15 1 ""
FIELD 500@->S0
END
SECTION HEADER_DEP 2 0 0 GROUP
SECTION HEADER_DEP_VERO 1 1 1 STR_EXPR 500@->B0=="X"
STRINGA 23 50 1
STRINGA 23 20 1
BEGIN
KEY "dep"
PROMPT 3 1 "Deposito "
FIELD 501@->CODTAB[4,5]
END
STRINGA 23 50 1
BEGIN
KEY "dep"
PROMPT 15 1 ""
FIELD 501@->S0
END
END
END // HEADER deposito
SECTION HEADER_ARTICOLO 2 1 1 GROUP
STRINGA 10 20 1
BEGIN
@ -164,7 +177,6 @@ SECTION BODY ODD 2
END
END // HEADER livgiac
END //HEADER articolo
END // HEADER deposito
STRINGA 24 50 1
BEGIN
KEY "dep"

View File

@ -1,9 +1,7 @@
#define LF_UMART2 349
#define LF_TAB_MAG 500
USE LF_ANAMAG KEY 1
JOIN LF_STOMAG TO LF_ANAMAG INTO ANNOESRIF==1996 CODART==CODART
JOIN LF_UMART TO LF_ANAMAG INTO CODART==CODART
JOIN LF_UMART TO LF_STOMAG KEY 2 ALIAS LF_UMART2 INTO CODART==CODART UM==UM
JOIN MAG TO LF_STOMAG ALIAS LF_TAB_MAG INTO CODTAB==CODMAG[1,3]
END
@ -18,7 +16,7 @@ END
GENERAL
BEGIN
OFFSET 0 1
FONT "Courier New"
// FONT "Courier New"
// SIZE 10
END
@ -65,25 +63,26 @@ END
END
SECTION BODY ODD 1
SECTION BODY ODD 0
SECTION H_ARTICOLO 1 3 1 HEADER
STRINGA 11 20
BEGIN
KEY "CODART"
PROMPT 2 1 "Articolo "
FIELD LF_ANAMAG->CODART
END
STRINGA 12 50
BEGIN
KEY "DESCR"
PROMPT 33 1 ""
FIELD LF_ANAMAG->DESCR
END
END
SECTION GRUPPI_ARTICOLO 1 0 0 COLUMNWISE FILE LF_STOMAG
SECTION H_ARTICOLO 1 3 1 GROUP
STRINGA 11 20
BEGIN
KEY "CODART"
PROMPT 2 1 "Articolo "
FIELD LF_ANAMAG->CODART
END
STRINGA 12 50
BEGIN
KEY "DESCR"
PROMPT 33 1 ""
FIELD LF_ANAMAG->DESCR
END
END
SECTION BODY_MAG 1 1 1 COLUMNWISE FILE LF_STOMAG GROUP CODART
SECTION HD_MAG 1 2 1 NORMAL GROUP
STRINGA 11 20
@ -95,7 +94,7 @@ SECTION BODY ODD 1
STRINGA 12 50
BEGIN
KEY "DESCR"
PROMPT 33 1 ""
PROMPT 23 1 ""
FIELD LF_TAB_MAG@->S0
END
END // HD MAG
@ -106,10 +105,10 @@ SECTION BODY ODD 1
KEY "offset"
PROMPT 1 1 ""
END
NUMERO 13 6
NUMERO 13 10
BEGIN
KEY "ANNO"
PROMPT 2 1 "Anno"
PROMPT 2 1 " Anno"
END
STRINGA 15 12
BEGIN
@ -129,7 +128,7 @@ SECTION BODY ODD 1
KEY "offset"
PROMPT 1 1 ""
END
NUMERO 14 6
NUMERO 14 10
BEGIN
KEY "ANNO"
PROMPT 2 1 ""
@ -140,20 +139,50 @@ SECTION BODY ODD 1
KEY "QUANT"
PROMPT 4 1 ""
PICTURE "###.###,@@@"
MESSAGE _NUMEXPR,LF_STOMAG->QUANT*LF_UMART2@->FC
FIELD LF_STOMAG->QUANT
MESSAGE ADD,115
END
NUMERO 16 12
BEGIN
KEY "VALORE"
PROMPT 5 1 ""
PICTURE "###.###.###"
MESSAGE _NUMEXPR,LF_STOMAG->VALORE*LF_UMART2@->FC
FIELD LF_STOMAG->VALORE
MESSAGE ADD,116
END
END // body anni
END // body anni
END // gruppi anni dello stesso articolo
END // gruppi anni dello stesso articolo
SECTION FOOTER_ANNI 1 1 1 COLUMNWISE GROUP
NUMERO 13 15
BEGIN
KEY "offset"
PROMPT 1 1 ""
END
NUMERO 14 10
BEGIN
KEY "ANNO"
PROMPT 2 1 " Totale"
END
NUMERO 115 12
BEGIN
KEY "QUANT"
PROMPT 4 1 ""
PICTURE "###.###,@@@"
END
NUMERO 116 12
BEGIN
KEY "VALORE"
PROMPT 5 1 ""
PICTURE "###.###.###"
END
END // body anni
END // CICLO sul file di storico
END // section body, loop anamag
SECTION FOOTER ODD 2

View File

@ -22,7 +22,7 @@ END
GENERAL
BEGIN
OFFSET 0 1
FONT "Courier New"
// FONT "Courier New"
// SIZE 10
END
@ -274,7 +274,7 @@ SECTION BODY ODD 1
NUMERO 10
BEGIN
KEY "totale mov"
PROMPT 86 3 "Totale valore movimentato: "
PROMPT 85 3 "Totale valore movimentato: "
PICTURE "##.###.###.##@"
END

View File

@ -123,32 +123,38 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t)
if (t==valorizz_coststd) {
v=curr_art().costo_standard(annoes).string();
}
if (t==valorizz_costmediopond) {
TString codmag(magrec.get(MAG_CODMAG));codmag.cut(3);
const TString livello(magrec.get(MAG_LIVELLO));
v=curr_art().costo_mediopond(annoes,codmag,livello).string();
}
if (t==valorizz_costmedio) {
const TString codmag(magrec.get(MAG_CODMAG));
TString codmag(magrec.get(MAG_CODMAG));codmag.cut(3);
const TString livello(magrec.get(MAG_LIVELLO));
v=curr_art().costo_medio(annoes,codmag,livello).string();
}
if (t==valorizz_LIFO) {
const TString codmag(magrec.get(MAG_CODMAG));
TString codmag(magrec.get(MAG_CODMAG));codmag.cut(3);
const TString livello(magrec.get(MAG_LIVELLO));
v=curr_art().LIFO(annoes,codmag,livello, _giaceff,_valcomp).string();
}
if (t==valorizz_FIFO) {
const TString codmag(magrec.get(MAG_CODMAG));
TString codmag(magrec.get(MAG_CODMAG));codmag.cut(3);
const TString livello(magrec.get(MAG_LIVELLO));
v=curr_art().FIFO(annoes,codmag,livello, _giaceff,_valcomp).string();
}
if (t==valorizz_LIFOa) {
const TString codmag(magrec.get(MAG_CODMAG));
TString codmag(magrec.get(MAG_CODMAG));codmag.cut(3);
const TString livello(magrec.get(MAG_LIVELLO));
v=curr_art().LIFO_annuale(annoes,codmag,livello, _giaceff,_valcomp).string();
}
if (t==valorizz_FIFOa) {
const TString codmag(magrec.get(MAG_CODMAG));
TString codmag(magrec.get(MAG_CODMAG));codmag.cut(3);
const TString livello(magrec.get(MAG_LIVELLO));
v=curr_art().FIFO_annuale(annoes,codmag,livello, _giaceff,_valcomp).string();
}
cf.set(((real)(v * curr_art().giacenza_corretta(magrec,_giaceff,_valcomp))).string());
cf.set(v.string());
//* curr_art().giacenza_corretta(magrec,_giaceff,_valcomp)
return TRUE;
}
@ -199,7 +205,7 @@ TStampainv_mask::TStampainv_mask():
set_handler(F_TOLIVELLOART, handle_liv);
set_handler(F_TOLIVELLOGIAC, handle_liv);
set_handler(F_ORDINE, handle_ragg);
set_handler(F_DETTAGLIODEP, handle_ragg);
//set_handler(F_DETTAGLIODEP, handle_ragg);
set_handler(F_DETTAGLIOMAG, handle_ragg);
set_handler(F_ORDINEART,handle_subord);
set_handler(F_CODLISTINO, handle_codlist);
@ -216,7 +222,7 @@ bool TStampainv_mask::handle_subord(TMask_field &fld, KEY k)
if (fld.mask().get(F_ORDINE)=="A")
fraggcod.enable();
else {
if (!fld.mask().get_bool(F_DETTAGLIOMAG) || !fld.mask().get_bool(F_DETTAGLIODEP))
if (!fld.mask().get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
@ -263,7 +269,7 @@ bool TStampainv_mask::handle_ragg(TMask_field &fld, KEY k)
if (fld.mask().get(F_ORDINE)=="M")
{
ftotmag.enable();
if (!fld.mask().get_bool(F_DETTAGLIOMAG) || !fld.mask().get_bool(F_DETTAGLIODEP))
if (!fld.mask().get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
@ -375,7 +381,13 @@ void TStampa_inventario::setprint_permagazzini()
_form->setdett_permag(
_mask->get_bool(F_RAGGCODICE),_mask->get_int(F_FROMLIVELLOART),_mask->get_int(F_TOLIVELLOART),
_mask->get_bool(F_RAGGLIVGIAC),_mask->get_int(F_FROMLIVELLOGIAC),_mask->get_int(F_TOLIVELLOGIAC),
TRUE,_mask->get_bool(F_DETTAGLIOMAG),_mask->get_bool(F_DETTAGLIODEP));
TRUE,_mask->get_bool(F_TOTALIDEPOSITI),_mask->get_bool(F_DETTAGLIODEP));
if (!_mask->get_bool(F_TOTALIDEPOSITI))
{
((TSorted_cursor *)_cur)->change_order("ANNOES|CODMAG[1,3]|CODART|LIVELLO");
_form->find_field('B',odd_page,"GRUPPI_DEPOSITO").setcondition("CODMAG[1,3]",_strexpr);
}
darec.put("ANNOES",_mask->get(F_ANNOES));
darec.put("CODMAG",_mask->get(F_DAMAG));
@ -405,7 +417,7 @@ void TStampa_inventario::setprint_perarticoli()
if (filter.not_empty())
filter.cut(filter.len()-2);
_mask->set_livellicodice();
//_mask->set_livellicodice();
switch (subordine)
{
case 'C':
@ -438,7 +450,7 @@ void TStampa_inventario::setprint_perarticoli()
_form->setdett_perart(
_mask->get_bool(F_RAGGCODICE),_mask->get_int(F_FROMLIVELLOART),_mask->get_int(F_TOLIVELLOART),
_mask->get_bool(F_RAGGLIVGIAC),_mask->get_int(F_FROMLIVELLOGIAC),_mask->get_int(F_TOLIVELLOGIAC),
_mask->get_bool(F_TOTALIMAGAZZINI),_mask->get_bool(F_TOTALIDEPOSITI));
_mask->get_bool(F_TOTALIMAGAZZINI),_mask->get_bool(F_DETTAGLIOMAG));
/* if (*_mask->get(F_FILTRO)=='N')
_form->find_field('B',odd_page,"TOT_DEPOSITO").setcondition("GIAC!=0");
if (*_mask->get(F_FILTRO)=='+')

View File

@ -7,10 +7,10 @@ BEGIN
PROMPT 2 1 "Ordinamento "
ITEM "A|articoli"
MESSAGE ENABLE,F_ORDINEART
MESSAGE SHOW,F_TOTALIMAGAZZINI|SHOW,F_TOTALIDEPOSITI|"X",F_DETTAGLIOMAG|"X",F_DETTAGLIODEP|HIDE,F_DETTAGLIODEP|HIDE,F_DETTAGLIOMAG
MESSAGE "X",F_DETTAGLIODEP|SHOW,F_TOTALIMAGAZZINI|SHOW,F_DETTAGLIOMAG|HIDE,F_TOTALIDEPOSITI
ITEM "M|magazzini"
MESSAGE "C",F_ORDINEART|K_SPACE,F_ORDINEART|DISABLE,F_ORDINEART|SHOW,G_CODART@|HIDE,G_DESART@
MESSAGE SHOW,F_DETTAGLIOMAG|HIDE,F_TOTALIMAGAZZINI|SHOW,F_DETTAGLIODEP|HIDE,F_TOTALIDEPOSITI
MESSAGE SHOW,F_TOTALIDEPOSITI|HIDE,F_TOTALIMAGAZZINI|HIDE,F_DETTAGLIOMAG
END
@ -54,7 +54,7 @@ BEGIN
PROMPT 2 3 "Valorizza solo "
ITEM "C|i componenti impegnati"
ITEM "F|i finiti in produzione"
HELP "finiti =(giac+INPRODF-INPRODC)"
HELP "finiti =(giac+INPRODF-INPRODC)"
END
@ -157,16 +157,17 @@ BEGIN
GROUP G_CATMER
END
BOOL F_DETTAGLIOMAG
BOOL F_TOTALIDEPOSITI
BEGIN
PROMPT 2 7 "Stampa i depositi"
MESSAGE TRUE ENABLE,F_DETTAGLIODEP
MESSAGE FALSE CLEAR,F_DETTAGLIODEP|K_SPACE,F_DETTAGLIODEP
PROMPT 2 7 "Suddivido per depositi"
// MESSAGE TRUE ENABLE,F_DETTAGLIODEP
// MESSAGE FALSE CLEAR,F_DETTAGLIODEP|K_SPACE,F_DETTAGLIODEP
END
BOOL F_DETTAGLIODEP
BEGIN
PROMPT 42 7 "Stampa il dettaglio depositi"
FLAGS "DH"
PROMPT 42 7 "Dettaglia i depositi"
MESSAGE TRUE ENABLE,F_RAGGCODICE|ENABLE,F_RAGGLIVGIAC
MESSAGE FALSE CLEAR,F_RAGGCODICE|K_SPACE,F_RAGGCODICE|CLEAR,F_RAGGLIVGIAC|K_SPACE,F_RAGGLIVGIAC
END
@ -245,11 +246,11 @@ END
BOOL F_TOTALIMAGAZZINI
BEGIN
PROMPT 2 10 "Stampa i totali di magazzino"
MESSAGE TRUE ENABLE,F_TOTALIDEPOSITI
MESSAGE FALSE CLEAR,F_TOTALIDEPOSITI
MESSAGE TRUE ENABLE,F_DETTAGLIOMAG
MESSAGE FALSE CLEAR,F_DETTAGLIOMAG
END
BOOL F_TOTALIDEPOSITI
BOOL F_DETTAGLIOMAG
BEGIN
PROMPT 42 10 "Stampa i totali di deposito"
END
@ -257,85 +258,91 @@ END
LIST F_VAL1 20
BEGIN
PROMPT 2 12 "Valorizz. 1 "
ITEM "6|Costo medio ponder."
ITEM "1|Ultimo costo"
ITEM "2|Media ultimi costi"
ITEM "3|Prezzo di listino"
ITEM "4|Costo standard"
ITEM "5|Costo medio"
ITEM "6|FIFO annuale"
ITEM "7|LIFO annuale"
ITEM "8|FIFO"
ITEM "9|LIFO"
ITEM "7|FIFO annuale"
ITEM "8|LIFO annuale"
ITEM "9|FIFO"
ITEM "10|LIFO"
END
LIST F_VAL2 20
BEGIN
PROMPT 2 13 "Valorizz. 2 "
ITEM "|"
ITEM "6|Costo medio ponder."
ITEM "1|Ultimo costo"
ITEM "2|Media ultimi costi"
ITEM "3|Prezzo di listino"
ITEM "4|Costo standard"
ITEM "5|Costo medio"
ITEM "6|FIFO annuale"
ITEM "7|LIFO annuale"
ITEM "8|FIFO"
ITEM "9|LIFO"
ITEM "7|FIFO annuale"
ITEM "8|LIFO annuale"
ITEM "9|FIFO"
ITEM "10|LIFO"
END
LIST F_VAL3 20
BEGIN
PROMPT 2 14 "Valorizz. 3 "
ITEM "|"
ITEM "6|Costo medio ponder."
ITEM "1|Ultimo costo"
ITEM "2|Media ultimi costi"
ITEM "3|Prezzo di listino"
ITEM "4|Costo standard"
ITEM "5|Costo medio"
ITEM "6|FIFO annuale"
ITEM "7|LIFO annuale"
ITEM "8|FIFO"
ITEM "9|LIFO"
ITEM "7|FIFO annuale"
ITEM "8|LIFO annuale"
ITEM "9|FIFO"
ITEM "10|LIFO"
END
LIST F_VAL4 20
BEGIN
PROMPT 42 12 "Valorizz. 4 "
ITEM "|"
ITEM "6|Costo medio ponder."
ITEM "1|Ultimo costo"
ITEM "2|Media ultimi costi"
ITEM "3|Prezzo di listino"
ITEM "4|Costo standard"
ITEM "5|Costo medio"
ITEM "6|FIFO annuale"
ITEM "7|LIFO annuale"
ITEM "8|FIFO"
ITEM "9|LIFO"
ITEM "7|FIFO annuale"
ITEM "8|LIFO annuale"
ITEM "9|FIFO"
ITEM "10|LIFO"
END
LIST F_VAL5 20
BEGIN
PROMPT 42 13 "Valorizz. 5 "
ITEM "|"
ITEM "6|Costo medio ponder."
ITEM "1|Ultimo costo"
ITEM "2|Media ultimi costi"
ITEM "3|Prezzo di listino"
ITEM "4|Costo standard"
ITEM "5|Costo medio"
ITEM "6|FIFO annuale"
ITEM "7|LIFO annuale"
ITEM "8|FIFO"
ITEM "9|LIFO"
ITEM "7|FIFO annuale"
ITEM "8|LIFO annuale"
ITEM "9|FIFO"
ITEM "10|LIFO"
END
LIST F_VAL6 20
BEGIN
PROMPT 42 14 "Valorizz. 6 "
ITEM "|"
ITEM "6|Costo medio ponder."
ITEM "1|Ultimo costo"
ITEM "2|Media ultimi costi"
ITEM "3|Prezzo di listino"
ITEM "4|Costo standard"
ITEM "5|Costo medio"
ITEM "6|FIFO annuale"
ITEM "7|LIFO annuale"
ITEM "8|FIFO"
ITEM "9|LIFO"
ITEM "7|FIFO annuale"
ITEM "8|LIFO annuale"
ITEM "9|FIFO"
ITEM "10|LIFO"
END
GROUPBOX DLG_NULL 78 3

View File

@ -21,7 +21,7 @@ GENERAL
BEGIN
OFFSET 0 1
// Let the user be free to choose the font&size:
FONT "Courier New"
// FONT "Courier New"
// SIZE 10
END
@ -254,7 +254,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODCATMER
END
STRINGA 12 30 2
STRINGA 12 70
BEGIN
KEY "CODICE CATMER"
PROMPT 3 1 ""
@ -286,7 +286,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,1|COPY,1451
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -309,7 +309,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,2|COPY,1351
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -332,7 +332,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,3|COPY,1251
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -355,7 +355,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,4|COPY,1151
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -378,7 +378,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,5|COPY,1051
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -401,7 +401,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,6|COPY,951
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -424,7 +424,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,7|COPY,851
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -448,7 +448,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,8|COPY,751
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -472,7 +472,7 @@ SECTION BODY ODD 0 COLUMNWISE
FIELD CODART
MESSAGE COPY,651
END
STRINGA 21 30 2
STRINGA 21 70
BEGIN
KEY "DESCR.articolo"
PROMPT 3 1 ""
@ -604,14 +604,14 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION H_MAGAZZINO_DEP 1 1 1 STR_EXPR 500@->B0=="X" // DIVISIONE IN DEPOSITI
STRINGA 60 40 1
STRINGA 60 20 1
BEGIN
KEY "codice magazzino"
FIELD 500@->CODTAB
PROMPT 2 1 " Magazzino "
MESSAGE SHOW,TOT_DEPOSITO
END
STRINGA 60 40 1
STRINGA 60 70 1
BEGIN
KEY "magazzino"
FIELD 500@->s0
@ -650,106 +650,112 @@ SECTION BODY ODD 0 COLUMNWISE
PICTURE "########,@##"
MESSAGE _USER,GIAC|ADD,141
END
NUMERO 42 15
BEGIN
KEY "VAL1"
PROMPT 7 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL1|ADD,142
END
NUMERO 82 12
BEGIN
KEY "VAL1M"
PROMPT 8 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#42/#41
MESSAGE _USER,VAL1
GROUP FG_COL1
END
NUMERO 42 15
BEGIN
KEY "VAL1"
PROMPT 7 1 ""
PICTURE "##.###.###.##@"
MESSAGE _NUMEXPR,#82*#41|ADD,142
END
NUMERO 83 12
BEGIN
KEY "VAL2M"
PROMPT 10 1 ""
PICTURE "###.###.##@"
MESSAGE _USER,VAL2
GROUP FG_COL2
END
NUMERO 43 15
BEGIN
KEY "VAL2"
PROMPT 9 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL2|ADD,143
MESSAGE _NUMEXPR,#83*#41|ADD,143
GROUP FG_COL2
END
NUMERO 83 12
NUMERO 84 12
BEGIN
KEY "VAL2M"
PROMPT 10 1 ""
KEY "VAL3M"
PROMPT 12 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#43/#41
GROUP FG_COL2
MESSAGE _USER,VAL3
GROUP FG_COL3
END
NUMERO 44 15
BEGIN
KEY "VAL3"
PROMPT 11 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL3|ADD,144
MESSAGE _NUMEXPR,#84*#41|ADD,144
GROUP FG_COL3
END
NUMERO 84 12
NUMERO 85 12
BEGIN
KEY "VAL3M"
PROMPT 12 1 ""
KEY "VAL4M"
PROMPT 14 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#44/#41
GROUP FG_COL3
MESSAGE _USER,VAL4
GROUP FG_COL4
END
NUMERO 45 15
BEGIN
KEY "VAL4"
PROMPT 13 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL4|ADD,145
MESSAGE _NUMEXPR,#85*#41|ADD,145
GROUP FG_COL4
END
NUMERO 85 12
NUMERO 86 12
BEGIN
KEY "VAL4M"
PROMPT 14 1 ""
KEY "VAL5M"
PROMPT 16 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#45/#41
GROUP FG_COL4
MESSAGE _USER,VAL5
GROUP FG_COL5
END
NUMERO 46 15
BEGIN
KEY "VAL5"
PROMPT 15 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL5|ADD,146
MESSAGE _NUMEXPR,#86*#41|ADD,146
GROUP FG_COL5
END
NUMERO 86 12
NUMERO 87 12
BEGIN
KEY "VAL5M"
PROMPT 16 1 ""
KEY "VAL6M"
PROMPT 18 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#46/#41
GROUP FG_COL5
MESSAGE _USER,VAL6
GROUP FG_COL6
END
NUMERO 47 15
BEGIN
KEY "VAL6"
PROMPT 17 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL6|ADD,147
GROUP FG_COL6
END
NUMERO 87 12
BEGIN
KEY "VAL6M"
PROMPT 18 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#47/#41
MESSAGE _NUMEXPR,#87*#41|ADD,147
GROUP FG_COL6
END
END // depositi dello stesso magazzino
END // MAGAZZ
SECTION TOT_MAGAZZINO 1 1 1 FOOTER
SECTION TOT_MAGAZZINO 1 1 1 GROUP
STRINGA 150 30 1
BEGI
KEY "Magazzino"
@ -814,15 +820,15 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE ADD,244
GROUP 1 FG_COL3
END
NUMERO 184 15
NUMERO 184 12
BEGIN
KEY "VAL1"
PROMPT 12 1 ""
PICTURE "##.###.###.##@"
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#144/#141
GROUP 1 FG_COL3
END
NUMERO 145 12
NUMERO 145 15
BEGIN
KEY "VAL4"
PROMPT 13 1 ""
@ -873,7 +879,7 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot magazz
END // GGIAC4
SECTION TOT_GLIVGIAC4 1 1 1 FOOTER
SECTION TOT_GLIVGIAC4 1 1 1 GROUP
STRINGA 250 30
BEGIN
PROMPT 3 1 ""
@ -996,7 +1002,7 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot ggiac4
END // GGIAC3
SECTION TOT_GLIVGIAC3 1 1 1 FOOTER
SECTION TOT_GLIVGIAC3 1 1 1 GROUP
STRINGA 350 30
BEGIN
KEY ""
@ -1120,7 +1126,7 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot ggiac3
END // GGIAC2
SECTION TOT_GLIVGIAC2 1 1 1 FOOTER
SECTION TOT_GLIVGIAC2 1 1 1 GROUP
STRINGA 450 30
BEGIN
KEY ""
@ -1243,7 +1249,7 @@ SECTION BODY ODD 0 COLUMNWISE
END
END // tot ggiac2
END // GGIAC1
SECTION TOT_GLIVGIAC1 1 1 1 FOOTER
SECTION TOT_GLIVGIAC1 1 1 1 GROUP
STRINGA 550 30
BEGIN
KEY ""

View File

@ -21,7 +21,7 @@ GENERAL
BEGIN
OFFSET 0 1
// Let the user be free to choose the font&size:
FONT "Courier New"
// FONT "Courier New"
// SIZE 10
END
@ -254,7 +254,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODCATMER
END
STRINGA 12 30 2
STRINGA 12 70
BEGIN
KEY "CODICE CATMER"
PROMPT 3 1 ""
@ -286,7 +286,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,1|COPY,1451
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -309,7 +309,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,2|COPY,1351
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -332,7 +332,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,3|COPY,1251
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -355,7 +355,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,4|COPY,1151
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -378,7 +378,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,5|COPY,1051
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -401,7 +401,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,6|COPY,951
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -424,7 +424,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,7|COPY,851
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -448,7 +448,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,8|COPY,751
END
STRINGA 17 30 2
STRINGA 17 70
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -472,7 +472,7 @@ SECTION BODY ODD 0 COLUMNWISE
FIELD CODART
MESSAGE COPY,651
END
STRINGA 21 30 2
STRINGA 21 70
BEGIN
KEY "DESCR.articolo"
PROMPT 3 1 ""
@ -604,14 +604,14 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION H_MAGAZZINO_DEP 1 1 1 STR_EXPR 500@->B0=="X" // DIVISIONE IN DEPOSITI
STRINGA 60 40 1
STRINGA 60 20 1
BEGIN
KEY "codice magazzino"
FIELD 500@->CODTAB
PROMPT 2 1 " Magazzino "
MESSAGE SHOW,TOT_DEPOSITO
END
STRINGA 60 40 1
STRINGA 60 70 1
BEGIN
KEY "magazzino"
FIELD 500@->s0
@ -650,99 +650,105 @@ SECTION BODY ODD 0 COLUMNWISE
PICTURE "########,@##"
MESSAGE _USER,GIAC|ADD,141
END
NUMERO 42 15
BEGIN
KEY "VAL1"
PROMPT 7 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL1|ADD,142
END
NUMERO 82 12
BEGIN
KEY "VAL1M"
PROMPT 8 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#42/#41
MESSAGE _USER,VAL1
GROUP FG_COL1
END
NUMERO 42 15
BEGIN
KEY "VAL1"
PROMPT 7 1 ""
PICTURE "##.###.###.##@"
MESSAGE _NUMEXPR,#82*#41|ADD,142
END
NUMERO 83 12
BEGIN
KEY "VAL2M"
PROMPT 10 1 ""
PICTURE "###.###.##@"
MESSAGE _USER,VAL2
GROUP FG_COL2
END
NUMERO 43 15
BEGIN
KEY "VAL2"
PROMPT 9 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL2|ADD,143
MESSAGE _NUMEXPR,#83*#41|ADD,143
GROUP FG_COL2
END
NUMERO 83 12
NUMERO 84 12
BEGIN
KEY "VAL2M"
PROMPT 10 1 ""
KEY "VAL3M"
PROMPT 12 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#43/#41
GROUP FG_COL2
MESSAGE _USER,VAL3
GROUP FG_COL3
END
NUMERO 44 15
BEGIN
KEY "VAL3"
PROMPT 11 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL3|ADD,144
MESSAGE _NUMEXPR,#84*#41|ADD,144
GROUP FG_COL3
END
NUMERO 84 12
NUMERO 85 12
BEGIN
KEY "VAL3M"
PROMPT 12 1 ""
KEY "VAL4M"
PROMPT 14 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#44/#41
GROUP FG_COL3
MESSAGE _USER,VAL4
GROUP FG_COL4
END
NUMERO 45 15
BEGIN
KEY "VAL4"
PROMPT 13 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL4|ADD,145
MESSAGE _NUMEXPR,#85*#41|ADD,145
GROUP FG_COL4
END
NUMERO 85 12
NUMERO 86 12
BEGIN
KEY "VAL4M"
PROMPT 14 1 ""
KEY "VAL5M"
PROMPT 16 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#45/#41
GROUP FG_COL4
MESSAGE _USER,VAL5
GROUP FG_COL5
END
NUMERO 46 15
BEGIN
KEY "VAL5"
PROMPT 15 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL5|ADD,146
MESSAGE _NUMEXPR,#86*#41|ADD,146
GROUP FG_COL5
END
NUMERO 86 12
NUMERO 87 12
BEGIN
KEY "VAL5M"
PROMPT 16 1 ""
KEY "VAL6M"
PROMPT 18 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#46/#41
GROUP FG_COL5
MESSAGE _USER,VAL6
GROUP FG_COL6
END
NUMERO 47 15
BEGIN
KEY "VAL6"
PROMPT 17 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL6|ADD,147
GROUP FG_COL6
END
NUMERO 87 12
BEGIN
KEY "VAL6M"
PROMPT 18 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#47/#41
MESSAGE _NUMEXPR,#87*#41|ADD,147
GROUP FG_COL6
END
END // depositi dello stesso magazzino
@ -814,15 +820,15 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE ADD,244
GROUP 1 FG_COL3
END
NUMERO 184 15
NUMERO 184 12
BEGIN
KEY "VAL1"
PROMPT 12 1 ""
PICTURE "##.###.###.##@"
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#144/#141
GROUP 1 FG_COL3
END
NUMERO 145 12
NUMERO 145 15
BEGIN
KEY "VAL4"
PROMPT 13 1 ""

View File

@ -1,5 +1,5 @@
#include "mg4frm.h"
USE LF_MAG KEY 2
USE LF_MAG KEY 2 BY ANNOES CODMAG[1,3] CODART LIVELLO CODMAG[4,5]
JOIN LF_ANAMAG TO LF_MAG INTO CODART==CODART
JOIN MAG TO LF_MAG ALIAS 500 INTO CODTAB==CODMAG[1,3]
JOIN MAG TO LF_MAG ALIAS 501 INTO CODTAB==CODMAG
@ -17,7 +17,7 @@ END
GENERAL
BEGIN
OFFSET 0 1
FONT "Courier New"
// FONT "Courier New"
// Let the user be free to choose the font size:
// SIZE 10
END
@ -255,7 +255,7 @@ SECTION BODY ODD 1 COLUMNWISE
STRINGA 60 20 1
BEGIN
KEY "codice magazzino"
PROMPT 2 1 "Magazzino "
PROMPT 2 1 "Magazzino "
FIELD 500@->CODTAB
MESSAGE COPY,151
END
@ -268,6 +268,13 @@ SECTION BODY ODD 1 COLUMNWISE
END
END
SECTION GRUPPI_MAGAZZINO 1 0 0 FILE LF_MAG GROUP CODMAG[1,3]
STRINGA 60 40 1
BEGIN
FLAGS "H"
KEY ""
PROMPT 2 1 ""
MESSAGE RESET,15@
END
LIST FF_DIVDEPOSITI
BEGIN
FLAGS "H"
@ -282,8 +289,8 @@ SECTION BODY ODD 1 COLUMNWISE
SECTION H_DEPOSITO 1 1 1 STR_EXPR #FF_DIVDEPOSITI=="X"
STRINGA 60 20 1
BEGIN
KEY "codice magazzino"
PROMPT 2 1 "Deposito "
KEY "codice deposito"
PROMPT 2 1 "Deposito "
FIELD 501@->CODTAB[4,5]
MESSAGE COPY,51
END
@ -611,100 +618,106 @@ SECTION BODY ODD 1 COLUMNWISE
MESSAGE _USER,GIAC|ADD,341
GROUP 2
END
NUMERO 242 15
BEGIN
KEY "VAL1"
PROMPT 7 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL1|ADD,342
GROUP 2
END
NUMERO 282 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 8 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#242/#241
MESSAGE _USER,VAL1
GROUP 2 FG_COL1
END
NUMERO 242 15
BEGIN
KEY "VAL1"
PROMPT 7 1 ""
PICTURE "##.###.###.##@"
MESSAGE _NUMEXPR,#282*#241|ADD,342
GROUP 2
END
NUMERO 283 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 10 1 ""
PICTURE "###.###.##@"
MESSAGE _USER,VAL2
GROUP 2 FG_COL2
END
NUMERO 243 15
BEGIN
KEY "VAL2"
PROMPT 9 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL2|ADD,343
MESSAGE _NUMEXPR,#283*#241|ADD,343
GROUP 2 FG_COL2
END
NUMERO 283 12
NUMERO 284 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 10 1 ""
PROMPT 12 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#243/#241
GROUP 2 FG_COL2
MESSAGE _USER,VAL3
GROUP 2 FG_COL3
END
NUMERO 244 15
BEGIN
KEY "VAL3"
PROMPT 11 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL3|ADD,344
MESSAGE _NUMEXPR,#284*#241|ADD,344
GROUP 2 FG_COL3
END
NUMERO 284 12
NUMERO 285 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 12 1 ""
PROMPT 14 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#244/#241
GROUP 2 FG_COL3
MESSAGE _USER,VAL4
GROUP 2 FG_COL4
END
NUMERO 245 15
BEGIN
KEY "COL4"
PROMPT 13 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL4|ADD,345
MESSAGE _NUMEXPR,#285*#241|ADD,345
GROUP 2 FG_COL4
END
NUMERO 285 12
NUMERO 286 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 14 1 ""
PROMPT 16 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#245/#241
GROUP 2 FG_COL4
MESSAGE _USER,VAL5
GROUP 2 FG_COL5
END
NUMERO 246 15
BEGIN
KEY "COL5"
PROMPT 15 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL5|ADD,346
MESSAGE _NUMEXPR,#286*#241|ADD,346
GROUP 2 FG_COL5
END
NUMERO 286 12
NUMERO 287 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 16 1 ""
PROMPT 18 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#246/#241
GROUP 2 FG_COL5
MESSAGE _USER,VAL6
GROUP 2 FG_COL6
END
NUMERO 247 15
BEGIN
KEY "COL6"
PROMPT 17 1 ""
PICTURE "##.###.###.##@"
MESSAGE _USER,VAL6|ADD,347
GROUP 2 FG_COL6
END
NUMERO 287 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 18 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#246/#241
MESSAGE _NUMEXPR,#287*#241|ADD,347
GROUP 2 FG_COL6
END
END // tot ggiac4
@ -993,7 +1006,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 582 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 18 1 ""
PROMPT 8 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#542/#541
GROUP 5 FG_COL1
@ -1001,7 +1014,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 543 15
BEGIN
KEY "COL2"
PROMPT 8 1 ""
PROMPT 9 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,643
GROUP 5 FG_COL2
@ -1009,7 +1022,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 583 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 18 1 ""
PROMPT 10 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#543/#541
GROUP 5 FG_COL2
@ -1017,7 +1030,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 544 15
BEGIN
KEY "COL3"
PROMPT 9 1 ""
PROMPT 11 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,644
GROUP 5 FG_COL3
@ -1025,7 +1038,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 584 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 18 1 ""
PROMPT 12 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#544/#541
GROUP 5 FG_COL3
@ -1033,7 +1046,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 545 15
BEGIN
KEY "COL4"
PROMPT 10 1 ""
PROMPT 13 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,645
GROUP 5 FG_COL4
@ -1041,7 +1054,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 585 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 18 1 ""
PROMPT 14 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#545/#541
GROUP 5 FG_COL4
@ -1049,7 +1062,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 546 15
BEGIN
KEY "COL5"
PROMPT 11 1 ""
PROMPT 15 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,646
GROUP 5 FG_COL5
@ -1057,7 +1070,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 586 12
BEGIN
KEY "VAL_MEDIO"
PROMPT 18 1 ""
PROMPT 16 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#546/#541
GROUP 5 FG_COL5
@ -1065,7 +1078,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 547 15
BEGIN
KEY "giac"
PROMPT 12 1 ""
PROMPT 17 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,647
GROUP 5 FG_COL6
@ -1861,7 +1874,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 1282 12
BEGIN
KEY "VALMEDIO"
PROMPT 18 1 ""
PROMPT 8 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#1242/#1241
GROUP 12 FG_COL1
@ -1869,7 +1882,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 1243 15
BEGIN
KEY "COL2"
PROMPT 8 1 ""
PROMPT 9 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,1343
GROUP 12 FG_COL2
@ -1877,7 +1890,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 1283 12
BEGIN
KEY "VALMEDIO"
PROMPT 18 1 ""
PROMPT 10 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#1243/#1241
GROUP 12 FG_COL2
@ -1885,7 +1898,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 1244 15
BEGIN
KEY "COL3"
PROMPT 9 1 ""
PROMPT 11 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,1344
GROUP 12 FG_COL3
@ -1893,7 +1906,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 1284 12
BEGIN
KEY "VALMEDIO"
PROMPT 18 1 ""
PROMPT 12 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#1244/#1241
GROUP 12 FG_COL3
@ -1901,7 +1914,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 1245 15
BEGIN
KEY "COL4"
PROMPT 10 1 ""
PROMPT 13 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,1345
GROUP 12 FG_COL4
@ -1909,7 +1922,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 1285 12
BEGIN
KEY "VALMEDIO"
PROMPT 18 1 ""
PROMPT 14 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#1245/#1241
GROUP 12 FG_COL4
@ -1917,7 +1930,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 1246 15
BEGIN
KEY "COL5"
PROMPT 11 1 ""
PROMPT 15 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,1346
GROUP 12 FG_COL5
@ -1925,7 +1938,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 1286 12
BEGIN
KEY "VALMEDIO"
PROMPT 18 1 ""
PROMPT 16 1 ""
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#1246/#1241
GROUP 12 FG_COL5
@ -1933,7 +1946,7 @@ SECTION BODY ODD 1 COLUMNWISE
NUMERO 1247 15
BEGIN
KEY "giac"
PROMPT 12 1 ""
PROMPT 17 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,1347
GROUP 12 FG_COL6
@ -2209,7 +2222,7 @@ SECTION BODY ODD 1 COLUMNWISE
STRINGA 51 20
BEGIN
KEY "CODICE"
PROMPT 2 1 " Deposito"
PROMPT 2 1 "Deposito "
END
STRINGA 50 30
BEGIN
@ -2228,6 +2241,7 @@ SECTION BODY ODD 1 COLUMNWISE
PROMPT 6 1 ""
PICTURE "########,@##"
MESSAGE _USER,VALIDATE_UM,53|ADD,141
GROUP 15
END
NUMERO 42 15
BEGIN
@ -2327,6 +2341,7 @@ SECTION BODY ODD 1 COLUMNWISE
END
END // tot depositi
END // MAGAZZ
SECTION TOT_MAGAZZINO 1 1 1 GROUP
STRINGA 150 30
BEGIN
@ -2357,7 +2372,6 @@ SECTION BODY ODD 1 COLUMNWISE
KEY "VAL1"
PROMPT 7 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,242
GROUP 1
END
NUMERO 182 12
@ -2373,7 +2387,6 @@ SECTION BODY ODD 1 COLUMNWISE
KEY "VAL2"
PROMPT 9 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,243
GROUP 1 FG_COL2
END
NUMERO 183 12
@ -2389,23 +2402,21 @@ SECTION BODY ODD 1 COLUMNWISE
KEY "VAL3"
PROMPT 11 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,244
GROUP 1 FG_COL3
END
NUMERO 184 15
NUMERO 184 12
BEGIN
KEY "VAL1"
PROMPT 12 1 ""
PICTURE "##.###.###.##@"
PICTURE "###.###.##@"
MESSAGE _NUMEXPR,#144/#141
GROUP 1 FG_COL3
END
NUMERO 145 12
NUMERO 145 15
BEGIN
KEY "VAL4"
PROMPT 13 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,245
GROUP 1 FG_COL4
END
NUMERO 185 12
@ -2421,7 +2432,6 @@ SECTION BODY ODD 1 COLUMNWISE
KEY "VAL5"
PROMPT 15 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,246
GROUP 1 FG_COL5
END
NUMERO 186 12
@ -2437,7 +2447,6 @@ SECTION BODY ODD 1 COLUMNWISE
KEY "VAL6"
PROMPT 17 1 ""
PICTURE "##.###.###.##@"
MESSAGE ADD,247
GROUP 1 FG_COL6
END
NUMERO 187 12

View File

@ -21,8 +21,8 @@ END
GENERAL
BEGIN
OFFSET 0 1
FONT "Courier New"
SIZE 10
//FONT "Courier New"
//SIZE 10
END
SECTION HEADER ODD 5
@ -62,11 +62,11 @@ SECTION HEADER ODD 5
END
NUMBER 8 12
BEGIN
PROMPT 57 4 "Prezzo"
PROMPT 63 4 "Prezzo"
END
NUMBER 9 12
BEGIN
PROMPT 69 4 "Valore"
PROMPT 76 4 "Valore"
END
STRINGA 5 80
BEGIN
@ -82,7 +82,7 @@ SECTION BODY ODD 2
MESSAGE RESET,3@
END
STRINGA 101 70
STRINGA 101 150
BEGIN
FLAGS "H"
PROMPT 1 1 ""
@ -154,7 +154,7 @@ SECTION BODY ODD 2
SECTION TOTALI_RAGG_FISC 1 1 1 NUMEXPR #FF_QTARAGGFIS!=0
SECTION HEADER_RAGG_CRONO 1 2 1 NUMEXPR #FF_NUMLINEE=0
STRINGA FF_INFORAGGCRO 48
STRINGA FF_INFORAGGCRO 150
BEGIN
PROMPT 1 1 ""
MESSAGE _USER,INCNUMREGST
@ -165,7 +165,7 @@ SECTION BODY ODD 2
PROMPT 10 1 "Causale: "
FIELD LF_MOVMAG->CODCAUS // == FIELD ALIAS_CAUSALI@->CODTAB
END
STRINGA 101 30
STRINGA 101 50
BEGIN
PROMPT 31 1 ""
FIELD ALIAS_CAUSALI@->S0

View File

@ -1,9 +1,9 @@
[mg]
Data = 08-05-1998
Data = 08-06-1998
Descrizione = Magazzino
Dischi = 1
Moduli = ba,ve9,cg9
Patch = 26
Patch = 53
PostProcess =
PreProcess =
Prezzo(1) = 900,300
@ -17,7 +17,7 @@ Versione = 19980103
[mg0]
File(0) = mg00.bmp
File(1) = mgarea.men
Patch = 26
Patch = 53
Versione = 19980103
[mg1]
@ -26,48 +26,50 @@ File(3) = batbfcg.msk
File(4) = batbgcg.msk
File(5) = batbubi.msk
File(6) = mg01.bmp
File(7) = mg1.exe
File(8) = mg1100.msk
File(7) = mg1.exe|X
File(8) = mg1100.msk|X
File(9) = mg1200.msk
File(10) = mg1400.msk
File(11) = mg3.exe
File(12) = mg3100.msk
File(13) = mg3100a.frm
File(14) = mg3100b.frm
File(15) = mg3200.msk
File(16) = mg3200a.frm
File(17) = mg3200b.frm
File(18) = mg3300.msk
File(19) = mg3300a.frm
File(20) = mg3300b.frm
File(21) = mg3400.msk
File(22) = mg3400a.frm
File(23) = mg3400b.frm
File(24) = mg3500.frm
File(25) = mg3500.msk
File(26) = mg4.exe
File(27) = mg4100.frm
File(28) = mg4100.msk
File(29) = mg4200.msk
File(30) = mg4200a.frm
File(31) = mg4200b.frm
File(32) = mg4300.frm
File(33) = mg4300.msk
File(34) = mgprassi.men
File(35) = tab_fcg.frm
Patch = 26
File(11) = mg3.exe|X
File(12) = mg3100.msk|X
File(13) = mg3100a.frm|X
File(14) = mg3100aa.frm|X
File(15) = mg3100b.frm|X
File(16) = mg3200.msk|X
File(17) = mg3200a.frm|X
File(18) = mg3200b.frm|X
File(19) = mg3300.msk|X
File(20) = mg3300a.frm|X
File(21) = mg3300b.frm|X
File(22) = mg3400.msk
File(23) = mg3400a.frm
File(24) = mg3400b.frm
File(25) = mg3500.frm
File(26) = mg3500.msk
File(27) = mg4.exe|X
File(28) = mg4100.frm|X
File(29) = mg4100.msk
File(30) = mg4200.msk|X
File(31) = mg4200a.frm|X
File(32) = mg4200aa.frm|X
File(33) = mg4200b.frm|X
File(34) = mg4300.frm
File(35) = mg4300.msk
File(36) = mgprassi.men
File(37) = tab_fcg.frm
Patch = 53
Versione = 19980103
[mg9]
File(36) = mgprassi.hlp|X
File(37) = recdesc\f109.dir
File(38) = recdesc\f109.trr
File(39) = recdesc\f110.dir
File(40) = recdesc\f110.trr
File(41) = recdesc\f111.dir
File(42) = recdesc\f111.trr
File(43) = recdesc\f114.dir
File(44) = recdesc\f114.trr
Patch = 26
File(38) = mgprassi.hlp
File(39) = recdesc\f109.dir
File(40) = recdesc\f109.trr
File(41) = recdesc\f110.dir
File(42) = recdesc\f110.trr
File(43) = recdesc\f111.dir
File(44) = recdesc\f111.trr
File(45) = recdesc\f114.dir
File(46) = recdesc\f114.trr
Patch = 53
Versione = 19980103

View File

@ -52,9 +52,9 @@ class TSheet_field;
typedef enum {
riga_nongenerata=' ',
riga_automatica='A',
riga_dadocumento='D'
riga_dadocumento='D', // derivata da documento
riga_automatica='A', // generata da causale collegata
riga_nongenerata=' ' // immissione direttta del mov.
} TTipo_rigamovmag;
char * Nome_valorizz[];
@ -64,6 +64,7 @@ typedef enum {
valorizz_przlist,
valorizz_coststd,
valorizz_costmedio,
valorizz_costmediopond,
valorizz_FIFOa,
valorizz_LIFOa,
valorizz_FIFO,
@ -155,12 +156,15 @@ public:
// Si suppone che i saldi siano coerenti con i movimenti (effettuare una rebuild_balances()
// di oldes.
bool riporta_saldi(const char * oldes, const char* newes, const TTipo_valorizz tipo, const char * catven ,const char * codlist);
// La seguente funzione azzera tutti i saldi di mgazzino per l'esercizio cod_es
bool azzera_saldi(const char * cod_es);
real ultimo_costo(const char * annoes) const;
real media_costi(const char * annoes) const;
real prezzo_listino(const char * annoes, const char * catven ,const char * codlist) const;
real costo_standard(const char * annoes) const;
real costo_medio(const char * annoes, const char * codmag, const char * livello) const;
real costo_mediopond(const char * annoes, const char * codmag, const char * livello) const;
real LIFO_annuale(const char * annoes, const char * codmag, const char * livello,
bool giacenza_effettiva = TRUE, bool valorizza_componenti = TRUE) const;
real FIFO_annuale(const char * annoes, const char * codmag, const char * livello,
@ -222,6 +226,8 @@ class TCodice_livelli : public TObject
{
long _last_firm;
bool _autoinsert[MANY_MAG_LEV];
bool _codiceadata[MANY_MAG_LEV];
int _code_length[MANY_MAG_LEV];
TString _name[MANY_MAG_LEV];
TString _picture[MANY_MAG_LEV];
@ -257,8 +263,11 @@ public:
const int code_start(int levnum) const ;
// Ritorna la lunghezza del codice compatto fino a quel livello
const int packed_length(int levnum) const ;
// Restituisce se esiste il gruppo dato il codice compatto
const int group_search(const char * packed_code, int levnum) const;
// Restituisce la descrizione del gruppo dato il codice compatto
const TString & group_descr(const char * packed_code, int levnum) const;
// Setta la colonna del campo livello codice di uno sheet in base alle abilitazioni
void set_sheetcolumn(TSheet_field &fld_righe,int field, int lev) const;
@ -270,6 +279,10 @@ public:
const char * code_format(int levnum=-1) const ;
// Restituisce se <p codepart> e' riconosciuto come codice articolo (default==ultimo livello)
bool fit_to_format(const char *codepart, int levnum=-1) const ;
// Ritorna se il livello è abilitato all'autoinserimento
const bool autoinsert (int levnum) const ;
// Ritorna se il codice del livello rappresenta una data
const bool codiceadata(int levnum) const ;
/* bool has_mandchars(const char * pattern);
bool has_opzchars(const char * pattern);
@ -366,9 +379,15 @@ public:
const TString & raggfisc() {return get("S8");}
const TString & caus_collegata() {return get("S9");}
int sgn(TTipo_saldomag fieldname) ;
bool update_qta() {return !get_bool("B1");}
bool update_val() {return !get_bool("B0");}
bool update_ultcos() {return get_bool("B2");}
bool update_qta() const {return !get_bool("B1");}
bool update_val() const {return !get_bool("B0");}
bool update_ultcos() const {return get_bool("B2");}
bool esplodente() const {return get_bool("B3");}
const TString & default_magdep() const {return get("S10");}
bool has_default_mag() const {return get("S10")[0]>' ';}
bool has_default_dep() const {return get("S10")[3]>' ';}
const char *default_mag() const {return get("S10").sub(1,3);}
const char *default_dep() const {return get("S10").sub(4,5);}
bool is_fiscale();
TCausale_magazzino(const char * codice);
virtual ~TCausale_magazzino() {}
@ -425,6 +444,12 @@ protected:
// @member: restituisce il prezzo della riga automatica accoppiata a <par r>
virtual const char * prezzo_rauto(int r)
{return NULL;}
// aggiunge le righe automatiche e da esplosione
void add_extrarows() const;
// aggiunge le righe automatiche
bool add_autorows() const;
// aggiunge le righe da esplosione
bool add_explrows() const;
public:
// IO ad alto livello
const char *get_next_key() ;
@ -444,7 +469,10 @@ public:
};
bool rebuild_balances(const TString16 annoes/*, bool reset_giac=FALSE*/);
bool rebuild_balances(const TString16 annoes,
const TTipo_valorizz tipo=valorizz_costmediopond,
const char* catven=NULL,
const char* codlis=NULL);
#define FORM_MAXGIACLEV 4 // numero di livelli giacenza nel form
#define FORM_MAXARTLEV 8 // numero di livelli codice nel form
@ -593,3 +621,4 @@ public:
};
#endif //__MGLIB_H

View File

@ -127,7 +127,7 @@ bool TStateset::is_empty() const
bool TStateset::is_member(int e) const
{
return ((e< MAXSTATES && e>=0) ? (_container[e] != 0) : FALSE );
return (e >= 0 && e < MAXSTATES) ? (_container[e] != 0) : FALSE;
}
int TStateset::get_first()
@ -622,6 +622,8 @@ void TCodice_livelli::load(bool enabled, const char *tabname,const char *tabgrp)
_name[i]="";
_code_length[i]=0;
_picture[i]="";
_autoinsert[i]=FALSE;
_codiceadata[i]=FALSE;
}
if (_lev_enabled)
{
@ -630,6 +632,8 @@ void TCodice_livelli::load(bool enabled, const char *tabname,const char *tabgrp)
{
_name[i]=_tabformato.get("S0");
_picture[i]=_tabformato.get("S1");
_autoinsert[i]=_tabformato.get_bool("B0");
_codiceadata[i]=_tabformato.get_bool("B1");
_code_length[i]=TMetachar::maxstrlen(_picture[i]);
_last_level=i+1;
e = _tabformato.next();
@ -710,6 +714,22 @@ const TString & TCodice_livelli::name(int levnum) const
return(_name[0]); // empty
}
const bool TCodice_livelli::autoinsert(int levnum) const
{
if (levnum<=MANY_MAG_LEV && levnum>=0)
return _autoinsert[levnum];
else
return FALSE;
}
const bool TCodice_livelli::codiceadata(int levnum) const
{
if (levnum<=MANY_MAG_LEV && levnum>=0)
return _codiceadata[levnum];
else
return FALSE;
}
const TString & TCodice_livelli::picture(int levnum) const
{
if (levnum<=MANY_MAG_LEV && levnum>0)
@ -754,6 +774,13 @@ const TString & TCodice_livelli::group_descr(const char * packed_code, int levnu
return _gruppi->decode(build_tabcode(packed_code,levnum));
}
const int TCodice_livelli::group_search(const char * packed_code, int levnum) const
{
_gruppi->decode(build_tabcode(packed_code,levnum));
return _gruppi->io_result();
}
void TCodice_livelli::set_sheetcolumn(TSheet_field &fld_righe,int field, int lev) const
{
if (enabled(lev))

View File

@ -5,9 +5,14 @@
#include <mask.h>
#include <progind.h>
#include <utility.h>
#include <tabutil.h>
#include "mglib.h"
#include "anamag.h"
#include "mag.h"
#ifndef __CGLIB01_H
#include "..\cg\cglib01.h"
#include "..\ve\veconf.h"
@ -16,7 +21,8 @@
char * Nome_valorizz[]=
{
"Ultimo costo", "Media ultimi costi", "Prezzo di listino",
"Costo standard", "Costo medio" ,
"Costo standard", "Costo medio acquisto" ,
"Costo medio ponderato" ,
"FIFO annuale", "LIFO annuale",
"FIFO", "LIFO",
"FIFO Ragionieristico", "LIFO Ragionieristico"
@ -369,6 +375,34 @@ TRecord_array & TArticolo_giacenza::storico(const char * annoesrif) const
HIDDEN int last_esercizio = -1;
bool TArticolo_giacenza::azzera_saldi(const char * cod_es)
{
TRecord_array& rec_arr = TArticolo_giacenza::mag(cod_es);
const int last = rec_arr.last_row();
for (int r = last;r > 0 ; r = rec_arr.pred_row(r)) // Scorre le righe
{
TRectype& mag = rec_arr[r];
mag.put(MAG_GIAC,0);
mag.put(MAG_RIM,0);mag.put(MAG_VALRIM,0);
mag.put(MAG_ACQ,0);mag.put(MAG_VALACQ,0);
mag.put(MAG_ENT,0);mag.put(MAG_VALENT,0);
mag.put(MAG_VEN,0);mag.put(MAG_VALVEN,0);
mag.put(MAG_USC,0);mag.put(MAG_VALUSC,0);
mag.put(MAG_ORDF,0);mag.put(MAG_VALORDF,0);
mag.put(MAG_ORDC,0);mag.put(MAG_VALORDC,0);
mag.put(MAG_SCARTI,0);mag.put(MAG_VALSCARTI,0);
mag.put(MAG_PRODCOMP,0);
mag.put(MAG_PRODFIN,0);
mag.put(MAG_INCL,0);
mag.put(MAG_ACL,0);
mag.put(MAG_NLABEL,0);
}
return rec_arr.write(TRUE) == NOERR;
}
bool TArticolo_giacenza::riporta_saldi(const char * oldes, const char* newes, const TTipo_valorizz tipo, const char* catven, const char* codlis)
{
TString codes(newes), mag, liv;
@ -380,7 +414,7 @@ bool TArticolo_giacenza::riporta_saldi(const char * oldes, const char* newes, co
for (int r = last;r > 0 ; r = rec_arr.pred_row(r)) // Scorre le righe
{
TRectype& rec = rec_arr[r];
mag = rec.get(MAG_CODMAG);
mag = rec.get(MAG_CODMAG); mag.cut(3);
liv = rec.get(MAG_LIVELLO);
giac = rec.get_real(MAG_GIAC);
inpf = rec.get_real(MAG_PRODFIN);
@ -393,6 +427,9 @@ bool TArticolo_giacenza::riporta_saldi(const char * oldes, const char* newes, co
case valorizz_costmedio:
val = costo_medio(oldes, mag, liv);
break;
case valorizz_costmediopond:
val = costo_mediopond(oldes, mag, liv);
break;
case valorizz_ultcos:
val = ultimo_costo(oldes);
break;
@ -519,8 +556,12 @@ real TArticolo_giacenza::costo_medio(const char * annoes, const char * codmag, c
{
real acq;
real valacq;
CHECK(strlen(codmag)<=3, "Non è più possibile avere valorizzazione a livello di deposito");
TRecord_array & rmag = mag(annoes);
for (int i = find_mag(annoes, codmag, livello); i > 0; i = find_mag(annoes, codmag, livello, i))
for (int i = find_mag(annoes, codmag, livello); i > 0;
i = find_mag(annoes, codmag, livello, i))
{
const TRectype & rec = rmag.row(i);
@ -530,10 +571,34 @@ real TArticolo_giacenza::costo_medio(const char * annoes, const char * codmag, c
return acq == ZERO ? costo_standard(annoes) : valacq / acq;
}
// costo medio ponderato per periodi pari alla durata dell'esercizio
real TArticolo_giacenza::costo_mediopond(const char * annoes, const char * codmag, const char * livello) const
{
real acq;
real valacq;
CHECK(strlen(codmag)<=3, "Non è più possibile avere valorizzazione a livello di deposito");
TRecord_array & rmag = mag(annoes);
for (int i = find_mag(annoes, codmag, livello); i > 0; i = find_mag(annoes, codmag, livello, i))
{
const TRectype & rec = rmag.row(i);
acq += rec.get_real(MAG_ACQ) ;
acq += rec.get_real(MAG_RIM) ;
valacq += rec.get_real(MAG_VALACQ);
valacq += rec.get_real(MAG_VALRIM);
}
return acq == ZERO ? costo_standard(annoes) : valacq / acq;
}
real TArticolo_giacenza::LIFO_annuale(const char * annoes, const char * codmag, const char * livello,
bool giacenza_effettiva, bool valorizza_componenti) const
bool giac_eff, bool valorizza_componenti) const
{
CHECK(strlen(codmag)<=3, "Non è più possibile avere valorizzazione a livello di deposito");
real rim;
real valrim;
real acq;
@ -548,7 +613,7 @@ real TArticolo_giacenza::LIFO_annuale(const char * annoes, const char * codmag,
valrim += rec.get_real(MAG_VALRIM);
acq += rec.get_real(MAG_ACQ);
valacq += rec.get_real(MAG_VALACQ);
giacenza += giacenza_corretta(rec,giacenza_effettiva,valorizza_componenti);
giacenza += giacenza_corretta(rec,giac_eff,valorizza_componenti);
}
if (giacenza <= ZERO)
return ZERO;
@ -558,8 +623,9 @@ real TArticolo_giacenza::LIFO_annuale(const char * annoes, const char * codmag,
}
real TArticolo_giacenza::FIFO_annuale(const char * annoes, const char * codmag, const char * livello,
bool giacenza_effettiva, bool valorizza_componenti) const
bool giac_eff, bool valorizza_componenti) const
{
CHECK(strlen(codmag)<=3, "Non è più possibile avere valorizzazione a livello di deposito");
real rim;
real valrim;
real acq;
@ -574,14 +640,7 @@ real TArticolo_giacenza::FIFO_annuale(const char * annoes, const char * codmag,
valrim += rec.get_real(MAG_VALRIM);
acq += rec.get_real(MAG_ACQ);
valacq += rec.get_real(MAG_VALACQ);
giacenza += rec.get_real(MAG_GIAC);
if (giacenza_effettiva)
{
giacenza += rec.get_real(MAG_INCL);
giacenza -= rec.get_real(MAG_ACL);
giacenza += valorizza_componenti ? rec.get_real(MAG_PRODCOMP) : rec.get_real(MAG_PRODFIN);
}
giacenza += giacenza_corretta(rec,giac_eff,valorizza_componenti);
}
if (giacenza <= ZERO)
return ZERO;
@ -592,8 +651,9 @@ real TArticolo_giacenza::FIFO_annuale(const char * annoes, const char * codmag,
}
real TArticolo_giacenza::LIFO(const char * annoes, const char * codmag, const char * livello,
bool giacenza_effettiva, bool valorizza_componenti) const
bool giac_eff, bool valorizza_componenti) const
{
CHECK(strlen(codmag)<=3, "Non è più possibile avere valorizzazione a livello di deposito");
real rim;
real valrim;
real acq;
@ -608,14 +668,7 @@ real TArticolo_giacenza::LIFO(const char * annoes, const char * codmag, const ch
valrim += rec.get_real(MAG_VALRIM);
acq += rec.get_real(MAG_ACQ);
valacq += rec.get_real(MAG_VALACQ);
giacenza += rec.get_real(MAG_GIAC);
if (giacenza_effettiva)
{
giacenza += rec.get_real(MAG_INCL);
giacenza -= rec.get_real(MAG_ACL);
giacenza += valorizza_componenti ? rec.get_real(MAG_PRODCOMP) : rec.get_real(MAG_PRODFIN);
}
giacenza += giacenza_corretta(rec,giac_eff,valorizza_componenti);
}
if (giacenza <= ZERO)
@ -647,8 +700,9 @@ real TArticolo_giacenza::LIFO(const char * annoes, const char * codmag, const ch
}
real TArticolo_giacenza::FIFO(const char * annoes, const char * codmag, const char * livello,
bool giacenza_effettiva, bool valorizza_componenti) const
bool giac_eff, bool valorizza_componenti) const
{
CHECK(strlen(codmag)<=3, "Non è più possibile avere valorizzazione a livello di deposito");
real rim;
real valrim;
real acq;
@ -663,14 +717,7 @@ real TArticolo_giacenza::FIFO(const char * annoes, const char * codmag, const ch
valrim += rec.get_real(MAG_VALRIM);
acq += rec.get_real(MAG_ACQ);
valacq += rec.get_real(MAG_VALACQ);
giacenza += rec.get_real(MAG_GIAC);
if (giacenza_effettiva)
{
giacenza += rec.get_real(MAG_INCL);
giacenza -= rec.get_real(MAG_ACL);
giacenza += valorizza_componenti ? rec.get_real(MAG_PRODCOMP) : rec.get_real(MAG_PRODFIN);
}
giacenza += giacenza_corretta(rec,giac_eff,valorizza_componenti);
}
if (giacenza <= ZERO)
@ -711,22 +758,25 @@ real TArticolo_giacenza::FIFO(const char * annoes, const char * codmag, const ch
}
real TArticolo_giacenza::FIFO_ragionieristico(const char * annoes, const char * codmag, const char * livello,
bool giacenza_effettiva, bool valorizza_componenti) const
bool giac_eff, bool valorizza_componenti) const
{
CHECK(strlen(codmag)<=3, "Non è più possibile avere valorizzazione a livello di deposito");
return ZERO; // da implementare
}
real TArticolo_giacenza::LIFO_ragionieristico(const char * annoes, const char * codmag, const char * livello,
bool giacenza_effettiva, bool valorizza_componenti) const
bool giac_eff, bool valorizza_componenti) const
{
CHECK(strlen(codmag)<=3, "Non è più possibile avere valorizzazione a livello di deposito");
return ZERO; // da implementare
}
real TArticolo_giacenza::giacenza_corretta(const TRectype & rec ,bool giacenza_effettiva,bool valorizza_componenti) const
// calcola la giacenza corretta dai campi Conto Lavoro e Produzione
real TArticolo_giacenza::giacenza_corretta(const TRectype & rec ,bool giac_eff,bool valorizza_componenti) const
{
CHECK(rec.num() == LF_MAG, "Il record passato deve essere di LF_MAG");
real giacenza(rec.get_real(MAG_GIAC));
if (giacenza_effettiva)
if (giac_eff)
{
giacenza += rec.get_real(MAG_INCL);
giacenza -= rec.get_real(MAG_ACL);
@ -924,662 +974,3 @@ TCondizione_vendita::TCondizione_vendita(TConfig * ditta,
{
}
// *********************
// movimenti di magazzino
// causali
int TCausale_magazzino::sgn(TTipo_saldomag tiposaldo)
{
static TString80 segni;
segni=get("S2");
switch (tiposaldo)
{
case s_giac:
return atoi(segni.mid(0,2));
case s_acq:
return atoi(segni.mid(2,2));
case s_ent:
return atoi(segni.mid(4,2));
case s_ven:
return atoi(segni.mid(6,2));
case s_usc:
return atoi(segni.mid(8,2));
case s_ordc:
return atoi(segni.mid(10,2));
case s_ordf:
return atoi(segni.mid(12,2));
case s_incl:
return atoi(segni.mid(14,2));
case s_acl:
return atoi(segni.mid(16,2));
case s_prodc:
return atoi(segni.mid(18,2));
case s_prodf:
return atoi(segni.mid(20,2));
case s_rim:
return atoi(segni.mid(22,2));
case s_scart:
return atoi(segni.mid(24,2));
case s_label:
return atoi(segni.mid(26,2));
case s_user1:
return atoi(segni.mid(28,2));
case s_user2:
return atoi(segni.mid(30,2));
case s_user3:
return atoi(segni.mid(32,2));
case s_user4:
return atoi(segni.mid(34,2));
case s_user5:
return atoi(segni.mid(36,2));
case s_user6:
return atoi(segni.mid(38,2));
default:
return 0;
}
}
bool TCausale_magazzino::is_fiscale()
{
return (tipomov()=='S' || tipomov()=='C' );
}
TCausale_magazzino::TCausale_magazzino(const char * codice):
TRectype(LF_TABCOM)
{
TTable f("%CAU");
settab("CAU");
put("CODTAB", codice);
if (TRectype::read(f) != NOERR)
zero();
}
// movimenti
// dati della linea di movimento di magazzino
class TLine_movmag : public TObject
{
TString16 _codcaus;
TString16 _um;
real _quant;
real _prezzo;
public:
const TString16 &codcaus() const {return _codcaus;}
const TString16 &um() const {return _um;}
const real &quant() const {return _quant;}
const real &prezzo() const {return _prezzo;}
void set(const TString16 cau,const TString16 um,const real q, const real p);
int operator==(TLine_movmag &);
virtual TObject* dup() const {return new TLine_movmag(*this);};
TLine_movmag() {};
TLine_movmag(const TLine_movmag &);
virtual ~TLine_movmag() {};
};
void TLine_movmag ::set(const TString16 cau,const TString16 um,const real q, const real p)
{
_codcaus=cau;
_um=um;
_quant=q;
_prezzo=p;
}
TLine_movmag ::TLine_movmag(const TLine_movmag &l)
{
_codcaus=l._codcaus;
_um=l._um;
_quant=l._quant;
_prezzo=l._prezzo;
}
int TLine_movmag::operator==(TLine_movmag &l)
{
return (_codcaus==l._codcaus)&&(_um==l._um)&&(_quant==l._quant)&&(_prezzo==l._prezzo);
}
// ********************************
// TMov_mag
TRecord_cache TMov_mag::cache_causali("%CAU");
TMov_mag::TMov_mag() :
TMultiple_rectype(LF_MOVMAG),
lines_to_add(), lines_to_subtract()
{
add_file(LF_RMOVMAG,"NRIG");
}
TMov_mag::~TMov_mag()
{
}
void TMov_mag::zero(char c)
{
TMultiple_rectype::zero(c);
lines_to_add.destroy();
lines_to_subtract.destroy();
}
// valuta il valore della chiave per un nuovo record
bool TMov_mag::renum()
{
put("NUMREG",get_next_key());
return TRUE;
}
// copia la chiave dal file principale a quello delle righe
void TMov_mag::set_body_key(TRectype & rowrec)
{
rowrec.put("NUMREG",get("NUMREG"));
}
void TMov_mag::synchronize_bodies()
{
TMultiple_rectype::synchronize_bodies();
// reset delle strutture per il controlli delle variazioni dei saldi
if (autoload_enabled())
{
_annoes=get("ANNOES");
lines_to_add.destroy();
lines_to_subtract.destroy();
const int nrows = rows();
for (int i = 1; i<= nrows; i++)
line_deleted(line2key(i), line2data(i));
}
}
int TMov_mag::remove(TBaseisamfile& f) const
{
int res;
if ((res=TMultiple_rectype::remove(f))==NOERR )
// effettua la variazione dei saldi
((TMov_mag *)this)->update_balances();
return res;
}
void TMov_mag::add_automatiche()
{
for (int r = rows(); r > 0; r--)
{
TRecord_array & b = body();
TRectype & row = b[r];
TString16 codcaus(row.get(RMOVMAG_CODCAUS));
if (codcaus.empty())
codcaus=get(MOVMAG_CODCAUS);
TCausale_magazzino & cau=(TCausale_magazzino & )cache_causali.get(codcaus);
codcaus=cau.caus_collegata();
if (codcaus.not_empty())
{
// deve esserci una riga collegata
if (!b.exist(r + 1) || b[r + 1].get_char(RMOVMAG_TIPORIGA) != riga_automatica)
{
// manca, la inserisco
TRectype * linea_auto = new TRectype(row);
const char * codmag = codmag_rauto(r);
if (codmag != NULL)
linea_auto->put(RMOVMAG_CODMAG, codmag);
const char * prezzo = prezzo_rauto(r);
if (prezzo != NULL)
linea_auto->put(RMOVMAG_PREZZO, prezzo);
linea_auto->put(RMOVMAG_NRIG, r+1);
linea_auto->put(RMOVMAG_TIPORIGA, (char) riga_automatica);
linea_auto->put(RMOVMAG_CODCAUS, codcaus);
b.insert_row(linea_auto);
}
}
} // ciclo righe
}
int TMov_mag::write(TBaseisamfile& f) const
{
int res;
TMov_mag &myself=((TMov_mag &)*this);
myself.add_automatiche();
const int nrows = rows();
for (int i = 1; i <= nrows; i++)
myself.line_inserted(line2key(i), line2data(i));
if ((res=TMultiple_rectype::write(f))==NOERR )
// effettua la variazione dei saldi
myself.update_balances();
return res;
}
int TMov_mag::rewrite(TBaseisamfile& f) const
{
int res;
((TMov_mag *)this)->add_automatiche();
// memorizza le variazioni
const int nrows = rows();
for (int i = 1; i <= nrows; i++)
((TMov_mag *)this)->line_inserted(line2key(i), line2data(i));
if ((res=TMultiple_rectype::rewrite(f))==NOERR )
// effettua la variazione dei saldi
((TMov_mag *)this)->update_balances();
return res;
}
const char *TMov_mag::get_next_key()
{
static TString16 nextcod;
TLocalisamfile f(LF_MOVMAG);
f.last();
int a=atoi(f.get(MOVMAG_NUMREG))+1;
return nextcod.format("%d",a);
}
//*******
// gestione delle variazione dei saldi
//
//
int TMov_mag::force_update_bal()
{
int res;
// reset delle strutture per il controlli delle variazioni dei saldi
_annoes=get(MOVMAG_ANNOES);
lines_to_add.destroy();
lines_to_subtract.destroy();
// memorizza le variazioni
const int nrows = rows();
for (int i= 1; i <= nrows; i++)
line_inserted(line2key(i), line2data(i));
res=update_balances();
return res;
}
// restituisce il valore dei dati
TLine_movmag & TMov_mag::line2data(int nrig) const
{
static TLine_movmag line;
TRecord_array & b = body();
line.set(b.row(nrig).get(RMOVMAG_CODCAUS).blank() ? get(MOVMAG_CODCAUS) : b.row(nrig).get(RMOVMAG_CODCAUS) ,
b.row(nrig).get(RMOVMAG_UM),
b.row(nrig).get_real(RMOVMAG_QUANT),
b.row(nrig).get_real(RMOVMAG_PREZZO));
return line;
}
TToken_string & TMov_mag::line2key(int numriga) const
{
static TToken_string _key;
TRecord_array & b = body();
TString16 nr;
nr << numriga;
_key.cut(0);
_key.add(b.row(numriga).get(RMOVMAG_CODART));
_key.add(b.row(numriga).get(RMOVMAG_CODMAG));
_key.add(b.row(numriga).get(RMOVMAG_LIVGIAC));
_key.add(nr);
return _key;
}
TString TMov_mag::key2field(TToken_string &key,const char *fieldname)
{
if (strcmp(fieldname,"CODART")==0)
return key.get(0);
if (strcmp(fieldname,"CODMAG")==0)
return key.get(1);
if (strcmp(fieldname,"LIVGIAC")==0)
return key.get(2);
CHECKS(FALSE, "Nome di campo non appartenente al file righe mov ", fieldname);
return "";
}
int TMov_mag::line_inserted(TToken_string &k,TLine_movmag &r)
{
if (_annoes != get("ANNOES"))
lines_to_add.add(k,r);
else
{
if (lines_to_subtract.is_key(k)&& (TLine_movmag &)lines_to_subtract[k]==r)
// modifica annullata
lines_to_subtract.remove(k);
else
// linea modificata
lines_to_add.add(k,r);
}
return 0;
}
int TMov_mag::line_deleted(TToken_string &k,TLine_movmag &r)
{
if (_annoes != get("ANNOES"))
lines_to_subtract.add(k,r);
else
{
if (lines_to_add.is_key(k)&& r==(TLine_movmag &)lines_to_add[k] )
// modifica annullata
lines_to_add.remove(k);
else
// linea modificata
lines_to_subtract.add(k,r);
}
return 0;
}
bool TMov_mag::unlock_anamag(const char *codart)
{
TLocalisamfile anamag(LF_ANAMAG);
anamag.put("CODART",codart);
return (anamag.read(_isequal,_unlock)==NOERR);
}
bool TMov_mag::lock_anamag(const char *codart)
{
TLocalisamfile anamag(LF_ANAMAG);
anamag.put("CODART",codart);
bool insert_new=TRUE;
TString mess;
mess << "Il record di anagrafica dell'articolo ''"<< codart << "'' risulta essere già in uso.\n Interrompo ?";
TTimed_breakbox bbox((const char *)mess,10);
do
{
if (anamag.read(_isequal,_testandlock)==NOERR)
return TRUE;
} while (bbox.run()!=K_ESC);
return FALSE;
}
void TMov_mag::giac_putkey(TLocalisamfile & mag,TString16 annoes,TToken_string curr_key)
{
mag.zero(' ');
mag.put("ANNOES",annoes);
mag.put("CODMAG",key2field(curr_key,"CODMAG"));
mag.put("CODART",key2field(curr_key,"CODART"));
mag.put("LIVELLO",key2field(curr_key,"LIVGIAC"));
}
// aggiorna tutti i saldi in base alle modifiche fatte.
// il lock su anagrafica dovrebbe garantire il lock su tutte le
// giacenze dell'articolo
int TMov_mag::update_balances()
{
bool updated_bal=TRUE;
TLocalisamfile mag(LF_MAG);
mag.setkey(2);
TString_array keys_to_add,keys_to_remove;
((TMov_mag *)this)->lines_to_add.get_keys(keys_to_add);
((TMov_mag *)this)->lines_to_subtract.get_keys(keys_to_remove);
// aggiunge i saldi nuovi
keys_to_add.sort();
TToken_string * curr_key=(TToken_string *)keys_to_add.first_item();
while (curr_key)
{
curr_art.read((const char *)key2field(*curr_key,"CODART"));
if (curr_art.lock_and_prompt())
{
// lock gained
TLine_movmag & line_mov=(TLine_movmag &)lines_to_add[*curr_key];
TCausale_magazzino & causmag=(TCausale_magazzino &)cache_causali.get(line_mov.codcaus());
if (causmag.update_ultcos())
{
curr_art.update_ultcosti(line_mov.prezzo(),get_date("DATACOMP"));
curr_art.rewrite();
}
giac_putkey(mag,get("ANNOES"),*curr_key);
if (mag.read()!=NOERR)
{
// non trovato: aggiungo
giac_putkey(mag,get("ANNOES"),*curr_key);
mag.put("NRIGA",1+curr_art.mag(get("ANNOES")).rows());
mag.write();
}
// modifica questo record (e lo sblocca)
update_balances(mag.curr(), line_mov, +1);
/*// ottimizzazione :(cerca di sfruttare la lettura fatta per un eventuale saldo vecchio)
// ciò causa la modifica dell'oggetto TMov_mag (il metodo non è più const)
if (_annoes == get("ANNOES")
&& lines_to_subtract.is_key(*curr_key)) {
update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*curr_key],-1);
((TMov_mag *)this)->lines_to_add.remove(*curr_key);
((TMov_mag *)this)->lines_to_subtract.remove(*curr_key);
}*/
mag.rewrite();
// conclude la TRANSAZIONE prima di sbloccare il record dell'articolo
TToken_string *rem_key=(TToken_string *)keys_to_remove.first_item();
while ( rem_key)
{
if (key2field(*rem_key,"CODART")==key2field(*curr_key,"CODART")) {
giac_putkey(mag,_annoes,*rem_key);
if (mag.read()==NOERR)
{
update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*rem_key],-1);
mag.rewrite();
}
keys_to_remove.remove_item();
}
rem_key=(TToken_string *)keys_to_remove.succ_item();
}
curr_art.unlock();
}
else
updated_bal=FALSE;
curr_key=(TToken_string *)keys_to_add.succ_item();
}
// togli i saldi vecchi
curr_key=(TToken_string *)keys_to_remove.first_item();
while (curr_key)
{
curr_art.read((const char *)key2field(*curr_key,"CODART"));
if (curr_art.lock_and_prompt())
{
giac_putkey(mag,_annoes,*curr_key);
// modifica questo record (e lo sblocca)
if (mag.read()==NOERR)
{
update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*curr_key],-1);
mag.rewrite();
}
curr_art.unlock();
}
else
updated_bal=FALSE;
curr_key=(TToken_string *)keys_to_remove.succ_item();
}
if (!updated_bal)
{
// saldi non aggiornati
warning_box("I saldi di magazzino non sono stati del tutto aggiornati. \nProcedere ad una operazione di ''Ricostruzione saldi''");
}
return updated_bal;
}
// aggiorna i saldi del record corrente
// in base alla causale e alla modifica fatta (con segno + o -)
int TMov_mag::update_balances(TRectype & magrec, const TLine_movmag &l,int rett_sign)
{
TCausale_magazzino & caus=(TCausale_magazzino &)cache_causali.get(l.codcaus());
TLocalisamfile umart(LF_UMART);
real diff,diff_val;
umart.setkey(2);
umart.put(UMART_CODART,magrec.get(MAG_CODART));
umart.put(UMART_UM , l.um());
umart.read();
real fc=umart.get_real("FC");
diff=((real)rett_sign) * l.quant() * fc;
diff_val= ((real)rett_sign) * l.quant() * l.prezzo();
if (caus.update_qta())
{
update_balance(magrec,"GIAC",diff* (real)caus.sgn(s_giac)); // update ..
update_balance(magrec,"ACQ",diff* (real)caus.sgn(s_acq)); // update ..
update_balance(magrec,"ENT",diff* (real)caus.sgn(s_ent));
update_balance(magrec,"VEN",diff* (real)caus.sgn(s_ven));
update_balance(magrec,"USC",diff* (real)caus.sgn(s_usc));
update_balance(magrec,"ORDC",diff* (real)caus.sgn(s_ordc));
update_balance(magrec,"ORDF",diff* (real)caus.sgn(s_ordf));
update_balance(magrec,"RIM",diff* (real)caus.sgn(s_rim));
update_balance(magrec,"SCARTI",diff* (real)caus.sgn(s_scart));
update_balance(magrec,"INCL",diff* (real)caus.sgn(s_incl));
update_balance(magrec,"ACL",diff* (real)caus.sgn(s_acl));
update_balance(magrec,"PRODCOMP",diff* (real)caus.sgn(s_prodc));
update_balance(magrec,"PRODFIN",diff* (real)caus.sgn(s_prodf));
update_balance(magrec,"NLABEL",diff* (real)caus.sgn(s_label));
update_balance(magrec,"USER1",diff* (real)caus.sgn(s_user1));
update_balance(magrec,"USER2",diff* (real)caus.sgn(s_user2));
update_balance(magrec,"USER3",diff* (real)caus.sgn(s_user3));
update_balance(magrec,"USER4",diff* (real)caus.sgn(s_user4));
update_balance(magrec,"USER5",diff* (real)caus.sgn(s_user5));
update_balance(magrec,"USER6",diff* (real)caus.sgn(s_user6));
}
if (caus.update_val())
{
update_balance(magrec,"VALACQ",diff_val* (real)caus.sgn(s_acq)); // update ..
update_balance(magrec,"VALENT",diff_val* (real)caus.sgn(s_ent));
update_balance(magrec,"VALVEN",diff_val* (real)caus.sgn(s_ven));
update_balance(magrec,"VALUSC",diff_val* (real)caus.sgn(s_usc));
update_balance(magrec,"VALORDC",diff_val* (real)caus.sgn(s_ordc));
update_balance(magrec,"VALORDF",diff_val* (real)caus.sgn(s_ordf));
update_balance(magrec,"VALRIM",diff_val* (real)caus.sgn(s_rim));
update_balance(magrec,"VALSCARTI",diff_val* (real)caus.sgn(s_scart));
update_balance(magrec,"USERVAL1",diff* (real)caus.sgn(s_user1));
update_balance(magrec,"USERVAL2",diff* (real)caus.sgn(s_user2));
update_balance(magrec,"USERVAL3",diff* (real)caus.sgn(s_user3));
update_balance(magrec,"USERVAL4",diff* (real)caus.sgn(s_user4));
update_balance(magrec,"USERVAL5",diff* (real)caus.sgn(s_user5));
update_balance(magrec,"USERVAL6",diff* (real)caus.sgn(s_user6));
}
return 0;
}
void TMov_mag::update_balance(TRectype & magrec, const char * fieldname, real diff) const
{
magrec.put(fieldname,magrec.get_real(fieldname)+diff);
}
HIDDEN TEsercizi_contabili _esercizi;
int TMov_mag::codice_esercizio(TDate &d)
{
return _esercizi.date2esc(d);
}
//**********************
bool rebuild_balances(const TString16 annoes/*, bool reset_giac*/)
{
TArray used_files;
used_files.add(new TLocalisamfile(LF_RMOVMAG),LF_RMOVMAG);
used_files.add(new TLocalisamfile(LF_MOVMAG),LF_MOVMAG);
used_files.add(new TTable("%CAU"),5);
TMov_mag * m_m= new TMov_mag; // record del movimento di magazzino
// relazione con un solo file (LF_MOVMAG) ma col record Head_Body
TRelation rel(LF_MOVMAG);
rel.lfile().set_curr(m_m);
bool ok = TRUE;
TLocalisamfile mag(LF_MAG);
// Il flag di reset delle giacenze viene impostato in base alla chiusura dell'esercizio
// precedente
// Aggiorna il cazzillo per caricare eventuali date di chiusura e altre amenita' simili
_esercizi.update();
const int pred_es = _esercizi.pred(atoi(annoes));
const bool reset_giac = pred_es != 0 ? _esercizi.esercizio(pred_es).chiusura_mag() != TDate(NULLDATE) : TRUE;
if (reset_giac)
{
// azzera tutte giacenze (ciclo sulle giacenze)
mag.put("ANNOES",annoes);
mag.read(_isgteq);
TString information;
//TIndwin idle(40,"Azzeramento saldi in corso...", FALSE);
TProgind idle(40,"Azzeramento saldi in corso...", FALSE,FALSE);
while (!mag.eof() && annoes==mag.get("ANNOES"))
{
TString currcode(mag.get("CODART"));
TArticolo articolo(currcode);
//information="Azzeramento saldi articolo: ";
//information << articolo.codice();
//idle.set_text(information);
//do_events();
if (articolo.lock_and_prompt())
{
while (!mag.eof() && currcode==mag.get("CODART"))
{
mag.put("GIAC",0);
mag.put("RIM",0);mag.put("VALRIM",0);
mag.put("ACQ",0);mag.put("VALACQ",0);
mag.put("ENT",0);mag.put("VALENT",0);
mag.put("VEN",0);mag.put("VALVEN",0);
mag.put("USC",0);mag.put("VALUSC",0);
mag.put("ORDF",0);mag.put("VALORDF",0);
mag.put("ORDC",0);mag.put("VALORDC",0);
mag.put("SCARTI",0);mag.put("VALSCARTI",0);
mag.put("PRODCOMP",0);
mag.put("PRODFIN",0);
mag.put("INCL",0);
mag.put("ACL",0);
mag.put("NLABEL",0);
mag.rewrite();
mag.next();
}
articolo.unlock();
}
else
{
ok=FALSE;
mag.next();
}
}
}
// ricostruisce i saldi (ciclo sui movimenti)
TString filterexpr;
filterexpr << LF_MOVMAG << "->ANNOES==" << annoes;
TCursor cur(&rel,filterexpr); // cursore filtrato
TProgind barra_mov(cur.items(),"Ricostruzione saldi", TRUE, TRUE, 60);
for (long i=0; i<cur.objects(); i++)
{
barra_mov.addstatus(1);
cur=i;
TMov_mag & mov_rec=(TMov_mag &)cur.file().curr();
if (!mov_rec.force_update_bal())
ok=FALSE;
}
barra_mov.close_modal();
return ok;
}

760
mg/mglib02a.cpp Executable file
View File

@ -0,0 +1,760 @@
// oggetto TCausale_magazzino
// oggetto TMov_Mag , multirecord del movimento di magazzino
// funzione di ricostruzione saldi
#include <tabutil.h>
#include <progind.h>
#include "mglib.h"
#include "movmag.h"
#include "rmovmag.h"
#ifndef __CGLIB01_H
#include "..\cg\cglib01.h"
#endif
#ifndef __DBLIB_H
#include "..\db\dblib.h"
#endif
// *********************
// movimenti di magazzino
// causali
int TCausale_magazzino::sgn(TTipo_saldomag tiposaldo)
{
static TString *segni=NULL; if (segni==NULL) segni=new TString80;
*segni=get("S2");
switch (tiposaldo)
{
case s_giac:
return atoi(segni->mid(0,2));
case s_acq:
return atoi(segni->mid(2,2));
case s_ent:
return atoi(segni->mid(4,2));
case s_ven:
return atoi(segni->mid(6,2));
case s_usc:
return atoi(segni->mid(8,2));
case s_ordc:
return atoi(segni->mid(10,2));
case s_ordf:
return atoi(segni->mid(12,2));
case s_incl:
return atoi(segni->mid(14,2));
case s_acl:
return atoi(segni->mid(16,2));
case s_prodc:
return atoi(segni->mid(18,2));
case s_prodf:
return atoi(segni->mid(20,2));
case s_rim:
return atoi(segni->mid(22,2));
case s_scart:
return atoi(segni->mid(24,2));
case s_label:
return atoi(segni->mid(26,2));
case s_user1:
return atoi(segni->mid(28,2));
case s_user2:
return atoi(segni->mid(30,2));
case s_user3:
return atoi(segni->mid(32,2));
case s_user4:
return atoi(segni->mid(34,2));
case s_user5:
return atoi(segni->mid(36,2));
case s_user6:
return atoi(segni->mid(38,2));
default:
return 0;
}
}
bool TCausale_magazzino::is_fiscale()
{
return (tipomov()=='S' || tipomov()=='C' );
}
TCausale_magazzino::TCausale_magazzino(const char * codice):
TRectype(LF_TABCOM)
{
TTable f("%CAU");
settab("CAU");
put("CODTAB", codice);
if (TRectype::read(f) != NOERR)
zero();
}
// movimenti
// dati della linea di movimento di magazzino
class TLine_movmag : public TObject
{
TString16 _codcaus;
TString16 _um;
real _quant;
real _prezzo;
public:
const TString16 &codcaus() const {return _codcaus;}
const TString16 &um() const {return _um;}
const real &quant() const {return _quant;}
const real &prezzo() const {return _prezzo;}
void set(const TString16 cau,const TString16 um,const real q, const real p);
int operator==(TLine_movmag &);
virtual TObject* dup() const {return new TLine_movmag(*this);};
TLine_movmag() {};
TLine_movmag(const TLine_movmag &);
virtual ~TLine_movmag() {};
};
void TLine_movmag ::set(const TString16 cau,const TString16 um,const real q, const real p)
{
_codcaus=cau;
_um=um;
_quant=q;
_prezzo=p;
}
TLine_movmag ::TLine_movmag(const TLine_movmag &l)
{
_codcaus=l._codcaus;
_um=l._um;
_quant=l._quant;
_prezzo=l._prezzo;
}
int TLine_movmag::operator==(TLine_movmag &l)
{
return (_codcaus==l._codcaus)&&(_um==l._um)&&(_quant==l._quant)&&(_prezzo==l._prezzo);
}
// ********************************
// TMov_mag
TRecord_cache TMov_mag::cache_causali("%CAU");
TMov_mag::TMov_mag() :
TMultiple_rectype(LF_MOVMAG),
lines_to_add(), lines_to_subtract()
{
add_file(LF_RMOVMAG,"NRIG");
}
TMov_mag::~TMov_mag()
{
}
void TMov_mag::zero(char c)
{
TMultiple_rectype::zero(c);
lines_to_add.destroy();
lines_to_subtract.destroy();
}
// valuta il valore della chiave per un nuovo record
bool TMov_mag::renum()
{
put(MOVMAG_NUMREG,get_next_key());
return TRUE;
}
// copia la chiave dal file principale a quello delle righe
void TMov_mag::set_body_key(TRectype & rowrec)
{
rowrec.put(RMOVMAG_NUMREG,get(MOVMAG_NUMREG));
}
void TMov_mag::synchronize_bodies()
{
TMultiple_rectype::synchronize_bodies();
// reset delle strutture per il controlli delle variazioni dei saldi
if (autoload_enabled())
{
_annoes=get(MOVMAG_ANNOES);
lines_to_add.destroy();
lines_to_subtract.destroy();
const int nrows = rows();
for (int i = 1; i<= nrows; i++)
line_deleted(line2key(i), line2data(i));
}
}
int TMov_mag::remove(TBaseisamfile& f) const
{
int res;
if ((res=TMultiple_rectype::remove(f))==NOERR )
// effettua la variazione dei saldi
((TMov_mag *)this)->update_balances();
return res;
}
void TMov_mag::add_extrarows() const
{
add_autorows();
if (add_explrows())
add_autorows();
}
bool TMov_mag::add_autorows() const
{
bool added=FALSE;
// aggiunge le righe automatiche
for (int r = rows(); r > 0; r--)
{
TRecord_array & b = body();
TRectype & row = b[r];
TString16 codcaus(row.get(RMOVMAG_CODCAUS));
if (codcaus.empty())
codcaus=get(MOVMAG_CODCAUS);
TCausale_magazzino & cau=(TCausale_magazzino & )cache_causali.get(codcaus);
codcaus=cau.caus_collegata();
if (codcaus.not_empty())
{
TCausale_magazzino & cau_coll=(TCausale_magazzino & )cache_causali.get(codcaus);
// if (!cau_coll.esplodente())
{
// deve esserci una riga collegata
if (!b.exist(r + 1) || b[r + 1].get_char(RMOVMAG_TIPORIGA) != riga_automatica)
{
// manca, la inserisco
TRectype * linea_auto = new TRectype(row);
const char * codmag = cau_coll.default_magdep();
if (codmag != NULL)
linea_auto->put(RMOVMAG_CODMAG, codmag);
const char * prezzo = prezzo_rauto(r);
if (prezzo != NULL)
linea_auto->put(RMOVMAG_PREZZO, prezzo);
linea_auto->put(RMOVMAG_NRIG, r+1);
linea_auto->put(RMOVMAG_TIPORIGA, (char) riga_automatica);
linea_auto->put(RMOVMAG_CODCAUS, codcaus);
b.insert_row(linea_auto);
added=TRUE;
}
}
}
} // ciclo righe
return added;
}
bool TMov_mag::add_explrows() const
{
TDistinta_tree distinta;
TArray boom;
bool added=FALSE;
// aggiunge le righe da explosione distinta
for (int r = rows(); r > 0; r--)
{
TRecord_array & b = body();
TRectype & row = b[r];
TString16 codcaus(row.get(RMOVMAG_CODCAUS));
if (codcaus.empty())
codcaus=get(MOVMAG_CODCAUS);
TCausale_magazzino & cau=(TCausale_magazzino & )cache_causali.get(codcaus);
if (cau.esplodente() && !b[r].get_bool(RMOVMAG_ESPLOSA))
{
// devono esserci n righe automatiche esplose
//if (!b.exist(r + 1) || !b[r + 1].get_bool(RMOVMAG_ESPLOSA))
{
// mancano le righe, le inserisco
distinta.set_root(row.get(RMOVMAG_CODART));
distinta.explode(boom);
TString codmag(codmag_rauto(r));
real prezzo(prezzo_rauto(r));
TRectype * linea_auto;
for (int newrow=0; newrow < boom.items() ; newrow++)
{
TRiga_esplosione & riga_esp=(TRiga_esplosione & )(boom[newrow]);
linea_auto = new TRectype(row);
linea_auto->put(RMOVMAG_CODART, riga_esp.articolo());
linea_auto->put(RMOVMAG_UM, riga_esp.um());
linea_auto->put(RMOVMAG_QUANT, riga_esp.val()*row.get_real(RMOVMAG_QUANT));
if (codmag.not_empty())
linea_auto->put(RMOVMAG_CODMAG, codmag);
if (!prezzo.is_zero())
linea_auto->put(RMOVMAG_PREZZO, prezzo);
linea_auto->put(RMOVMAG_NRIG, r+1+newrow);
linea_auto->put(RMOVMAG_ESPLOSA, TRUE);
//linea_auto->put(RMOVMAG_TIPORIGA, (char) riga_automatica);
//linea_auto->put(RMOVMAG_CODCAUS, codcaus);
b.insert_row(linea_auto);
added=TRUE;
}
}
// ora ci sono, mi basta eliminare la riga "padre"
b.destroy_row(r,TRUE);
}
} // ciclo righe
return added;
}
int TMov_mag::write(TBaseisamfile& f) const
{
int res;
add_extrarows();
TMov_mag &myself=((TMov_mag &)*this);
const int nrows = rows();
for (int i = 1; i <= nrows; i++)
myself.line_inserted(line2key(i), line2data(i));
if ((res=TMultiple_rectype::write(f))==NOERR )
// effettua la variazione dei saldi
myself.update_balances();
return res;
}
int TMov_mag::rewrite(TBaseisamfile& f) const
{
int res;
add_extrarows();
// memorizza le variazioni
const int nrows = rows();
for (int i = 1; i <= nrows; i++)
((TMov_mag *)this)->line_inserted(line2key(i), line2data(i));
if ((res=TMultiple_rectype::rewrite(f))==NOERR )
// effettua la variazione dei saldi
((TMov_mag *)this)->update_balances();
return res;
}
const char *TMov_mag::get_next_key()
{
static TString16 nextcod;
TLocalisamfile f(LF_MOVMAG);
f.last();
int a=atoi(f.get(MOVMAG_NUMREG))+1;
return nextcod.format("%d",a);
}
//*******
// gestione delle variazione dei saldi
//
//
int TMov_mag::force_update_bal()
{
int res;
// reset delle strutture per il controlli delle variazioni dei saldi
_annoes=get(MOVMAG_ANNOES);
lines_to_add.destroy();
lines_to_subtract.destroy();
// memorizza le variazioni
const int nrows = rows();
for (int i= 1; i <= nrows; i++)
line_inserted(line2key(i), line2data(i));
res=update_balances();
return res;
}
// restituisce il valore dei dati
TLine_movmag & TMov_mag::line2data(int nrig) const
{
static TLine_movmag line;
TRecord_array & b = body();
line.set(b.row(nrig).get(RMOVMAG_CODCAUS).blank() ? get(MOVMAG_CODCAUS) : b.row(nrig).get(RMOVMAG_CODCAUS) ,
b.row(nrig).get(RMOVMAG_UM),
b.row(nrig).get_real(RMOVMAG_QUANT),
b.row(nrig).get_real(RMOVMAG_PREZZO));
return line;
}
TToken_string & TMov_mag::line2key(int numriga) const
{
static TToken_string _key;
TRecord_array & b = body();
TString16 nr;
nr << numriga;
_key.cut(0);
_key.add(b.row(numriga).get(RMOVMAG_CODART));
_key.add(b.row(numriga).get(RMOVMAG_CODMAG));
_key.add(b.row(numriga).get(RMOVMAG_LIVGIAC));
_key.add(nr);
return _key;
}
TString TMov_mag::key2field(TToken_string &key,const char *fieldname)
{
if (strcmp(fieldname,RMOVMAG_CODART)==0)
return key.get(0);
if (strcmp(fieldname,RMOVMAG_CODMAG)==0)
return key.get(1);
if (strcmp(fieldname,RMOVMAG_LIVGIAC)==0)
return key.get(2);
CHECKS(FALSE, "Nome di campo non appartenente al file righe mov ", fieldname);
return "";
}
int TMov_mag::line_inserted(TToken_string &k,TLine_movmag &r)
{
if (_annoes != get(MOVMAG_ANNOES))
lines_to_add.add(k,r);
else
{
if (lines_to_subtract.is_key(k)&& (TLine_movmag &)lines_to_subtract[k]==r)
// modifica annullata
lines_to_subtract.remove(k);
else
// linea modificata
lines_to_add.add(k,r);
}
return 0;
}
int TMov_mag::line_deleted(TToken_string &k,TLine_movmag &r)
{
if (_annoes != get(MOVMAG_ANNOES))
lines_to_subtract.add(k,r);
else
{
if (lines_to_add.is_key(k)&& r==(TLine_movmag &)lines_to_add[k] )
// modifica annullata
lines_to_add.remove(k);
else
// linea modificata
lines_to_subtract.add(k,r);
}
return 0;
}
bool TMov_mag::unlock_anamag(const char *codart)
{
TLocalisamfile anamag(LF_ANAMAG);
anamag.put(ANAMAG_CODART,codart);
return (anamag.read(_isequal,_unlock)==NOERR);
}
bool TMov_mag::lock_anamag(const char *codart)
{
TLocalisamfile anamag(LF_ANAMAG);
anamag.put(ANAMAG_CODART,codart);
bool insert_new=TRUE;
TString mess;
mess << "Il record di anagrafica dell'articolo ''"<< codart << "'' risulta essere già in uso.";
TTimed_breakbox bbox((const char *)mess,10);
do
{
if (anamag.read(_isequal,_testandlock)==NOERR)
return TRUE;
} while (bbox.run()!=K_ESC);
return FALSE;
}
void TMov_mag::giac_putkey(TLocalisamfile & mag,TString16 annoes,TToken_string curr_key)
{
mag.zero(' ');
mag.put(MAG_ANNOES,annoes);
mag.put(MAG_CODMAG,key2field(curr_key,RMOVMAG_CODMAG));
mag.put(MAG_CODART,key2field(curr_key,RMOVMAG_CODART));
mag.put(MAG_LIVELLO,key2field(curr_key,RMOVMAG_LIVGIAC));
}
// aggiorna tutti i saldi in base alle modifiche fatte.
// il lock su anagrafica dovrebbe garantire il lock su tutte le
// giacenze dell'articolo
int TMov_mag::update_balances()
{
bool updated_bal=TRUE;
TLocalisamfile mag(LF_MAG);
mag.setkey(2);
TString_array keys_to_add,keys_to_remove;
((TMov_mag *)this)->lines_to_add.get_keys(keys_to_add);
((TMov_mag *)this)->lines_to_subtract.get_keys(keys_to_remove);
// aggiunge i saldi nuovi
keys_to_add.sort();
TToken_string * curr_key=(TToken_string *)keys_to_add.first_item();
while (curr_key)
{
const TString cod(key2field(*curr_key,RMOVMAG_CODART)) ;
if (curr_art.lock_and_prompt(cod))
{
// lock gained
TLine_movmag & line_mov=(TLine_movmag &)lines_to_add[*curr_key];
TCausale_magazzino & causmag=(TCausale_magazzino &)cache_causali.get(line_mov.codcaus());
if (causmag.update_ultcos())
{
curr_art.update_ultcosti(line_mov.prezzo(),get_date("DATACOMP"));
curr_art.rewrite();
}
giac_putkey(mag,get(MOVMAG_ANNOES),*curr_key);
if (mag.read()!=NOERR)
{
// non trovato: aggiungo
giac_putkey(mag,get(MOVMAG_ANNOES),*curr_key);
mag.put(MAG_NRIGA,1+curr_art.mag(get(MOVMAG_ANNOES)).rows());
mag.write();
}
// modifica questo record (e lo sblocca)
update_balances(mag.curr(), line_mov, +1);
/*// ottimizzazione :(cerca di sfruttare la lettura fatta per un eventuale saldo vecchio)
// ciò causa la modifica dell'oggetto TMov_mag (il metodo non è più const)
if (_annoes == get("ANNOES")
&& lines_to_subtract.is_key(*curr_key)) {
update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*curr_key],-1);
((TMov_mag *)this)->lines_to_add.remove(*curr_key);
((TMov_mag *)this)->lines_to_subtract.remove(*curr_key);
}*/
mag.rewrite();
// conclude la TRANSAZIONE prima di sbloccare il record dell'articolo
TToken_string *rem_key=(TToken_string *)keys_to_remove.first_item();
while ( rem_key)
{
if (key2field(*rem_key,RMOVMAG_CODART)==key2field(*curr_key,RMOVMAG_CODART)) {
giac_putkey(mag,_annoes,*rem_key);
if (mag.read()==NOERR)
{
update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*rem_key],-1);
mag.rewrite();
}
keys_to_remove.remove_item();
}
rem_key=(TToken_string *)keys_to_remove.succ_item();
}
curr_art.unlock();
}
else
updated_bal=FALSE;
curr_key=(TToken_string *)keys_to_add.succ_item();
}
// togli i saldi vecchi
curr_key=(TToken_string *)keys_to_remove.first_item();
while (curr_key)
{
if (curr_art.lock_and_prompt((const char *)key2field(*curr_key,RMOVMAG_CODART)))
{
giac_putkey(mag,_annoes,*curr_key);
// modifica questo record (e lo sblocca)
if (mag.read()==NOERR)
{
update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*curr_key],-1);
mag.rewrite();
}
curr_art.unlock();
}
else
updated_bal=FALSE;
curr_key=(TToken_string *)keys_to_remove.succ_item();
}
return updated_bal;
}
// aggiorna i saldi del record corrente
// in base alla causale e alla modifica fatta (con segno + o -)
int TMov_mag::update_balances(TRectype & magrec, const TLine_movmag &l,int rett_sign)
{
TCausale_magazzino & caus=(TCausale_magazzino &)cache_causali.get(l.codcaus());
TLocalisamfile umart(LF_UMART);
real diff,diff_val;
umart.setkey(2);
umart.put(UMART_CODART,magrec.get(MAG_CODART));
umart.put(UMART_UM , l.um());
umart.read();
real fc=umart.get_real("FC");
diff=((real)rett_sign) * l.quant() * fc;
diff_val= ((real)rett_sign) * l.quant() * l.prezzo();
if (caus.update_qta())
{
update_balance(magrec,"GIAC",diff* (real)caus.sgn(s_giac)); // update ..
update_balance(magrec,"ACQ",diff* (real)caus.sgn(s_acq)); // update ..
update_balance(magrec,"ENT",diff* (real)caus.sgn(s_ent));
update_balance(magrec,"VEN",diff* (real)caus.sgn(s_ven));
update_balance(magrec,"USC",diff* (real)caus.sgn(s_usc));
update_balance(magrec,"ORDC",diff* (real)caus.sgn(s_ordc));
update_balance(magrec,"ORDF",diff* (real)caus.sgn(s_ordf));
update_balance(magrec,"RIM",diff* (real)caus.sgn(s_rim));
update_balance(magrec,"SCARTI",diff* (real)caus.sgn(s_scart));
update_balance(magrec,"INCL",diff* (real)caus.sgn(s_incl));
update_balance(magrec,"ACL",diff* (real)caus.sgn(s_acl));
update_balance(magrec,"PRODCOMP",diff* (real)caus.sgn(s_prodc));
update_balance(magrec,"PRODFIN",diff* (real)caus.sgn(s_prodf));
update_balance(magrec,"NLABEL",diff* (real)caus.sgn(s_label));
update_balance(magrec,"USER1",diff* (real)caus.sgn(s_user1));
update_balance(magrec,"USER2",diff* (real)caus.sgn(s_user2));
update_balance(magrec,"USER3",diff* (real)caus.sgn(s_user3));
update_balance(magrec,"USER4",diff* (real)caus.sgn(s_user4));
update_balance(magrec,"USER5",diff* (real)caus.sgn(s_user5));
update_balance(magrec,"USER6",diff* (real)caus.sgn(s_user6));
}
if (caus.update_val())
{
update_balance(magrec,"VALACQ",diff_val* (real)caus.sgn(s_acq)); // update ..
update_balance(magrec,"VALENT",diff_val* (real)caus.sgn(s_ent));
update_balance(magrec,"VALVEN",diff_val* (real)caus.sgn(s_ven));
update_balance(magrec,"VALUSC",diff_val* (real)caus.sgn(s_usc));
update_balance(magrec,"VALORDC",diff_val* (real)caus.sgn(s_ordc));
update_balance(magrec,"VALORDF",diff_val* (real)caus.sgn(s_ordf));
update_balance(magrec,"VALRIM",diff_val* (real)caus.sgn(s_rim));
update_balance(magrec,"VALSCARTI",diff_val* (real)caus.sgn(s_scart));
update_balance(magrec,"USERVAL1",diff* (real)caus.sgn(s_user1));
update_balance(magrec,"USERVAL2",diff* (real)caus.sgn(s_user2));
update_balance(magrec,"USERVAL3",diff* (real)caus.sgn(s_user3));
update_balance(magrec,"USERVAL4",diff* (real)caus.sgn(s_user4));
update_balance(magrec,"USERVAL5",diff* (real)caus.sgn(s_user5));
update_balance(magrec,"USERVAL6",diff* (real)caus.sgn(s_user6));
}
return 0;
}
void TMov_mag::update_balance(TRectype & magrec, const char * fieldname, real diff) const
{
magrec.put(fieldname,magrec.get_real(fieldname)+diff);
}
HIDDEN TEsercizi_contabili _esercizi;
int TMov_mag::codice_esercizio(TDate &d)
{
return _esercizi.date2esc(d);
}
void zero_balances(TRectype & mag)
{
mag.put(MAG_GIAC,0);
mag.put(MAG_RIM,0);mag.put(MAG_VALRIM,0);
mag.put(MAG_ACQ,0);mag.put(MAG_VALACQ,0);
mag.put(MAG_ENT,0);mag.put(MAG_VALENT,0);
mag.put(MAG_VEN,0);mag.put(MAG_VALVEN,0);
mag.put(MAG_USC,0);mag.put(MAG_VALUSC,0);
mag.put(MAG_ORDF,0);mag.put(MAG_VALORDF,0);
mag.put(MAG_ORDC,0);mag.put(MAG_VALORDC,0);
mag.put(MAG_SCARTI,0);mag.put(MAG_VALSCARTI,0);
mag.put(MAG_PRODCOMP,0);
mag.put(MAG_PRODFIN,0);
mag.put(MAG_INCL,0);
mag.put(MAG_ACL,0);
mag.put(MAG_NLABEL,0);
}
void copy_oldbalances(TRectype & oldmag,TRectype & mag)
{
mag.put(MAG_GIAC,oldmag.get(MAG_GIAC));
mag.put(MAG_RIM,oldmag.get(MAG_RIM));
mag.put(MAG_VALRIM,oldmag.get(MAG_VALRIM));
mag.put(MAG_ACQ,0);
mag.put(MAG_VALACQ,0);
mag.put(MAG_ENT,0);
mag.put(MAG_VALENT,0);
mag.put(MAG_VEN,0);
mag.put(MAG_VALVEN,0);
mag.put(MAG_USC,0);
mag.put(MAG_VALUSC,0);
mag.put(MAG_ORDF,oldmag.get(MAG_ORDF));
mag.put(MAG_VALORDF,oldmag.get(MAG_VALORDF));
mag.put(MAG_ORDC,oldmag.get(MAG_ORDC));
mag.put(MAG_VALORDC,oldmag.get(MAG_VALORDC));
mag.put(MAG_SCARTI,0);
mag.put(MAG_VALSCARTI,0);
mag.put(MAG_PRODCOMP,oldmag.get(MAG_PRODCOMP));
mag.put(MAG_PRODFIN,oldmag.get(MAG_PRODFIN));
mag.put(MAG_INCL,oldmag.get(MAG_INCL));
mag.put(MAG_ACL,oldmag.get(MAG_ACL));
mag.put(MAG_NLABEL,0);
}
//**********************
bool rebuild_balances(const TString16 annoes,
const TTipo_valorizz tipo_valorizz, const char* catven, const char* codlis)
{
TRelation rel(LF_MOVMAG); // relazione con un solo file (LF_MOVMAG) ma col record Head_Body
TMov_mag * m_m= new TMov_mag; // record del movimento di magazzino
rel.lfile().set_curr(m_m);
TRelation rel2(LF_ANAMAG); // relazione con un solo file (LF_ANAMAG) ma col record Head_Body
TArticolo_giacenza * a_g= new TArticolo_giacenza; // record dell'articolo di magazzino
rel2.lfile().set_curr(a_g);
int ok=TRUE;
// Aggiorna il cazzillo per caricare eventuali date di chiusura e altre amenita' simili
_esercizi.update();
const int cod_pred_es = _esercizi.pred(atoi(annoes));
TString16 pred_es; pred_es.format("%d",cod_pred_es);
const bool reset_giac = cod_pred_es != 0 ? _esercizi.esercizio(cod_pred_es).chiusura_mag() != TDate(NULLDATE) : TRUE;
TString information;
// azzera tutte giacenze (ciclo sulle giacenze)
TCursor cur2(&rel2);
const long maxart=cur2.objects();
information.format("Ricostruzione saldi esercizio %s: azzeramento...",(const char *)annoes);
TProgind barra_art(maxart,information, TRUE, TRUE, 60);
for (long a=0; a<maxart; a++)
{
barra_art.addstatus(1);
cur2=a;
TArticolo_giacenza & articolo=(TArticolo_giacenza &)cur2.file().curr();
if (articolo.lock_and_prompt(articolo.codice()))
{
if (reset_giac)
articolo.azzera_saldi(annoes);
else
articolo.riporta_saldi(pred_es, annoes, tipo_valorizz, catven, codlis);
articolo.unlock();
}
else
ok=FALSE;
do_events();
}
// ricostruisce i saldi (ciclo sui movimenti)
TString filterexpr;
filterexpr << LF_MOVMAG << "->ANNOES==" << annoes;
TCursor cur(&rel,filterexpr); // cursore filtrato
const long maxmov=cur.objects();
information.format("Ricostruzione saldi esercizio %s: ricalcolo ...",(const char *)annoes);
TProgind barra_mov(maxmov,information,TRUE, TRUE, 60);
for (long m=0; m<maxmov; m++)
{
barra_mov.addstatus(1);
cur=m;
TMov_mag & mov_rec=(TMov_mag &)cur.file().curr();
if (!mov_rec.force_update_bal())
ok=FALSE;
}
return ok;
}

View File

@ -222,14 +222,12 @@ bool TForm_stampemg::setdett_permag(bool totaliart,int fromlivart,int livart,boo
livgiac=giaclev().last_level(); //
}
find_field('B',odd_page,"H_MAGAZZINO").show(showmag && (showdep) );
find_field('B',odd_page,"H_MAGAZZINO").show(showmag && (showdep || showdett) );
find_field('B',odd_page,"TOT_MAGAZZINO").show(showmag);
find_field('B',odd_page,FF_DIVDEPOSITI).enable(showdep);
find_field('B',odd_page,"H_DEPOSITO").show(showdep && showdett);
find_field('B',odd_page,"TOT_DEPOSITO").show(showdep);
//if (livgiac==0)
// livgiac = _giaclev->last_level();
return setdettaglio(showdett,fromlivart,livart,fromlivgiac,livgiac,FALSE);
}

View File

@ -11,5 +11,6 @@
#define RMOVMAG_PREZZO "PREZZO"
#define RMOVMAG_CODCAUS "CAUS"
#define RMOVMAG_TIPORIGA "AUTOMATICA"
#define RMOVMAG_ESPLOSA "ESPLOSA"
#endif

View File

@ -6,7 +6,6 @@
#define F_CODNUM_F 105
#define F_TIPODOC_I_1 111
#define F_STATO_I_DOC_I_1 121
#define F_STATO_F_DOC_I 131
#define F_TIPODOC_I_2 112
#define F_STATO_I_DOC_I_2 122
#define F_TIPODOC_I_3 113
@ -15,18 +14,39 @@
#define F_STATO_I_DOC_I_4 124
#define F_TIPODOC_I_5 115
#define F_STATO_I_DOC_I_5 125
#define F_TIPODOC_I_6 116
#define F_STATO_I_DOC_I_6 126
#define F_TIPODOC_I_7 117
#define F_STATO_I_DOC_I_7 127
#define F_TIPODOC_I_8 118
#define F_STATO_I_DOC_I_8 128
#define F_TIPODOC_I_9 119
#define F_STATO_I_DOC_I_9 129
#define F_TIPODOC_I_10 120
#define F_STATO_I_DOC_I_10 130
#define F_STATO_F_DOC_I 139
#define F_TIPODOC_F 140
#define F_STATO_F_DOC_F 141
#define F_DOC1 151
#define F_DOC2 152
#define F_DOC3 153
#define F_DOC4 154
#define F_DOC5 155
#define F_ATTIVA_PROVVISORIO 160
#define F_PROVVISORIO 161
#define F_APPLICAZIONE 162
#define F_INTERATTIVO 163
#define F_INSERT_MODE 164
#define F_DOC6 156
#define F_DOC7 157
#define F_DOC8 158
#define F_DOC9 159
#define F_DOC10 160
#define F_ATTIVA_PROVVISORIO 161
#define F_PROVVISORIO 162
#define F_APPLICAZIONE 163
#define F_INTERATTIVO 164
#define F_INSERT_MODE 165
#define H_DOC 166
#define F_CAMBIO 201
#define F_SCONTO 202
@ -40,6 +60,7 @@
#define F_PORTO 210
#define F_TRASPORTO 211
#define F_VETTORI 212
#define F_DESTINAZIONE 213
#define F_SOMMA_RIGHE 301
#define F_MAGAZZINO 310

View File

@ -54,7 +54,7 @@ BEGIN
FIELD I0
END
GROUPBOX DLG_NULL 78 6
GROUPBOX DLG_NULL 78 8
BEGIN
PROMPT 1 6 "@bDocumento originale"
END
@ -74,40 +74,82 @@ BEGIN
OUTPUT F_DOC3 S2[9,12]
OUTPUT F_DOC4 S2[13,16]
OUTPUT F_DOC5 S2[17,20]
OUTPUT F_DOC6 S2[21,24]
OUTPUT F_DOC7 S2[25,28]
OUTPUT F_DOC8 S2[29,32]
OUTPUT F_DOC9 S2[33,36]
OUTPUT F_DOC10 S2[37,40]
OUTPUT H_DOC S2
CHECKTYPE NORMAL
WARNING "Numerazione errata"
END
STRING H_DOC 50
BEGIN
PROMPT 29 6 ""
FLAGS "H"
END
STRING F_DOC1 4
BEGIN
PROMPT 30 7 ""
PROMPT 29 7 ""
FLAGS "D"
END
STRING F_DOC2 4
BEGIN
PROMPT 36 7 ""
PROMPT 34 7 ""
FLAGS "D"
END
STRING F_DOC3 4
BEGIN
PROMPT 42 7 ""
PROMPT 39 7 ""
FLAGS "D"
END
STRING F_DOC4 4
BEGIN
PROMPT 48 7 ""
PROMPT 44 7 ""
FLAGS "D"
END
STRING F_DOC5 4
BEGIN
PROMPT 49 7 ""
FLAGS "D"
END
STRING F_DOC6 4
BEGIN
PROMPT 54 7 ""
FLAGS "D"
END
STRING F_DOC7 4
BEGIN
PROMPT 59 7 ""
FLAGS "D"
END
STRING F_DOC8 4
BEGIN
PROMPT 64 7 ""
FLAGS "D"
END
STRING F_DOC9 4
BEGIN
PROMPT 69 7 ""
FLAGS "D"
END
STRING F_DOC10 4
BEGIN
PROMPT 74 7 ""
FLAGS "D"
END
STRING F_TIPODOC_I_1 4
BEGIN
PROMPT 2 8 "Tipo documento "
@ -119,7 +161,7 @@ BEGIN
DISPLAY "Tipo documento@50" S0
OUTPUT F_TIPODOC_I_1 CODTAB
CHECKTYPE REQUIRED
STR_EXPR {(#F_CODNUM_I=="")||(#THIS_FIELD==#F_DOC1)||(#THIS_FIELD==#F_DOC2)||(#THIS_FIELD==#F_DOC3)||(#THIS_FIELD==#F_DOC4)||(#THIS_FIELD==#F_DOC5)}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -133,7 +175,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_2 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#THIS_FIELD=="")||(#THIS_FIELD==#F_DOC1)||(#THIS_FIELD==#F_DOC2)||(#THIS_FIELD==#F_DOC3)||(#THIS_FIELD==#F_DOC4)||(#THIS_FIELD==#F_DOC5)}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -147,7 +189,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_3 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#THIS_FIELD=="")||(#THIS_FIELD==#F_DOC1)||(#THIS_FIELD==#F_DOC2)||(#THIS_FIELD==#F_DOC3)||(#THIS_FIELD==#F_DOC4)||(#THIS_FIELD==#F_DOC5)}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -155,13 +197,13 @@ STRING F_TIPODOC_I_4 4
BEGIN
PROMPT 48 8 ""
FLAGS "U"
FIELD S2[13,15]
FIELD S2[13,16]
COPY USE F_TIPODOC_I_1
INPUT CODTAB F_TIPODOC_I_4
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_4 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#THIS_FIELD=="")||(#THIS_FIELD==#F_DOC1)||(#THIS_FIELD==#F_DOC2)||(#THIS_FIELD==#F_DOC3)||(#THIS_FIELD==#F_DOC4)||(#THIS_FIELD==#F_DOC5)}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -169,13 +211,13 @@ STRING F_TIPODOC_I_5 4
BEGIN
PROMPT 57 8 ""
FLAGS "U"
FIELD S2[16,19]
FIELD S2[17,20]
COPY USE F_TIPODOC_I_1
INPUT CODTAB F_TIPODOC_I_4
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_4 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#THIS_FIELD=="")||(#THIS_FIELD==#F_DOC1)||(#THIS_FIELD==#F_DOC2)||(#THIS_FIELD==#F_DOC3)||(#THIS_FIELD==#F_DOC4)||(#THIS_FIELD==#F_DOC5)}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -197,10 +239,9 @@ STRING F_STATO_I_DOC_I_2 1
BEGIN
PROMPT 30 9 ""
FLAGS "U"
USE %STD
COPY USE F_STATO_I_DOC_I_1
INPUT CODTAB F_STATO_I_DOC_I_2
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
COPY DISPLAY F_STATO_I_DOC_I_1
OUTPUT F_STATO_I_DOC_I_2 CODTAB
CHECKTYPE NORMAL
FIELD S7[2,2]
@ -210,10 +251,9 @@ STRING F_STATO_I_DOC_I_3 1
BEGIN
PROMPT 39 9 ""
FLAGS "U"
USE %STD
COPY USE F_STATO_I_DOC_I_1
INPUT CODTAB F_STATO_I_DOC_I_3
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
COPY DISPLAY F_STATO_I_DOC_I_1
OUTPUT F_STATO_I_DOC_I_3 CODTAB
CHECKTYPE NORMAL
FIELD S7[3,3]
@ -223,10 +263,9 @@ STRING F_STATO_I_DOC_I_4 1
BEGIN
PROMPT 48 9 ""
FLAGS "U"
USE %STD
COPY USE F_STATO_I_DOC_I_1
INPUT CODTAB F_STATO_I_DOC_I_4
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
COPY DISPLAY F_STATO_I_DOC_I_1
OUTPUT F_STATO_I_DOC_I_4 CODTAB
CHECKTYPE NORMAL
FIELD S7[4,4]
@ -236,18 +275,148 @@ STRING F_STATO_I_DOC_I_5 1
BEGIN
PROMPT 57 9 ""
FLAGS "U"
USE %STD
COPY USE F_STATO_I_DOC_I_1
INPUT CODTAB F_STATO_I_DOC_I_5
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
COPY DISPLAY F_STATO_I_DOC_I_1
OUTPUT F_STATO_I_DOC_I_5 CODTAB
CHECKTYPE NORMAL
FIELD S7[5,5]
END
STRING F_TIPODOC_I_6 4
BEGIN
PROMPT 2 10 "Tipo documento "
FLAGS "U"
FIELD S2[21,24]
COPY USE F_TIPODOC_I_1
INPUT CODTAB F_TIPODOC_I_6
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_6 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
STRING F_TIPODOC_I_7 4
BEGIN
PROMPT 30 10 ""
FLAGS "U"
FIELD S2[25,28]
COPY USE F_TIPODOC_I_1
INPUT CODTAB F_TIPODOC_I_7
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_7 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
STRING F_TIPODOC_I_8 4
BEGIN
PROMPT 39 10 ""
FLAGS "U"
FIELD S2[29,32]
COPY USE F_TIPODOC_I_1
INPUT CODTAB F_TIPODOC_I_8
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_8 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
STRING F_TIPODOC_I_9 4
BEGIN
PROMPT 48 10 ""
FLAGS "U"
FIELD S2[33,36]
COPY USE F_TIPODOC_I_1
INPUT CODTAB F_TIPODOC_I_9
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_9 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
STRING F_TIPODOC_I_10 4
BEGIN
PROMPT 57 10 ""
FLAGS "U"
FIELD S2[37,40]
COPY USE F_TIPODOC_I_1
INPUT CODTAB F_TIPODOC_I_10
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_10 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
STRING F_STATO_I_DOC_I_6 1
BEGIN
PROMPT 2 11 "Stato iniziale "
FLAGS "U"
FIELD S10[1,1]
COPY USE F_STATO_I_DOC_I_1
INPUT CODTAB F_STATO_I_DOC_I_6
COPY DISPLAY F_STATO_I_DOC_I_1
OUTPUT F_STATO_I_DOC_I_6 CODTAB
CHECKTYPE NORMAL
WARNING "E' necessario specificare uno stato iniziale"
END
STRING F_STATO_I_DOC_I_7 1
BEGIN
PROMPT 30 11 ""
FLAGS "U"
COPY USE F_STATO_I_DOC_I_1
INPUT CODTAB F_STATO_I_DOC_I_7
COPY DISPLAY F_STATO_I_DOC_I_1
OUTPUT F_STATO_I_DOC_I_7 CODTAB
CHECKTYPE NORMAL
FIELD S10[2,2]
END
STRING F_STATO_I_DOC_I_8 1
BEGIN
PROMPT 39 11 ""
FLAGS "U"
COPY USE F_STATO_I_DOC_I_1
INPUT CODTAB F_STATO_I_DOC_I_8
COPY DISPLAY F_STATO_I_DOC_I_1
OUTPUT F_STATO_I_DOC_I_8 CODTAB
CHECKTYPE NORMAL
FIELD S10[3,3]
END
STRING F_STATO_I_DOC_I_9 1
BEGIN
PROMPT 48 11 ""
FLAGS "U"
COPY USE F_STATO_I_DOC_I_1
INPUT CODTAB F_STATO_I_DOC_I_9
COPY DISPLAY F_STATO_I_DOC_I_1
OUTPUT F_STATO_I_DOC_I_9 CODTAB
CHECKTYPE NORMAL
FIELD S10[4,4]
END
STRING F_STATO_I_DOC_I_10 1
BEGIN
PROMPT 57 11 ""
FLAGS "U"
COPY USE F_STATO_I_DOC_I_1
INPUT CODTAB F_STATO_I_DOC_I_10
COPY DISPLAY F_STATO_I_DOC_I_1
OUTPUT F_STATO_I_DOC_I_10 CODTAB
CHECKTYPE NORMAL
FIELD S10[5,5]
END
STRING F_STATO_F_DOC_I 1
BEGIN
PROMPT 2 10 "Stato finale "
PROMPT 2 12 "Stato finale "
FLAGS "U"
FIELD S4
USE %STD
@ -259,14 +428,14 @@ BEGIN
WARNING "E' necessario specificare uno stato finale"
END
GROUPBOX DLG_NULL 78 6
GROUPBOX DLG_NULL 42 5
BEGIN
PROMPT 1 12 "@bDocumento finale"
PROMPT 1 14 "@bDocumento finale"
END
STRING F_TIPODOC_F 4
BEGIN
PROMPT 2 13 "Tipo documento "
PROMPT 2 15 "Tipo documento "
FLAGS "U"
FIELD S8
CHECKTYPE REQUIRED
@ -279,7 +448,7 @@ END
STRING F_STATO_F_DOC_F 1
BEGIN
PROMPT 2 14 "Stato finale "
PROMPT 2 16 "Stato finale "
FLAGS "U"
FIELD S9
USE %STD
@ -293,7 +462,7 @@ END
STRING F_CODNUM_F 4
BEGIN
PROMPT 2 15 "Codice numerazione "
PROMPT 2 17 "Codice numerazione "
FLAGS "U"
FIELD S6
USE %NUM
@ -313,9 +482,14 @@ BEGIN
MESSAGE TRUE ENABLE,F_PROVVISORIO
END
GROUPBOX DLG_NULL 35 5
BEGIN
PROMPT 44 14 "@bTipo numerazione"
END
RADIOBUTTON F_PROVVISORIO 20
BEGIN
PROMPT 42 13 "Tipo numerazione"
PROMPT 44 14 ""
ITEM " |Definitiva"
ITEM "X|Provvisioria"
FIELD B4
@ -323,7 +497,7 @@ END
STRING F_APPLICAZIONE 20
BEGIN
PROMPT 2 18 "Applicazione "
PROMPT 2 19 "Applicazione "
FIELD S3
END
@ -363,7 +537,7 @@ END
BOOLEAN F_SPEDIZIONE
BEGIN
PROMPT 2 6 "Modalita' di spedizione"
PROMPT 2 6 "Modalita'di spedizione"
FIELD S1[9,9]
END
@ -375,40 +549,46 @@ END
BOOLEAN F_CONDPAG
BEGIN
PROMP 40 2 "Condizione di pagamento"
PROMP 28 2 "Condizione di pagamento"
FIELD S1[5,5]
END
BOOLEAN F_BANCA
BEGIN
PROMPT 40 3 "Banca di appoggio"
PROMPT 28 3 "Banca di appoggio"
FIELD S1[6,6]
END
BOOLEAN F_LISTINO
BEGIN
PROMPT 40 4 "Listino"
PROMPT 28 4 "Listino"
FIELD S1[7,7]
END
BOOLEAN F_AGENTE
BEGIN
PROMP 40 5 "Agente"
PROMP 28 5 "Agente"
FIELD S1[8,8]
END
BOOLEAN F_TRASPORTO
BEGIN
PROMPT 40 6 "Causale di trasporto"
PROMPT 28 6 "Causale di trasporto"
FIELD S1[11,11]
END
BOOLEAN F_VETTORI
BEGIN
PROMPT 40 7 "Vettori"
PROMPT 28 7 "Vettori"
FIELD S1[12,12]
END
BOOLEAN F_DESTINAZIONE
BEGIN
PROMPT 56 2 "Destinazione"
FIELD S1[13,13]
END
GROUPBOX DLG_NULL 75 4
BEGIN
PROMPT 1 10 "Modalita' di raggruppamento delle righe"

View File

@ -16,6 +16,9 @@
#define F_STATV 116
#define F_PROVV 117
#define F_STATO_PROVV 118
#define F_SCARES 119
#define F_CODCAUSANT 120
#define F_DESCAUSANT 121
#define F_STATOF_INS 150
#define F_STATOF_ST 151

View File

@ -45,28 +45,28 @@ END
STRING F_RIFERIMENTO 50
BEGIN
PROMPT 2 6 "Riferimento "
PROMPT 2 5 "Riferimento "
FIELD S1
CHECKTYPE NORMAL
END
STRING F_PROFILO 8
BEGIN
PROMPT 2 8 "Profilo documento "
PROMPT 2 6 "Profilo documento "
FIELD S4
CHECKTYPE REQUIRED
END
STRING F_PSTAMPA 8
BEGIN
PROMPT 2 9 "Profilo stampa documento "
PROMPT 2 7 "Profilo stampa documento "
FIELD S5
CHECKTYPE REQUIRED
END
NUMBER F_NCOPIE 3
BEGIN
PROMPT 2 10 "Numero di copie "
PROMPT 2 8 "Numero di copie "
FIELD I0
NUM_EXPR {(#THIS_FIELD >= 0)}
WARNING "Il numero di copie deve essere positivo"
@ -74,7 +74,7 @@ END
LIST F_TIPO 24
BEGIN
PROMPT 2 12 "Tipo del documento "
PROMPT 2 9 "Tipo del documento "
FIELD I1
ITEM "0|Altro" MESSAGE ENABLE,2@
ITEM "1|Bolla" MESSAGE CLEAR,2@
@ -84,7 +84,7 @@ END
STRING F_CODCAUS 3
BEGIN
PROMPT 2 13 "Codice causale contabile "
PROMPT 2 10 "Codice causale contabile "
FIELD S6
USE LF_CAUSALI
INPUT CODCAUS F_CODCAUS
@ -99,7 +99,7 @@ END
STRING F_DESCAUS 50
BEGIN
PROMPT 2 14 "Descrizione "
PROMPT 2 11 "Descrizione "
USE LF_CAUSALI KEY 2
INPUT DESCR F_DESCAUS
DISPLAY "Descrizione@50" DESCR
@ -110,6 +110,34 @@ BEGIN
GROUP 2
END
STRING F_CODCAUSANT 3
BEGIN
PROMPT 2 12 "Codice causale anticipo "
FIELD S10
USE LF_CAUSALI SELECT REG ==""
INPUT CODCAUS F_CODCAUSANT
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CODCAUSANT CODCAUS
OUTPUT F_DESCAUSANT DESCR
CHECKTYPE NORMAL
FLAG "U"
GROUP 2
END
STRING F_DESCAUSANT 50
BEGIN
PROMPT 2 13 "Descrizione "
USE LF_CAUSALI KEY 2
INPUT DESCR F_DESCAUSANT
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" CODCAUS
OUTPUT F_DESCAUSANT DESCR
OUTPUT F_CODCAUSANT CODCAUS
CHECKTYPE NORMAL
GROUP 2
END
BOOLEAN F_SPESEAUT
BEGIN
PROMPT 2 15 "Addebito automatico spese cliente"
@ -118,7 +146,7 @@ END
BOOLEAN F_MOVMAG
BEGIN
PROMPT 2 16 "Movimenti di magazzino a partire dallo stato "
PROMPT 2 16 "Mov. di mag. a partire dallo stato "
FIELD B1
MESSAGE FALSE CLEAR,1@
MESSAGE TRUE ENABLE,1@
@ -128,7 +156,7 @@ END
STRING F_STATO_MOV_I 1
BEGIN
PROMPT 50 16 ""
PROMPT 40 16 ""
FIELD S7
USE %STD
INPUT CODTAB F_STATO_MOV_I
@ -143,7 +171,7 @@ END
STRING F_STATO_MOV_F 1
BEGIN
PROMPT 54 16 "allo stato "
PROMPT 42 16 "allo stato "
FIELD S8
COPY USE F_STATO_MOV_I
INPUT CODTAB F_STATO_MOV_F
@ -156,6 +184,13 @@ BEGIN
WARNING "Stato finale impossibile"
END
BOOLEAN F_SCARES
BEGIN
PROMPT 58 16 "Scarica il residuo"
FIELD B4
GROUP 1
END
STRING F_CAUS_MAG 5
BEGIN
PROMPT 2 17 "Codice causale magazzino "

View File

@ -7,8 +7,6 @@
// Descrizione a caratteri del documento
TYPE=Bolla di vendita
// Dove sono le risorse per il documento
MSKFILE=BOLLAC
FRMFILE=BOLLAC.FRM
// modifica
CAMPICALC=TOTMER|TOTPRE|SPESE|SPESINC|BOLLI|IMPONIBILI|IMPOSTE|TOTDOC|SCONTOD|SCONTOT|OMAGGI|PROVVD
CALCOLI=BASESCONTO
@ -85,8 +83,8 @@ DENCOMSP = S_DISABILITATO //900
PROVCOMSP = S_DISABILITATO //900
STATOSP = S_DISABILITATO //900
DESSTATOSP = S_DISABILITATO //900
DATADOCRIF = S_NASCOSTO //1000
NUMDOCRIF = S_NASCOSTO //1000
DATADOCRIF = S_NORMALE //1000
NUMDOCRIF = S_NORMALE //1000
CODAGVIS = S_NASCOSTO //1110
DESAGVIS = S_NASCOSTO //1110
CODAG = S_NORMALE //1100
@ -113,7 +111,7 @@ NCOPIE = S_NASCOSTO //1600
GRPARTENZA = S_NORMALE //1700
DATAPART = S_NORMALE //1700
ORAPART = S_NORMALE //1700
IMPPAGATO = S_NASCOSTO //1800
IMPPAGATO = S_NORMALE //1800
ACCSALDO = S_NASCOSTO //1800
DOC1 = S_NASCOSTO //1900
DOC2 = S_NASCOSTO //1900
@ -199,7 +197,7 @@ NHANDLER=0
820 = S_NORMALE
830 = S_NORMALE
900 = S_NORMALE
1000 = S_NASCOSTO
1000 = S_NORMALE
1100 = S_NORMALE
1200 = S_NORMALE
1210 = S_NORMALE
@ -225,33 +223,33 @@ NHANDLER=0
[ORDINEGRUPPI]
NGROUPS=30
1=100
2=200
3=300
4=400
5=500
6=600
7=700
8=800
9=810
10=820
11=830
12=900
13=1100
14=1200
15=1500
16=1210
17=1300
18=1400
19=1800
20=1900
21=2100
22=2300
23=2200
24=2800
25=2700
26=2710
27=1700
28=2500
29=2400
2=2500
3=200
4=300
5=400
6=500
7=600
8=700
9=2400
10=2300
11=800
12=810
13=820
14=830
15=900
16=1100
17=1200
18=1500
19=1210
20=1300
21=1400
22=2100
23=2800
24=2700
25=2710
26=1700
27=1800
28=2200
29=1000
30=2900

View File

@ -35,8 +35,7 @@ int TCli_for::write_rewrite(TBaseisamfile& f, bool re) const
return err;
}
TRectype & TCli_for::vendite() const
TRectype& TCli_for::vendite() const
{
const char t = tipo();
const long c = codice();
@ -44,32 +43,37 @@ TRectype & TCli_for::vendite() const
if (_ven_rec.empty() || t != *(const char *) (*_ven_tipo) || c != (long) *_ven_codice)
{
TLocalisamfile v(LF_CFVEN);
TRectype& vr = ((TCli_for *)this)->_ven_rec; // fool const
((TCli_for *)this)->_ven_rec.zero();
((TCli_for *)this)->_ven_rec.put(CFV_TIPOCF,t);
((TCli_for *)this)->_ven_rec.put(CFV_CODCF, c);
TRectype v_rec(_ven_rec);
if (((TCli_for *)this)->_ven_rec.read(v) != NOERR)
((TCli_for *)this)->_ven_rec = v_rec;
vr.zero();
vr.put(CFV_TIPOCF,t);
vr.put(CFV_CODCF, c);
const TRectype v_rec(vr);
if (vr.read(v) != NOERR)
vr = v_rec;
}
return (TRectype &) _ven_rec;
}
int TCli_for::read(TRectype & rec, word op, word lockop)
int TCli_for::read(const TRectype & rec, word op, word lockop)
{
int err = TMultiple_rectype::read(rec, op, lockop);
_ven_rec.zero();
int err = TMultiple_rectype::read(rec, op, lockop);
return err;
}
int TCli_for::read(char tipo, long codice, word op, word lockop)
{
int err = NOERR;
_ven_rec.zero();
zero();
put(CLI_TIPOCF, tipo);
put(CLI_CODCF, codice);
return TMultiple_rectype::read(op, lockop);
if (tipo > ' ' && codice > 0L)
{
put(CLI_TIPOCF, tipo);
put(CLI_CODCF, codice);
err = TMultiple_rectype::read(op, lockop);
}
return err;
}
int TCli_for::remove(TBaseisamfile& f) const
@ -89,7 +93,8 @@ TCli_for::TCli_for(char tipo, long codice) : TMultiple_rectype( LF_CLIFO ), _ven
_ven_tipo = new TRecfield(_ven_rec, CFV_TIPOCF);
_ven_codice = new TRecfield(_ven_rec, CFV_CODCF);
add_file(LF_INDSP, IND_CODIND);
read(tipo, codice);
if (tipo > ' ' && codice > 0L)
read(tipo, codice);
}
TCli_for::TCli_for(const TRectype & rec) : TMultiple_rectype(rec), _ven_rec(LF_CFVEN)
@ -99,7 +104,7 @@ TCli_for::TCli_for(const TRectype & rec) : TMultiple_rectype(rec), _ven_rec(LF_C
_ven_tipo = new TRecfield(_ven_rec, CFV_TIPOCF);
_ven_codice = new TRecfield(_ven_rec, CFV_CODCF);
add_file(LF_INDSP, IND_CODIND);
read((TRectype &) rec);
read(rec);
}
TCli_for::TCli_for(const TCli_for & c) : TMultiple_rectype(c), _ven_rec(c._ven_rec)

View File

@ -59,7 +59,7 @@ public:
long codice() const { return (long) *_codice; }
bool ok() const { return !empty();}
virtual int read(TRectype & rec, word op = _isequal, word lockop = _nolock);
virtual int read(const TRectype& rec, word op = _isequal, word lockop = _nolock);
int read(char tipo, long codice, word op = _isequal, word lockop = _nolock);
virtual int remove(TBaseisamfile& f) const;

View File

@ -1,3 +1,3 @@
33
0
$doc|0|0|418|31|Documenti di vendita|NDOC||
$doc|0|0|419|31|Documenti di vendita|NDOC||

View File

@ -1,5 +1,5 @@
33
69
71
CODNUM|1|4|0|Codice della numerazione
ANNO|2|4|0|Anno
PROVV|1|1|0|Tipo numerazione <P>rovvisorio <D>efinitivo
@ -69,6 +69,8 @@ G1|11|10|0|Campo generale 1
DATAAGG|5|8|0|Data ultimo aggiornamento
UTENTE|1|10|0|Utente ultimo aggiornamento
COLL_GOLEM|11|10|0|Collegamento lista di GOLEM
DATACONS|5|8|0|Data di consegna
DOCEVASO|8|1|0|Ordine evaso
3
PROVV+ANNO+CODNUM+NDOC|
TIPOCF+CODCF+PROVV+ANNO+DATADOC+CODNUM+NDOC|X

View File

@ -1,3 +1,3 @@
34
0
$rdoc|0|0|314|31|Righe documenti di vendita|NDOC*3||
$rdoc|0|0|381|31|Righe documenti di vendita|NDOC*3||

View File

@ -1,5 +1,5 @@
34
36
41
CODNUM|1|4|0|Codice Numeriazione
ANNO|2|4|0|Anno
PROVV|1|1|0|Tipo numerazione <P>rovvisoria <D>efinitiva
@ -18,8 +18,13 @@ DESCLUNGA|8|1|0|Descrizione estesa caricata
DESCEST|11|10|0|Descrizione estesa
PREZZO|4|18|2|Prezzo o valore
UMQTA|1|2|0|Unita di misura
QTA|4|11|3|Quantita'
QTAEVASA|4|11|3|Quantita' evasa
QTA|4|13|5|Quantita'
QTAEVASA|4|13|5|Quantita' evasa
QTAGG1|4|13|5|1a quantita' aggiuntiva
QTAGG2|4|13|5|2a quantita' aggiuntiva
QTAGG3|4|13|5|3a quantita' aggiuntiva
QTAGG4|4|13|5|4a quantita' aggiuntiva
QTAGG5|4|13|5|5a quantita' aggiuntiva
RIGAEVASA|8|1|0|Riga evasa
TARA|4|15|2|Tara
PNETTO|4|15|2|Peso netto
@ -33,7 +38,7 @@ CODIVA|1|4|0|Codice IVA
ADDIVA|8|1|0|Addebito IVA
ASPBENI|1|2|0|Aspetto dei beni
PSPESA|4|5|2|Percentuale di spesa
CAUSMAG|1|6|0|Causale di magazzino
CAUSMAG|1|4|0|Causale di magazzino
MOVMAG|3|7|0|Numero di movimento id magazzino
CODMAGC|1|5|0|Codice di magazzino per causale collegata
1

View File

@ -6,12 +6,10 @@
[MAIN]
// Descrizione a caratteri del documento
TYPE=Fattura accompagnatoria
// Dove sono le risorse per il documento
MSKFILE=FATTURAA
FRMFILE=FATTURAA.FRM
// modifica
CAMPICALC=TOTMER|TOTPRE|SPESE|SPESINC|BOLLI|IMPONIBILI|IMPOSTE|TOTDOC|SCONTOD|SCONTOT|OMAGGI|PROVVD
CAMPICALC=TOTMER|TOTPRE|SPESE|SPESINC|SPESIMB|SPESTRA|BOLLI|IMPONIBILI|IMPOSTE|TOTDOC|SCONTOD|SCONTOT|OMAGGI|TOTPROVV
CALCOLI=BASESCONTO
TOTPROVV =
// modifica
// Indica se il documento è indirizzato ad un cliente o ad un fornitore
TIPOCF=C
@ -86,12 +84,14 @@ DENCOMSP = S_DISABILITATO //900
PROVCOMSP = S_DISABILITATO //900
STATOSP = S_DISABILITATO //900
DESSTATOSP = S_DISABILITATO //900
DATADOCRIF = S_NASCOSTO //1000
NUMDOCRIF = S_NASCOSTO //1000
DATADOCRIF = S_NORMALE //1000
NUMDOCRIF = S_NORMALE //1000
CODAGVIS = S_NASCOSTO //1110
DESAGVIS = S_NASCOSTO //1110
CODAG = S_NORMALE //1100
DESAG = S_NORMALE //1100
CODZON = S_NORMALE //1100
DESZON = S_NORMALE //1100
CODSPMEZZO = S_OBBLIGATORIO //1200
DESSPMEZZO = S_NORMALE //1200
CODPORTO = S_NORMALE //1210
@ -134,7 +134,12 @@ PNETTO = S_NORMALE //2700
DESUMPNETTO = S_NASCOSTO //2700
NCOLLI = S_NORMALE //2800
BLANK = S_DISABILITATO //4000
//NOTECLI = S_NORMALE //2500
CODNOTE = S_NORMALE //2500
NOTECLI = S_NORMALE //2500
CAUSMAG = S_OBBLIGATORIO //2900
CAUSMAGC = S_DISABILITATO //2900
DESCRMAG = S_NORMALE //2900
DESCRMAGC = S_DISABILITATO //2900
[DEFAULT]
NDEFAULTS=1
@ -188,7 +193,7 @@ NHANDLER=0
820 = S_NORMALE
830 = S_NORMALE
900 = S_NORMALE
1000 = S_NASCOSTO
1000 = S_NORMALE
1100 = S_NORMALE
1200 = S_NORMALE
1210 = S_NORMALE
@ -208,43 +213,37 @@ NHANDLER=0
2700 = S_NORMALE
2710 = S_NORMALE
2800 = S_NORMALE
2900 = S_NASCOSTO
3000 = S_NORMALE
3200 = S_NORMALE
3400 = S_NORMALE
2900 = S_NORMALE
[ORDINEGRUPPI]
NGROUPS=32
NGROUPS=30
1=100
2=200
3=300
4=400
5=500
6=600
7=700
8=800
9=810
10=820
11=830
12=900
13=1100
14=1200
15=1210
16=1300
17=1400
18=1700
19=2100
20=2700
21=2710
22=2800
23=1500
24=1800
25=2200
26=2300
27=2400
28=3000
29=3200
30=2500
31=3400
32=1600
2=2500
3=200
4=300
5=400
6=500
7=600
8=700
9=2400
10=2300
11=800
12=810
13=820
14=830
15=900
16=1100
17=1200
18=1500
19=1210
20=1300
21=1400
22=2100
23=2800
24=2700
25=2710
26=1700
27=1800
28=2200
29=1000
30=2900

View File

@ -96,7 +96,9 @@ DOC3 = S_NASCOSTO //1900
IMPNETTI = S_NORMALE //2200
RAGGREFF = S_NORMALE //2300
SPESEINC = S_NORMALE //2400
ADDBOLLI = S_NORMALE //2500
ADDBOLLI = S_NORMALE //2400
CODNOTE = S_NORMALE //2500
NOTECLI = S_NORMALE //2500
CAUSMAG = S_OBBLIGATORIO //2900
CAUSMAGC = S_DISABILITATO //2900
DESCRMAG = S_NORMALE //2900
@ -166,30 +168,32 @@ NHANDLER=0
2200 = S_NORMALE
2300 = S_NORMALE
2400 = S_NORMALE
2500 = S_NORMALE
2900 = S_NORMALE
4000 = S_NORMALE
[ORDINEGRUPPI]
NGROUPS=22
1=100
2=200
3=300
4=400
5=500
6=600
7=700
8=800
9=810
10=820
11=830
12=1000
13=1100
14=1210
15=1400
16=1800
17=1900
18=2200
20=2300
21=2400
2=2500
3=200
4=300
5=400
6=500
7=600
8=700
9=2400
10=2300
11=800
12=810
13=820
14=830
15=1100
16=1210
17=1400
18=1800
19=1900
20=2200
21=1000
22=2900

View File

@ -12,8 +12,13 @@ END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 12
// FONT "Courier New"
// SIZE 12
END
SECTION GRAPHIC
BEGIN
END
SECTION HEADER ODD 6

View File

@ -131,83 +131,64 @@ CODCONT2 = S_NORMALE
DESCONT = S_DISABILITATO //810
CODCAMP = S_NORMALE
DESCAMP = S_DISABILITATO //820
SCONTOPERC = S_NORMALE
SCONTOPERC = S_NORMALE //830
GRINDSPED = S_NORMALE //900
CODINDSP = S_NORMALE
CODINDSP = S_NORMALE //900
RAGSOCSP = S_DISABILITATO //900
INDSP = S_DISABILITATO
CIVSP = S_DISABILITATO
LOCALITASP = S_DISABILITATO
CAPSP = S_DISABILITATO
COMSP = S_DISABILITATO
DENCOMSP = S_DISABILITATO
PROVCOMSP = S_DISABILITATO
STATOSP = S_DISABILITATO
DESSTATOSP = S_DISABILITATO
DATADOCRIF = S_NORMALE
NUMDOCRIF = S_NORMALE
CODAGVIS = S_NASCOSTO
DESAGVIS = S_NASCOSTO //1110
CODAG = S_NORMALE
INDSP = S_DISABILITATO //900
CIVSP = S_DISABILITATO //900
LOCALITASP = S_DISABILITATO //900
CAPSP = S_DISABILITATO //900
COMSP = S_DISABILITATO //900
DENCOMSP = S_DISABILITATO //900
PROVCOMSP = S_DISABILITATO //900
STATOSP = S_DISABILITATO //900
DESSTATOSP = S_DISABILITATO //900
DATADOCRIF = S_NORMALE //1000
NUMDOCRIF = S_NOCHECK //1000
CODAG = S_NORMALE //1100
DESAG = S_NORMALE //1100
CODZON = S_NORMALE //1100
DESZON = S_NORMALE //1100
CODSPMEZZO = S_OBBLIGATORIO
CODSPMEZZO = S_OBBLIGATORIO //1200
DESSPMEZZO = S_NORMALE //1200
CODPORTO = S_NORMALE
CODPORTO = S_NORMALE //1210
DESPORTO = S_NORMALE //1210
CODNOTESP1 = S_NORMALE
CODNOTESP1 = S_NORMALE //1300
DESNOTESP1 = S_NORMALE //1300
CODNOTESP2 = S_NORMALE
CODNOTESP2 = S_NASCOSTO //1300
DESNOTESP2 = S_NASCOSTO //1300
CAUSTRASP = S_OBBLIGATORIO
DENCAUSTRASP = S_NORMALE
CODVETT1 = S_NASCOSTO
CODVETT2 = S_NASCOSTO
CODVETT3 = S_NASCOSTO
NOMEVETT1 = S_NASCOSTO
NOMEVETT2 = S_NASCOSTO
NOMEVETT3 = S_NASCOSTO
NCOPIE = S_OBBLIGATORIO
DATAPART = S_NASCOSTO
ORAPART = S_NASCOSTO
IMPPAGATO = S_NASCOSTO
ACCSALDO = S_NASCOSTO
DOC1 = S_NASCOSTO
DOC2 = S_NASCOSTO
DOC3 = S_NASCOSTO
DATACONS = S_OBBLIGATORIO
ASPBENI1 = S_NASCOSTO
DESCRBENI1 = S_NASCOSTO
ASPBENI2 = S_NASCOSTO
DESCRBENI2 = S_NASCOSTO
IMPNETTI = S_NASCOSTO
RAGGREFF = S_NASCOSTO
SPESEINC = S_NASCOSTO
ADDBRB = S_NASCOSTO
ADDBTR = S_NASCOSTO
ADDBDE = S_NASCOSTO
CODIVABRB = S_NASCOSTO
CODIVABTR = S_NASCOSTO
CODIVABTRE = S_NASCOSTO
CODIVABDE = S_NASCOSTO
// fine modifiche
UMTARA = S_NASCOSTO
TARA = S_NASCOSTO
DESUMTARA = S_NASCOSTO
UMPNETTO = S_NASCOSTO
PNETTO = S_NASCOSTO
DESUMPNETTO = S_NASCOSTO
NCOLLI = S_NASCOSTO
CAUSMAG1 = S_NASCOSTO
DESCRMAG1 = S_NASCOSTO
CAUSMAG2 = S_NASCOSTO
DESCRMAG2 = S_NASCOSTO
//RAGGR = S_NORMALE
//RAGSOCSP = S_NORMALE
CAUSTRASP = S_NORMALE //1400
DENCAUSTRASP = S_NORMALE //1400
CODVETT1 = S_NORMALE //1500
CODVETT2 = S_NASCOSTO //1500
CODVETT3 = S_NASCOSTO //1500
NOMEVETT1 = S_NORMALE //1500
NOMEVETT2 = S_NASCOSTO //1500
NOMEVETT3 = S_NASCOSTO //1500
NCOPIE = S_NASCOSTO //1600
IMPPAGATO = S_NORMALE //1800
ACCSALDO = S_NASCOSTO //1800
DOC1 = S_NASCOSTO //1900
DOC2 = S_NASCOSTO //1900
DOC3 = S_NASCOSTO //1900
ASPBENI1 = S_OBBLIGATORIO //2100
DESCRBENI1 = S_NORMALE //2100
ASPBENI2 = S_NASCOSTO //2100
DESCRBENI2 = S_NASCOSTO //2100
IMPNETTI = S_NORMALE //2200
RAGGR = S_NORMALE //2300
RAGGREFF = S_NORMALE //2300
SPESEINC = S_NORMALE //2400
ADDBOLLI = S_NORMALE //2400
CODNOTE = S_NORMALE //2500
NOTECLI = S_NORMALE //2500
CAUSMAG = S_OBBLIGATORIO //2900
CAUSMAGC = S_DISABILITATO //2900
DESCRMAG = S_NORMALE //2900
DESCRMAGC = S_DISABILITATO //2900
DATACONS = S_NORMALE //2000
BLANK = S_DISABILITATO //4000
[DEFAULT]
// NDEFAULTS=1
@ -246,25 +227,57 @@ NHANDLER=0
600 = S_NASCOSTO
700 = S_NORMALE
800 = S_NORMALE
900 = S_NASCOSTO
1000 = S_NASCOSTO
1100 = S_NASCOSTO
1200 = S_NASCOSTO
1300 = S_NASCOSTO
1400 = S_NASCOSTO
1500 = S_NASCOSTO
1600 = S_NORMALE
1700 = S_NASCOSTO
1800 = S_NASCOSTO
1900 = S_NASCOSTO
810 = S_NORMALE
820 = S_NORMALE
830 = S_NORMALE
900 = S_NORMALE
1000 = S_NORMALE
1100 = S_NORMALE
1200 = S_NORMALE
1210 = S_NORMALE
1300 = S_NORMALE
1400 = S_NORMALE
1500 = S_NORMALE
1600 = S_NASCOSTO
1800 = S_NORMALE
1900 = S_NORMALE
2000 = S_NORMALE
2100 = S_NASCOSTO
2200 = S_NASCOSTO
2300 = S_NASCOSTO
2400 = S_NASCOSTO
2500 = S_NASCOSTO
2600 = S_NASCOSTO
2700 = S_NASCOSTO
2800 = S_NASCOSTO
2900 = S_NASCOSTO
2100 = S_NORMALE
2200 = S_NORMALE
2300 = S_NORMALE
2400 = S_NORMALE
2500 = S_NORMALE
2900 = S_NORMALE
4000 = S_NORMALE
[ORDINEGRUPPI]
NGROUPS=27
1=100
2=2500
3=200
4=300
5=400
6=500
7=600
8=700
9=2400
10=2300
11=800
12=810
13=820
14=830
15=900
16=1100
17=1200
18=1500
19=1210
20=1300
21=1400
22=2100
23=1800
24=2200
25=1000
26=2900
27=2000

View File

@ -84,127 +84,139 @@ COFI = S_DISABILITATO
STATOPAIV = S_DISABILITATO
PAIVA = S_DISABILITATO
GOLEM = S_NORMALE
INDCF = S_DISABILITATO
CIVCF = S_DISABILITATO
LOCALITACF = S_DISABILITATO
// aggiunti 6
CAPCF = S_DISABILITATO
PROVCOM = S_DISABILITATO
COMCF = S_DISABILITATO
DENCOM = S_DISABILITATO
STATOCF = S_DISABILITATO
DESSTATOCF = S_DISABILITATO
CODVAL1 = S_NORMALE
CODVAL2 = S_NORMALE
NOME_VAL1 = S_NORMALE
NOME_VAL2 = S_NORMALE
CAMBIO = S_NORMALE
// aggiunto
DATA_CAMBIO1 = S_DISABILITATO
DATA_CAMBIO2 = S_DISABILITATO
CODLIN = S_NORMALE
DESLIN = S_DISABILITATO
CODPAG = S_OBBLIGATORIO
DESCODPAG = S_DISABILITATO
DATAINSC = S_NORMALE
//AGGIUNTE 5
DATASCAD1 = S_DISABILITATO
DATASCAD2 = S_DISABILITATO
DATASCAD3 = S_DISABILITATO
DATASCAD4 = S_DISABILITATO
DATASCAD5 = S_DISABILITATO
CODABIA = S_NASCOSTO
CODCABA = S_NASCOSTO
DESBANAPP = S_NASCOSTO
CODABIP = S_NORMALE
CODCABP = S_NORMALE
DESBANPRE = S_DISABILITATO
CODLIST1 = S_OBBLIGATORIO
CODLIST2 = S_OBBLIGATORIO
DESLIST = S_DISABILITATO
// ???????????????????? ********
CODCONT1 = S_NASCOSTO
CODCONT2 = S_NASCOSTO
CODCAMP = S_NASCOSTO
SCONTOPERC = S_NASCOSTO
CODINDSP = S_NASCOSTO
INDSP = S_NASCOSTO
CIVSP = S_NASCOSTO
LOCALITASP = S_NASCOSTO
// AGGIUNTI 6
CAPSP = S_NASCOSTO
COMSP = S_NASCOSTO
DENCOMSP = S_NASCOSTO
PROVCOMSP = S_NASCOSTO
STATOSP = S_NASCOSTO
DESSTATOSP = S_NASCOSTO
DATADOCRIF = S_NASCOSTO
NUMDOCRIF = S_NASCOSTO
CODAGVIS = S_NASCOSTO
CODAG = S_NASCOSTO
CODSPMEZZO = S_NASCOSTO
CODPORTO = S_NASCOSTO
PORTO = S_NASCOSTO
CODNOTESP1 = S_NASCOSTO
CODNOTESP2 = S_NASCOSTO
CAUSTRASP = S_NASCOSTO
DENCAUSTRASP = S_NASCOSTO
CODVETT1 = S_NASCOSTO
CODVETT2 = S_NASCOSTO
CODVETT3 = S_NASCOSTO
NOMEVETT1 = S_NASCOSTO
NOMEVETT2 = S_NASCOSTO
NOMEVETT3 = S_NASCOSTO
NCOPIE = S_OBBLIGATORIO
DATAPART = S_NASCOSTO
ORAPART = S_NASCOSTO
IMPPAGATO = S_NASCOSTO
ACCSALDO = S_NASCOSTO
DOC1 = S_NASCOSTO
DOC2 = S_NASCOSTO
DOC3 = S_NASCOSTO
DATACONS = S_OBBLIGATORIO
ASPBENI1 = S_NASCOSTO
DESCRBENI1 = S_NASCOSTO
ASPBENI2 = S_NASCOSTO
DESCRBENI2 = S_NASCOSTO
IMPNETTI = S_NASCOSTO
RAGGREFF = S_NASCOSTO
SPESEINC = S_NASCOSTO
ADDBRB = S_NASCOSTO
ADDBTR = S_NASCOSTO
ADDBDE = S_NASCOSTO
CODIVABRB = S_NASCOSTO
CODIVABTR = S_NASCOSTO
CODIVABTRE = S_NASCOSTO
CODIVABDE = S_NASCOSTO
// fine modifiche
UMTARA = S_NASCOSTO
TARA = S_NASCOSTO
DESUMTARA = S_NASCOSTO
UMPNETTO = S_NASCOSTO
PNETTO = S_NASCOSTO
DESUMPNETTO = S_NASCOSTO
NCOLLI = S_NASCOSTO
CAUSMAG1 = S_NASCOSTO
DESCRMAG1 = S_NASCOSTO
CAUSMAG2 = S_NASCOSTO
DESCRMAG2 = S_NASCOSTO
//RAGGR = S_NORMALE
//RAGSOCSP = S_NORMALE
GRRECAPITO = S_NORMALE //100
INDCF = S_DISABILITATO //100
CIVCF = S_DISABILITATO //100
LOCALITACF = S_DISABILITATO //100
CAPCF = S_DISABILITATO //100
PROVCOM = S_DISABILITATO //100
COMCF = S_DISABILITATO //100
DENCOM = S_DISABILITATO //100
STATOCF = S_DISABILITATO //100
DESSTATOCF = S_DISABILITATO //100
CODVAL1 = S_NORMALE //200
CODVAL2 = S_NORMALE //200
NOME_VAL1 = S_NORMALE //200
NOME_VAL2 = S_NORMALE //200
CAMBIO = S_NORMALE //200
DATA_CAMBIO1 = S_NORMALE //200
DATA_CAMBIO2 = S_NORMALE //200
CODLIN = S_NORMALE //300
DESLIN = S_NORMALE //300
CODPAG = S_OBBLIGATORIO //400
DESCODPAG = S_NORMALE //400
GRSCADENZE = S_NORMALE //500
DATAINSC = S_NORMALE //500
DATASCAD1 = S_DISABILITATO //500
DATASCAD2 = S_DISABILITATO //500
DATASCAD3 = S_DISABILITATO //500
DATASCAD4 = S_DISABILITATO //500
DATASCAD5 = S_DISABILITATO //500
CODABIA = S_OBBLIGATORIO //600
CODCABA = S_OBBLIGATORIO //600
DESBANAPP = S_NORMALE //600
CODABIP = S_NORMALE //700
CODCABP = S_NORMALE //700
DESBANPRE = S_NORMALE //700
CATVEN = S_NORMALE //800
DESCATVEN = S_DISABILITATO //800
CODLIST1 = S_NORMALE //800
CODLIST2 = S_NORMALE //800
DESLIST = S_DISABILITATO //800
CODCONT1 = S_NORMALE //810
CODCONT2 = S_NORMALE //810
DESCONT = S_DISABILITATO //810
CODCAMP = S_NORMALE //820
DESCAMP = S_DISABILITATO //820
SCONTOPERC = S_NORMALE //830
GRINDSPED = S_NORMALE //900
CODINDSP = S_NORMALE //900
RAGSOCSP = S_DISABILITATO //900
INDSP = S_DISABILITATO //900
CIVSP = S_DISABILITATO //900
LOCALITASP = S_DISABILITATO //900
CAPSP = S_DISABILITATO //900
COMSP = S_DISABILITATO //900
DENCOMSP = S_DISABILITATO //900
PROVCOMSP = S_DISABILITATO //900
STATOSP = S_DISABILITATO //900
DESSTATOSP = S_DISABILITATO //900
DATADOCRIF = S_NASCOSTO //1000
NUMDOCRIF = S_NASCOSTO //1000
CODAGVIS = S_NASCOSTO //1110
DESAGVIS = S_NASCOSTO //1110
CODAG = S_NORMALE //1100
DESAG = S_NORMALE //1100
CODSPMEZZO = S_OBBLIGATORIO //1200
DESSPMEZZO = S_NORMALE //1200
CODPORTO = S_NORMALE //1210
DESPORTO = S_NORMALE //1210
CODNOTESP1 = S_NORMALE //1300
DESNOTESP1 = S_NORMALE //1300
CODNOTESP2 = S_NASCOSTO //1300
DESNOTESP2 = S_NASCOSTO //1300
CAUSTRASP = S_OBBLIGATORIO //1400
DENCAUSTRASP = S_NORMALE //1400
CODVETT1 = S_NORMALE //1500
CODVETT2 = S_NASCOSTO //1500
CODVETT3 = S_NASCOSTO //1500
NOMEVETT1 = S_NORMALE //1500
NOMEVETT2 = S_NASCOSTO //1500
NOMEVETT3 = S_NASCOSTO //1500
NCOPIE = S_NASCOSTO //1600
GRPARTENZA = S_NORMALE //1700
DATAPART = S_NORMALE //1700
ORAPART = S_NORMALE //1700
IMPPAGATO = S_NORMALE //1800
ACCSALDO = S_NORMALE //1800
DOC1 = S_NASCOSTO //1900
DOC2 = S_NASCOSTO //1900
DOC3 = S_NASCOSTO //1900
DATACONS = S_NASCOSTO //2000
ASPBENI1 = S_OBBLIGATORIO //2100
DESCRBENI1 = S_NORMALE //2100
ASPBENI2 = S_NASCOSTO //2100
DESCRBENI2 = S_NASCOSTO //2100
IMPNETTI = S_NORMALE //2200
RAGGREFF = S_NORMALE //2300
SPESEINC = S_NORMALE //2400
ADDBOLLI = S_NORMALE //2400
UMTARA = S_NORMALE //2710
TARA = S_NORMALE //2710
DESUMTARA = S_NASCOSTO //2710
UMPNETTO = S_NORMALE //2700
PNETTO = S_NORMALE //2700
DESUMPNETTO = S_NASCOSTO //2700
NCOLLI = S_NORMALE //2800
DATACONS = S_NORMALE //2000
CAUSMAG = S_NORMALE //2900
DESCRMAG = S_DISABILITATO //2900
CAUSMAGC = S_DISABILITATO //2900
DESCRMAGC = S_DISABILITATO //2900
BLANK = S_DISABILITATO //4000
[SHEET]
NCOLS=4
1=2
2=5
3=6||30
4=9
5=10
6=13
7=8
NCOLS=20
1=FR_CODMAG
2=FR_CODDEP
3=FR_CODART
4=FR_LIV1
5=FR_LIV2
6=FR_LIV3
7=FR_LIV4
8=FR_DESCR
9=FR_UMQTA
10=FR_QTA
11=FR_QTAEVASA
12=FR_RIGAEVASA
13=FR_PREZZO
14=FR_SCONTO
15=FR_PERCPROV
16=FR_CODIVA
17=FR_ADDIVA
18=FR_CAUS
19=FR_CODMAGC
20=FR_CODDEPC
[RIGHE]
NTIPIRIGA=3
@ -241,13 +253,53 @@ NHANDLER=0
1800 = S_NASCOSTO
1900 = S_NASCOSTO
2000 = S_NORMALE
2100 = S_NASCOSTO
2200 = S_NASCOSTO
2300 = S_NASCOSTO
2400 = S_NASCOSTO
2500 = S_NASCOSTO
2600 = S_NASCOSTO
2700 = S_NASCOSTO
2800 = S_NASCOSTO
2900 = S_NASCOSTO
2100 = S_NORMALE
2200 = S_NORMALE
2300 = S_NORMALE
2400 = S_NORMALE
2500 = S_NORMALE
2700 = S_NORMALE
2710 = S_NORMALE
2800 = S_NORMALE
2900 = S_NORMALE
3000 = S_NORMALE
3200 = S_NORMALE
3400 = S_NORMALE
[ORDINEGRUPPI]
NGROUPS=34
1=100
2=200
3=300
4=400
5=500
6=600
7=700
8=800
9=810
10=820
11=830
12=900
13=1100
14=1200
15=1210
16=1300
17=1400
18=1700
19=2100
20=2700
21=2710
22=2800
23=1500
24=1800
25=2200
26=2300
27=2400
28=3000
29=3200
30=2500
31=3400
32=1600
33=2000
34=2900

View File

@ -106,7 +106,8 @@ void TCond_vendita::set_iva(const TString & codiva)
bool TCond_vendita::cerca( int tiporicerca )
{
if( config_ditta().get_bool( "GES", "ve", tiporicerca ) )
TConfig config_ditta(CONFIG_DITTA, "ve");
if( config_ditta.get_bool( "GES", "ve", tiporicerca ) )
{
// Se h attiva la gestione contratti ...
_condv.setkey( 1 );
@ -120,7 +121,7 @@ bool TCond_vendita::cerca( int tiporicerca )
if (codcont.empty())
return FALSE;
_condv.put("TIPO", "C");
if(config_ditta().get_bool("GESCONCC", "ve"))
if(config_ditta.get_bool("GESCONCC", "ve"))
{
_condv.put("TIPOCF", clifo().tipo());
_condv.put("CODCF", clifo().codice());
@ -137,7 +138,7 @@ bool TCond_vendita::cerca( int tiporicerca )
_condv.put("TIPO", "L");
// Se in ditta h abilitata la gestione della categoria di vendita in chiave
// al listino, la carico con gioia
if( config_ditta().get_bool("GESLISCV", "ve"))
if( config_ditta.get_bool("GESLISCV", "ve"))
_condv.put("CATVEN", testa().get(F_CATVEN));
_condv.put("COD", codlist);
}
@ -195,18 +196,18 @@ bool TCond_vendita::cerca( int tiporicerca )
}
break;
case 'R':
_rcondv.put("CODRIGA", anamag().get( "RAGGFIS"));
_rcondv.put("CODRIGA", _anamag.get( "RAGGFIS"));
_rcondv.read();
break;
case 'S':
{
_rcondv.put( "CODRIGA", anamag().get("GRMERC"));
_rcondv.put( "CODRIGA", _anamag.get("GRMERC"));
_rcondv.read( );
}
break;
case 'G':
{
_rcondv.put( "CODRIGA", anamag().get("GRMERC").left(3));
_rcondv.put( "CODRIGA", _anamag.get("GRMERC").left(3));
_rcondv.read( );
}
break;
@ -253,7 +254,7 @@ real TCond_vendita::get_percprovv(char tipoprovv, const TString & codpr, TLocali
val = age.get_real(AGE_PERCPROVV);
break;
case 'M':
val = anamag().get_real(ANAMAG_PERCPROVV);
val = _anamag.get_real(ANAMAG_PERCPROVV);
break;
case 'C':
val = clifo().vendite().get_real(CFV_PERCPROVV);
@ -324,17 +325,17 @@ real TCond_vendita::get_percprovv(char tipoprovv, const TString & codpr, TLocali
campo.rpad(riga().field(FR_CODARTMAG).size());
break;
case 'E':
campo = anamag().get(ANAMAG_GRMERC);
campo.rpad(anamag().curr().length(ANAMAG_GRMERC));
campo = _anamag.get(ANAMAG_GRMERC);
campo.rpad(_anamag.curr().length(ANAMAG_GRMERC));
campo.cut(3);
break;
case 'R':
campo = anamag().get(ANAMAG_GRMERC);
campo.rpad(anamag().curr().length(ANAMAG_GRMERC));
campo = _anamag.get(ANAMAG_GRMERC);
campo.rpad(_anamag.curr().length(ANAMAG_GRMERC));
break;
case 'F':
campo = anamag().get(ANAMAG_RAGGFIS);
campo.rpad(anamag().curr().length(ANAMAG_RAGGFIS));
campo = _anamag.get(ANAMAG_RAGGFIS);
campo.rpad(_anamag.curr().length(ANAMAG_RAGGFIS));
break;
default:
campo.cut(0);
@ -361,17 +362,17 @@ real TCond_vendita::get_percprovv(char tipoprovv, const TString & codpr, TLocali
void TCond_vendita::ricerca(bool load_um_only, bool load_scagl_only)
{
TString codart = anamag().get(ANAMAG_CODART);
TString codart = _anamag.get(ANAMAG_CODART);
const TString codriga = riga().get( FR_CODARTMAG );
_ivarid = clifo().vendite().get_bool(CFV_IVARID);
_load_mask = !load_um_only && !load_scagl_only;
if(anamag().bad() || codriga != codart )
if(_anamag.bad() || codriga != codart )
{
anamag().setkey(1);
anamag().put("CODART", codriga);
if (anamag().read() != NOERR)
_anamag.setkey(1);
_anamag.put("CODART", codriga);
if (_anamag.read() != NOERR)
{
set_prezzo(ZERO);
set_sconto("");
@ -380,16 +381,16 @@ void TCond_vendita::ricerca(bool load_um_only, bool load_scagl_only)
return;
}
}
codart = umart().get( "CODART" );
codart = _umart.get( "CODART" );
const TString16 umriga(riga().get(FR_UMQTA));
const TString16 um(umart().get("UM"));
if (umart().bad() || codart != codriga || um != umriga)
const TString16 um(_umart.get("UM"));
if (_umart.bad() || codart != codriga || um != umriga)
{
umart().setkey(2);
umart().put("CODART", codriga);
umart().put("UM", um);
if (umart().read != NOERR)
umart().zero();
_umart.setkey(2);
_umart.put("CODART", codriga);
_umart.put("UM", umriga);
if (_umart.read() != NOERR)
_umart.zero();
}
const bool found_condv = cerca(A_CONTRATTI) || cerca(A_OFFERTE) || cerca(A_LISTINI);
@ -404,17 +405,18 @@ void TCond_vendita::ricerca(bool load_um_only, bool load_scagl_only)
_load_mask = !load_um_only && !load_scagl_only;
}
else
set_prezzo(umart().get_real("PREZZO"));
set_prezzo(_umart.get_real("PREZZO"));
if (_ivarid)
set_iva(anamag().get(ANAMAG_CODIVAR));
set_iva(_anamag.get(ANAMAG_CODIVAR));
else
set_iva(anamag().get(ANAMAG_CODIVA));
set_iva(_anamag.get(ANAMAG_CODIVA));
const char gestione = config_ditta().get_char( "GESSCORIGA", "ve" );
const bool sco_scagl = config_ditta().get_bool("GESCOSCA", "ve");
const bool sco_um_gest = config_ditta().get_bool("GESSCORIGAUM", "ve");
TConfig config_ditta(CONFIG_DITTA, "ve");
const char gestione = config_ditta.get_char( "GESSCORIGA", "ve" );
const bool sco_scagl = config_ditta.get_bool("GESCOSCA", "ve");
const bool sco_um_gest = config_ditta.get_bool("GESSCORIGAUM", "ve");
switch (gestione)
{
@ -432,17 +434,17 @@ void TCond_vendita::ricerca(bool load_um_only, bool load_scagl_only)
_load_mask = !load_um_only && !load_scagl_only;
}
else
set_sconto(anamag().get("SCONTO"));
set_sconto(_anamag.get("SCONTO"));
break;
case 'A':
{
// Posiziono l'anagrafica
const char rigakey = config_ditta().get_char( "SCORIGAKEY", "ve" );
const char rigakey = config_ditta.get_char( "SCORIGAKEY", "ve" );
_sconti.setkey(1);
_sconti.put("TIPO", "R");
if( config_ditta().get_bool("GESSCORIGACV", "ve"))
_sconti.put("CODCAT", clifo().vendite().get(CFV_CATVEN));
if( config_ditta.get_bool("GESSCORIGACV", "ve"))
_sconti.put("CODCAT", testa().get(F_CATVEN));
if (sco_um_gest)
_sconti.put("UM", riga().get( FR_UMQTA));
_sconti.put("TIPORIGA", rigakey);
@ -457,18 +459,18 @@ void TCond_vendita::ricerca(bool load_um_only, bool load_scagl_only)
_sconti.read();
break;
case 'R':
_sconti.put("CODART", anamag().get("RAGGFIS"));
_sconti.read();
_sconti.put("CODART", _anamag.get("RAGGFIS"));
_sconti.read();
break;
case 'C':
{
_sconti.put( "CODART", anamag().get("GRMERC"));
_sconti.put( "CODART", _anamag.get("GRMERC"));
_sconti.read( );
}
break;
case 'L':
{
_sconti.put("CODART", anamag().get("GRMERC").left(3));
_sconti.put("CODART", _anamag.get("GRMERC").left(3));
_sconti.read();
}
break;
@ -533,7 +535,7 @@ void TCond_vendita::ricerca(bool load_um_only, bool load_scagl_only)
real percprovv = ZERO;
if (seqric[0] == '-')
seqric = config_ditta().get( "AGETIPOPERC", "ve" );
seqric = config_ditta.get( "AGETIPOPERC", "ve" );
int len = seqric.len();
@ -663,11 +665,11 @@ void TCond_vendita::update_omaggi(bool full)
}
}
TCond_vendita::TCond_vendita(TCli_for * clifo, TConfig * ditta, TDocumento_mask * testa, TMask * riga,
TLocalisamfile * anamag, TLocalisamfile * umart)
: _clifo(clifo), _testa(testa), _riga(riga),
TCond_vendita::TCond_vendita(TDocumento_mask * testa, TMask * riga)
: _testa(testa), _riga(riga),
_condv( LF_CONDV ), _rcondv( LF_RCONDV ), _sconti( LF_SCONTI ),
_anamag(anamag), _umart(umart), _config_ditta(ditta), _ivarid(FALSE)
_anamag(LF_ANAMAG), _umart(LF_UMART),
_ivarid(FALSE), _load_mask(FALSE)
{
}

View File

@ -22,15 +22,15 @@ class TCond_vendita : public TObject
real _prezzo;
real _provv;
real _molt_sconto;
TCli_for * _clifo;
TLocalisamfile _condv;
TLocalisamfile _rcondv;
TLocalisamfile * _anamag;
TLocalisamfile _anamag;
TLocalisamfile _sconti;
TLocalisamfile * _umart;
TConfig * _config_ditta;
TDocumento_mask * _testa;
TMask * _riga;
TLocalisamfile _umart;
TDocumento_mask* _testa;
TMask* _riga;
bool _load_mask;
bool cerca(int tiporicerca);
@ -43,14 +43,11 @@ protected:
void set_iva(const TString & codiva);
void update_omaggi(bool full);
TConfig & config_ditta() const { CHECK(_config_ditta, "Configurazione ditta non inizializzata"); return * _config_ditta; }
TDocumento_mask & testa() const { CHECK(_testa, "Maschera testata non inizializzata"); return * _testa; }
TMask & riga() const { CHECK(_testa, "Maschera testata non inizializzata"); return * _riga; }
TLocalisamfile & anamag() const { CHECK(_anamag, "Anagrafica di magazzino non inizializzata") ; return *_anamag; }
TLocalisamfile & umart() const { CHECK(_umart, "Anagrafica di unita' di misura magazzino non inizializzata") ; return *_umart; }
TMask & riga() const { CHECK(_riga, "Maschera riga non inizializzata"); return * _riga; }
public:
TCli_for & clifo() const { CHECK(_clifo, "Cliente/fornitore non inizializzato"); return * _clifo; }
TCli_for & clifo() const { return _testa->doc().clifor(); }
bool set_sconto( const char * exp, bool signal = FALSE );
const TString& get_sconto() const { return _sconto; }
real sconto_val() const { return _molt_sconto;}
@ -59,17 +56,15 @@ public:
real get_percprovv(char tipoprovv, const TString & codpr, TLocalisamfile & age) const;
const TString & get_iva() const { return _codiva; }
void set_clifo( TCli_for * clifo) { _clifo = clifo; }
void set_config( TConfig * ditta) { _config_ditta = ditta; }
// void set_clifo( TCli_for * clifo) { _clifo = clifo; }
// void set_config( TConfig * ditta) { _config_ditta = ditta; }
void set_testa( TDocumento_mask * testa ){ _testa = testa; }
void set_riga( TMask * riga ){ _riga = riga; }
void set_anamag(TLocalisamfile & anamag) { _anamag = &anamag; }
void set_umart(TLocalisamfile & umart) { _umart = &umart; }
void ricerca(bool load_um_only = FALSE, bool load_scagl_only = FALSE);
bool gestum() const { return _condv.get_bool("GESTUM"); }
TCond_vendita(TCli_for * clifo = NULL, TConfig * _ditta = NULL, TDocumento_mask * testa = NULL, TMask * riga = NULL,
TLocalisamfile * anamag = NULL, TLocalisamfile * umart = NULL);
TCond_vendita(TDocumento_mask* testa, TMask* riga);
virtual ~TCond_vendita() {}
};

View File

@ -11,8 +11,8 @@ END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 12
// FONT "Courier New"
// SIZE 12
END

View File

@ -20,8 +20,8 @@ END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 12
// FONT "Courier New"
// SIZE 12
END

View File

@ -17,8 +17,8 @@ END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 12
// FONT "Courier New"
// SIZE 12
END

File diff suppressed because it is too large Load Diff

View File

@ -16,39 +16,23 @@ class TMotore_application : public TRelation_application
{
TArray _file; // Tutti i fiels da usare
TDocumento * _doc;
TCodice_numerazione * _cod_num;
// Puntatore al profilo del documento caricato
TConfig * _pro;
TConfig * _config_ditta;
TConfig * _config_ditta;
// Puntatore alla maschera di ricerca
TMask * _msk;
TMask * _occas_mask;
TDocumento_mask * _docmsk;
// TMask * _occas_mask;
// puntatore alla relazione
TRelation * _rel;
// Puntatore allo sheet delle righe documento
TSheet_field * _sheet;
TCond_vendita * _condv;
// Indica se il documento ha come soggetto un <C>liente o un <F>ornitore
char _tipocf;
TString16 _codnum;
TString16 _tipodoc;
bool _ges_mag;
bool _ges_dep;
TString16 _std_mag;
TString16 _std_dep;
// Array di maschere documento
TAssoc_array _doc_masks;
TLista_elaborazioni _elab;
// Ridefinizione dei metodi virtuali
virtual bool user_create( );
@ -61,7 +45,7 @@ class TMotore_application : public TRelation_application
virtual int read( TMask& m );
virtual int write( const TMask& m );
virtual int rewrite( const TMask& m );
virtual void ini2mask(TConfig& ini, TMask& msk, bool query);
virtual void print();
// Funzioni da associare ad ogni procedura
int user_function( int index );
@ -74,35 +58,11 @@ protected:
void close_files() { _file.destroy(); }
virtual void on_firm_change();
// Procedure e funzioni per la gestione della maschera e dei files
void update_profile();
// Procedure e funzioni per la gestione degli stati
int stato_corrente( );
// Handle che ritorna la maschera per le righe
static TMask * ss_getmask( int numriga, TMask& fullmask);
// Handler che gestisce la richiesta del tipo riga in inserimento
static bool ss_handler( TSheet_field& ss, int r, KEY key );
// Handler per la maschera di ricerca
static bool ndoc_handler( TMask_field& f, KEY key );
static bool num_handler( TMask_field& f, KEY key );
static bool tip_handler( TMask_field& f, KEY key );
static bool occas_code_handler(TMask_field& f, KEY key);
// Handler per la maschera di modifica
static bool clifo_handler( TMask_field& f, KEY key );
static bool occas_handler( TMask_field& f, KEY key );
static bool elabora_handler( TMask_field& f, KEY key );
static bool codlist_handler( TMask_field& f, KEY key );
static bool codcont_handler( TMask_field& f, KEY key );
static bool codcamp_handler( TMask_field& f, KEY key );
static bool print_handler( TMask_field& f, KEY key );
// Configurazione dello sheet dato il profilo
void configura_sheet( TSheet_field& sheet, TConfig& config );
// caricamento Inifile
void ini2mask(TConfig& ini, TMask& m, bool query);
@ -112,18 +72,18 @@ public:
// Funzioni di accesso alle variabili private
TConfig & pro() { CHECK( _pro, "Profilo del documento nullo!" ); return *_pro; }
const TFilename & proname() { return _pro->name(); }
TMask & query_mask() { CHECK( _msk, "Maschera di ricerca nulla!" ); return *_msk; }
TMask & edit_mask() { return (TMask &) _doc_masks[_doc->tipo().codice()]; }
TDocumento_mask & edit_mask() { CHECK( _docmsk, "Maschera di edit nulla!" ); return *_docmsk; }
TRelation & rel() { CHECK( _rel, "Relazione nulla!" ); return *_rel; }
TSheet_field & sheet() { CHECK( _sheet, "Sheet nullo!" ); return *_sheet; }
TCond_vendita & condv() { return *_condv; }
TSheet_field & sheet() { return edit_mask().sheet(); }
TConfig & config_ditta() {return *_config_ditta; }
TLista_elaborazioni & elab() { return _elab; }
TDocumento & doc() {return *_doc; }
TDocumento & doc() {return edit_mask().doc(); }
// Operazione
TMotore_application( ) { }
virtual ~TMotore_application( ) { }
virtual const char* get_next_key( );
const char tipocf( ) { return _tipocf; }
void tipocf( const char tcf ) { _tipocf = tcf; }

View File

@ -8,12 +8,12 @@ PAGE "Gestione documenti" 1 1 60 14
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 0 ""
PROMPT 1 0 "Estremi del documento"
END
STRING F_CODNUM 4
BEGIN
PROMPT 2 1 "Cod. num. "
PROMPT 2 1 "Numerazione "
FIELD CODNUM
HELP "Codice numerazione"
USE %NUM
@ -42,7 +42,7 @@ PAGE "Gestione documenti" 1 1 60 14
STRING F_TIPODOC 4
BEGIN
PROMPT 2 2 "Tipo doc. "
PROMPT 2 2 "Tipo "
FIELD TIPODOC
HELP "Codice tipo documento"
USE %TIP
@ -77,9 +77,10 @@ PAGE "Gestione documenti" 1 1 60 14
NUMBER F_NDOC 6
BEGIN
PROMPT 24 3 "Numero doc. "
PROMPT 24 3 "Numero "
FIELD NDOC
USE LF_DOC
USE LF_DOC
JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF
INPUT ANNO F_ANNO SELECT
INPUT PROVV F_PROVV SELECT
INPUT CODNUM F_CODNUM SELECT
@ -89,6 +90,10 @@ PAGE "Gestione documenti" 1 1 60 14
DISPLAY "Provv" PROVV
DISPLAY "Tipo" TIPODOC
DISPLAY "N.Doc. " NDOC
DISPLAY "Data\ndocumento" DATADOC
DISPLAY "C/F" TIPOCF
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
OUTPUT F_NDOC NDOC
OUTPUT F_STATO STATO
OUTPUT F_TIPODOC TIPODOC

View File

@ -128,7 +128,8 @@ END
NUMBER F_NDOC_ELAB 6
BEGIN
PROMPT 24 11 "Numero doc. "
USE LF_DOC SELECT (TIPOCF==#F_TIPOCF_ELAB)&&(CODCF==#F_CODCF_ELAB)
USE LF_DOC
JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF
INPUT PROVV F_PROVV_ELAB SELECT
INPUT ANNO F_ANNO_ELAB SELECT
INPUT CODNUM F_CODNUM_ELAB SELECT
@ -138,10 +139,15 @@ BEGIN
DISPLAY "Provv" PROVV
DISPLAY "Tipo" TIPODOC
DISPLAY "N.Doc. " NDOC
DISPLAY "Data\ndocumento" DATADOC
DISPLAY "C/F" TIPOCF
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
OUTPUT F_NDOC_ELAB NDOC
CHECKTYPE NORMAL
FLAG "R"
WARNING "Documento inesistente o incompatibile"
ADD RUN ve0 -1
END
LISTBOX F_PROVV_ELAB 14

View File

@ -1475,34 +1475,232 @@ void TMask_generator::genera( const TString& profilo )
if ( _m->_pageopen == TRUE )
{
_m->end( );
intestazione_pagina( );
}
// Generazione del listbox per i tipi di riga da aggiungere nello sheet
_m->control ( T_LISTA, F_LBTIPORIGA, 30 );
_m->begin( );
_m->prompt( 2, 6, "Tipo riga da aggiungere " );
_m->end( );
// Generazione dello sheet : vedi il profilo
TScanner sheet_in( "ve0300b.dat" );
_m->_out << "SPREADSHEET " << F_SHEET << "\n";
_m->begin( );
_m->prompt( 2, 7 );
do_events();
for( i = 0; i < _tab0300b.items( ); i ++ )
genera_item_sheet( _tab0300b.row( i ) );
_m->end( );
_m->end( );
// Generazione pagina dei piedi
{
TToken_string s(_pro->get("CAMPICALC", "MAIN"));
const bool usefiles = _tablefile.empty();
if (s.not_empty())
_m->control( T_BOTTONE, DLG_DELREC, 1002 );
_m->begin( );
_m->prompt( -25, -1, "~Elimina" );
_m->message( "EXIT,127" );
_m->end( );
_m->control( T_BOTTONE, DLG_ELABORA, 1002 );
_m->begin( );
_m->prompt( -35, -1, "E~labora" );
// _m->message( "EXIT,345" );
_m->end( );
_m->control( T_BOTTONE, DLG_PRINT, 1002 );
_m->begin( );
_m->prompt( -45, -1 );
_m->message( "EXIT,20082" );
_m->end( );
_m->control( T_BOTTONE, DLG_CANCEL, 1002 );
_m->begin( );
_m->prompt( -55, -1 );
_m->message( "EXIT,27" );
_m->end( );
// End della toolbar
_m->end( );
do_events();
// Header della prima pagina
_m->pagina( _m->page( ));
_m->control( T_CORNICE, DLG_NULL, 7806 );
_m->begin( );
_m->prompt( 1, 0, "" );
_m->end( );
_m->control( T_STRINGA, F_CODNUM, 4 );
_m->begin( );
_m->prompt( 2, 1, "Cod. num. " );
_m->field("CODNUM");
_m->use("%NUM", 1);
temp_s.format("CODTAB %d", F_CODNUM);
_m->input(temp_s);
_m->display("\"Codice\" CODTAB~\"Descrizione@50\" S0");
temp_s.format("%d S0", F_DESNUM);
_m->output(temp_s);
_m->check(S_NORMALE);
_m->flag( "GDU" );
_m->message( "CO,2@" );
_m->end( );
_m->control( T_STRINGA, F_DESNUM, 50 );
_m->begin( );
_m->prompt( 24, 1 );
_m->flag( "GD" );
_m->message( "CO,3@" );
_m->end( );
_m->control( T_STRINGA, F_TIPODOC, 4 );
_m->begin( );
_m->field( "TIPODOC" );
_m->prompt( 2, 2, "Tipo doc. " );
_m->use("%TIP" , 1);
temp_s.format("CODTAB %d", F_TIPODOC);
_m->input(temp_s);
_m->display("\"Codice\" CODTAB~\"Descrizione@50\" S0");
temp_s.format("%d S0", F_DESTIPODOC);
_m->output(temp_s);
_m->check(S_NORMALE);
_m->flag( "GDU" );
_m->message( "CO,4@" );
_m->end( );
_m->control( T_LISTA, F_TIPOCF, 9 );
_m->begin( );
_m->prompt( 100, 100, "" );
_m->field( "TIPOCF" );
if ( tipocf == "C" )
_m->item("C|Cliente");
else
_m->item("F|Fornitore");
_m->flag( "D" );
_m->end( );
_m->control( T_STRINGA, F_PROVV, 1 );
_m->begin( );
_m->prompt( 100, 100, "<D><P> " );
_m->field( "PROVV" );
_m->flag( "D" );
_m->end( );
_m->control( T_STRINGA, F_DESTIPODOC, 50 );
_m->begin( );
_m->prompt( 24, 2 );
_m->flag( "GD" );
_m->message( "CO,5@" );
_m->end( );
_m->control( T_STRINGA, F_ANNO, 4 );
_m->begin( );
_m->prompt( 2, 3, "Esercizio " );
_m->field( "ANNO" );
_m->flag( "GD" );
_m->message( "CO,9@" );
_m->end( );
_m->control( T_NUMERO, F_NDOC, 6 );
_m->begin( );
_m->prompt( 24, 3, "Numero doc. " );
_m->field( "NDOC" );
_m->message( "CO,6@" );
_m->flag( "GDR" );
_m->end( );
_m->control( T_DATA, F_DATADOC );
_m->begin( );
_m->prompt( 46, 3, "Data " );
_m->field( "DATADOC" );
TString m("CO,7@");
_m->message(m);
// _m->flag( "A" );
_m->end( );
_m->control( T_NUMERO, F_STATO, 1 );
_m->begin( );
_m->prompt( 67, 3, "Stato " );
_m->field( "STATO" );
_m->message( "CO,8@" );
_m->flag( "DG" );
_m->end( );
_m->control( T_STRINGA, F_CODCF, 6 );
_m->begin( );
if ( tipocf == "C" )
{
_m->prompt( 2, 4, "Cliente " );
_m->warning( "Cliente assente" );
_m->help( "Codice del cliente del documento" );
}
else
{
_m->prompt( 2, 4, "Fornitore " );
_m->warning( "Fornitore assente" );
_m->help( "Codice del fornitore del documento" );
}
_m->flag( "R" );
_m->field( "CODCF" );
_m->group( 1 );
_m->use( LF_CLIFO, 1 );
temp_s.format( "TIPOCF \"%s\"~CODCF %d", (const char *)tipocf, F_CODCF);
_m->input( temp_s );
_m->display( "\"Codice\" CODCF~\"Ragione Sociale@50\" RAGSOC~\"Partita IVA@12\" PAIV~\"Sospeso\" SOSPESO" );
temp_s.format( "%d CODCF~%d RAGSOC", F_CODCF, F_RAGSOC );
_m->output( temp_s );
_m->check( S_OBBLIGATORIO );
temp_s.format( "ADD RU cg0 -1 %s", (const char *)tipocf);
_m->outline( temp_s );
_m->message( "CO,10@" );
_m->end( );
_m->control( T_STRINGA, F_RAGSOC, 50 );
_m->begin( );
if ( tipocf == "C" )
{
_m->warning( "Cliente assente" );
_m->help( "Ragione sociale del cliente del documento" );
}
else
{
_m->warning( "Fornitore assente" );
_m->help( "Ragione sociale del fornitore del documento" );
}
_m->prompt( 24, 4, "" );
_m->group( 1 );
_m->use( LF_CLIFO, 2 );
temp_s.format( "TIPOCF \"%s\"~RAGSOC %d", (const char *)tipocf, F_RAGSOC );
_m->input( temp_s );
_m->display( "\"Ragione Sociale@50\" RAGSOC~\"Partita IVA@12\" PAIV~\"Codice\" CODCF" );
temp_s.format( "%d CODCF~%d RAGSOC", F_CODCF, F_RAGSOC );
_m->output( temp_s );
_m->check( S_OBBLIGATORIO );
temp_s.format( "ADD RU cg0 -1 %s", (const char *)tipocf);
_m->outline( temp_s );
_m->message( "CO,11@" );
_m->end( );
_m->line( MASK_FIRST_LINE );
_m->_pageopen = TRUE;
// Generazione
// Scorro l'array dei gruppi, e ne creo una copia ordinata
// con solo i gruppi visibili
TArray sortedgroups;
TString16 chiave, chiavegruppo;
last = _pro->get_int( "NGROUPS", "ORDINEGRUPPI" );
for( i = 1; i <= last; i ++ )
{
do_events();
chiave.format( "%d", i );
const TString key(_pro->get( chiave, "ORDINEGRUPPI" ));
if (key.not_empty())
{
if (isdigit(key[0]))
{
chiavegruppo.GROUPKEY(atoi(key));
if( _gruppi.is_key( chiavegruppo ) )
sortedgroups.add( _gruppi[ (chiavegruppo) ] );
}
else
sortedgroups.add(key);
}
}
TString80 message;
message.format("Generazione profilo : %s", (const char *) profilo);
_bar = new TProgind(sortedgroups.items(), message, FALSE, TRUE);
sortedgroups.for_each( genera_gruppo );
delete _bar;
if ( _m->_pageopen == TRUE )
{
intestazione_pagina( );
TTable* frd = NULL;

View File

@ -1195,7 +1195,7 @@ Y=0
FIELDNAME=CODNOTE
MSKID=F_CODNOTE
TYPE=T_STRINGA
PROMPT="Cod.Note "
PROMPT="Cod. Note "
SIZE=2
USE=%NOT
INPUT=CODTAB F_CODNOTE
@ -1310,7 +1310,8 @@ Y=0
FIELDNAME=DATACONS
MSKID=F_DATACONS
TYPE=T_DATA
PROMPT="Data consegna "
PROMPT="Data consegna "
SPECIAL=CH REQUIRED
[ASPBENI1]
GROUP=2100
@ -1386,7 +1387,7 @@ Y=0
FIELDNAME=PERCSPINC
MSKID=151
TYPE=T_NUMERO
PROMPT="% spese incasso "
PROMPT="% spese incasso "
SIZE=602
[ADDBOLLI]

View File

@ -73,7 +73,7 @@ class TDocumento_form : public TForm
TTable *_tip;
TRelation &_firmrel; // relazione di gestione dei dati della ditta corrente
TString _module; // codice del modulo di carta associato a questo al form
TCond_vendita * _condv;
TString_array _exclude_array_t; // array di tipi riga da escludere dalla stampa
TString_array _exclude_array_a; // array di articoli da escludere dalla stampa
TDocumentoEsteso * _doc; // Documento da stampare
@ -165,9 +165,10 @@ TDocumento_form::TDocumento_form(TRectype&/*TDocumentoEsteso**/ doc, TRelation&
read(nomeform);
_cli_loaded= FALSE;
_is_lista = FALSE;
_condv = new TCond_vendita(NULL);
_doc = new TDocumentoEsteso(doc, _condv); // istanzia TDocumentoEsteso
_condv->set_clifo(&_doc->clifor());
// _doc = new TDocumentoEsteso(doc, _condv); // istanzia TDocumentoEsteso
// _condv = new TCond_vendita(NULL);
// _condv->set_clifo(&_doc->clifor());
_doc = new TDocumentoEsteso(doc); // istanzia TDocumentoEsteso
_docfile = new TDocisamfile(_doc);
_rdocfile = new TRDocisamfile(_doc);
relation()->replace(_docfile,0);
@ -852,6 +853,7 @@ class TStampaDoc_application: public TApplication
TRelation *_firmrel; // puntatore alla relazione che gestisce i dati della ditta corrente
TDocumento_form *_form; // puntatore al form di stampa
TArray _file;
TMask * _selection_mask;
protected:
void open_files(int logicnum, ...);
@ -886,17 +888,31 @@ void TStampaDoc_application::print_selected()
doc.put(DOC_CODNUM, _codnum); // compone la chiave per il record di inizio cursore
doc.put(DOC_ANNO, _anno);
doc.put(DOC_PROVV, _provv);
doc.put(DOC_NDOC, _dalnum);
if (!order_by_num) doc.put(DOC_DATADOC, _dadata);
doc.put(DOC_PROVV, _provv);
arec = doc.curr();
if (order_by_num)
doc.put(DOC_NDOC, _dalnum);
else
doc.put(DOC_DATADOC, _dadata);
doc.setkey(_key);
doc.read(); // trova il record iniziale
darec = doc.curr();
doc.put(DOC_NDOC, _alnum);
if (!order_by_num) doc.put(DOC_DATADOC, _adata);
int err = doc.read(); // trova il record finale
if (err == _iseof) doc.last();
else if (err == _iskeynotfound) doc.prev();
doc.curr() = arec;
if (order_by_num)
{
doc.put(DOC_NDOC, _alnum);
if (doc.read() == _iskeynotfound) // trova il record finale
doc.prev();
}
else
{
doc.put(DOC_DATADOC, _adata); // trova il record finale
doc.put(DOC_NDOC, 999999L);
int err = doc.read(_isgteq);
if (err == NOERR)
err = doc.prev();
}
arec = doc.curr();
if (arec < darec)
@ -1074,6 +1090,7 @@ bool TStampaDoc_application::date2num_handler(TMask_field& f, KEY key)
bool TStampaDoc_application::range_handler(TMask_field& f, KEY key)
{
bool rt = TRUE;
TMask& m = f.mask();
if (key == K_TAB && f.focusdirty())
{
const long lim_sup = atol(f.get());
@ -1108,7 +1125,16 @@ bool TStampaDoc_application::create()
const int argc = TApplication::argc();
_is_lista = argc == 3 && argv(2)[0] == 'L';
on_firm_change();
on_firm_change();
_selection_mask = new TMask("ve1100a");
_selection_mask->set_handler(F_DA_DATADOC, date2num_handler);
_selection_mask->set_handler(F_A_DATADOC, date2num_handler);
_selection_mask->set_handler(F_A_NDOC, range_handler);
if (_is_lista)
{
_selection_mask->hide(F_NCOPIE);
_selection_mask->set_caption("Lista Documenti");
}
if (argc>3)
{ // lettura dei parametri iniziali dalla linea di comando
_codnum= argv(2); // il primo parametro è il codice di numerazione
@ -1149,6 +1175,7 @@ bool TStampaDoc_application::create()
bool TStampaDoc_application::destroy()
{
delete _firmrel; // distruzione della relazione di gestione della ditta corrente
delete _selection_mask;
return TApplication::destroy();
}
@ -1161,17 +1188,9 @@ void TStampaDoc_application::on_firm_change()
bool TStampaDoc_application::select()
{
TMask m("ve1100a");
TMask & m = * _selection_mask;
if (_is_lista)
{
m.hide(F_NCOPIE);
m.set_caption("Lista Documenti");
}
TString wdate;
m.set_handler(F_DA_DATADOC, date2num_handler);
m.set_handler(F_A_DATADOC, date2num_handler);
m.set_handler(F_A_NDOC, range_handler);
m.reset();
if (m.run() == K_ENTER)
{
_codnum= m.get(F_CODNUM); // lettura dei dati dalla maschera
@ -1180,15 +1199,18 @@ bool TStampaDoc_application::select()
_dalnum= m.get_long(F_DA_NDOC);
_alnum= m.get_long(F_A_NDOC);
_ncopie = m.get_int(F_NCOPIE);
if (_alnum == 0) _alnum = 9999999L;
wdate = m.get(F_DA_DATADOC);
if (wdate.not_empty()) _dadata = wdate;
else _dadata = botime;
wdate = m.get(F_A_DATADOC);
if (wdate.not_empty()) _adata = wdate;
else _adata = eotime;
_key = BY_NUM_KEY;
if (m.get(F_DATA_O_NUM) != "N") _key = BY_DATE_KEY;
if (_alnum == 0)
_alnum = 9999999L;
_dadata = m.get_date(F_DA_DATADOC);
if (!_dadata.ok())
_dadata = botime;
_adata = m.get_date(F_A_DATADOC);
if (!_adata.ok())
_adata = eotime;
if (m.get(F_DATA_O_NUM) == "N")
_key = BY_NUM_KEY;
else
_key = BY_DATE_KEY;
return TRUE;
} else return FALSE;
}

View File

@ -1,59 +1,65 @@
#include "ve1100.h"
PAGE "Stampa Documenti Vendita" -1 -1 40 20
PAGE "Stampa Documenti Vendita" -1 -1 60 14
STRING F_CODNUM 4 4
BEGIN
PROMPT 1 1 "Codice Num. "
FLAG "U"
USE %NUM
INPUT CODTAB F_CODNUM
DISPLAY "Cod. Num." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODNUM CODTAB
CHECKTYPE NORMAL
PROMPT 1 1 "Codice numerazione "
FLAG "UP"
USE %NUM
INPUT CODTAB F_CODNUM
DISPLAY "Cod. Num." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODNUM CODTAB
CHECKTYPE NORMAL
END
NUMBER F_ANNO 4 0
BEGIN
PROMPT 26 1 "Anno "
CHECKTYPE REQUIRED
PROMPT 38 1 "Anno "
FLAG "P"
CHECKTYPE REQUIRED
END
LIST F_PROVV 12
BEGIN
PROMPT 1 3 "Tipo numerazione "
ITEM "P|Provvisoria"
PROMPT 1 2 "Tipo numerazione "
ITEM "D|Definitiva"
ITEM "P|Provvisoria"
FLAG "P"
END
NUMBER F_NCOPIE 3
BEGIN
PROMPT 1 4 "Numero copie "
PROMPT 38 2 "Numero copie "
NUM_EXPR {(#THIS_FIELD >= 0)}
FLAG "P"
WARNING "Il numero di copie deve essere positivo"
END
RADIOBUTTON F_DATA_O_NUM 38
RADIOBUTTON F_DATA_O_NUM 58
BEGIN
PROMPT 1 5 "Selezione su "
ITEM "N|Numero documento" MESSAGE ENABLE,1@|CLEAR,2@
ITEM "D|Data documento" MESSAGE ENABLE,2@|CLEAR,1@
PROMPT 1 4 "Selezione su "
ITEM "N|Numero documento" MESSAGE SHOW,1@|HIDE,2@
ITEM "D|Data documento" MESSAGE SHOW,2@|HIDE,1@
FLAG "P"
END
GROUPBOX DLG_NULL 38 5
GROUPBOX DLG_NULL 58 5
BEGIN
PROMPT 1 9 "Selezione per numero"
PROMPT 1 8 "Selezione per numero"
GROUP 1
END
GROUPBOX DLG_NULL 38 5
GROUPBOX DLG_NULL 58 5
BEGIN
PROMPT 1 14 "Selezione per data"
PROMPT 1 8 "Selezione per data"
GROUP 2
END
NUMBER F_DA_NDOC 7 0
BEGIN
PROMPT 2 10 "Dal num. "
PROMPT 2 9 "Dal numero "
USE 33
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
JOIN 13 TO 20 INTO COM=COMCF
@ -72,7 +78,7 @@ END
NUMBER F_A_NDOC 7 0
BEGIN
PROMPT 2 12 "Al num. "
PROMPT 2 11 "Al numero "
USE 33
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
JOIN 13 TO 20 INTO COM=COMCF
@ -92,7 +98,7 @@ END
DATE F_DA_DATADOC
BEGIN
PROMPT 2 15 "Dalla data "
PROMPT 2 9 "Dalla data "
USE 33 KEY 3 SELECT (PROVV==#F_PROVV) && (ANNO==#F_ANNO) && (CODNUM==#F_CODNUM)
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
JOIN 13 TO 20 INTO COM=COMCF
@ -112,7 +118,7 @@ END
DATE F_A_DATADOC
BEGIN
PROMPT 2 17 "Alla data "
PROMPT 2 11 "Alla data "
USE 33 KEY 3 SELECT (PROVV==#F_PROVV) && (ANNO==#F_ANNO) && (CODNUM==#F_CODNUM)
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
JOIN 13 TO 20 INTO COM=COMCF

View File

@ -1,4 +1,3 @@
#include <checks.h>
#include <xvt.h>
@ -7,18 +6,17 @@ extern int ve2200(int argc, char* argv[]); // testate listini/contratti/offerte
extern int ve2300(int argc, char* argv[]); // righe listini/contratti/offerte
extern int ve2400(int argc, char* argv[]); // anagrafica di magazzino
int main( int argc, char** argv) {
int rt= -1;
const int r= (argc>1)?(atoi(&argv[1][1])):(-1);
switch (r) {
case 0: rt = ve2100(argc, argv); break;
case 1: rt = ve2200(argc, argv); break;
case 2: rt = ve2300(argc, argv); break;
case 3: rt = ve2400(argc, argv); break;
default: error_box("Sintassi: %s -[0 [R|D|I] | 1 [L|C|O] | 2 [L|C|O] | 3]", argv[0]); break;
}
return (rt);
int main( int argc, char** argv)
{
const int r = (argc>1)?(atoi(&argv[1][1])):(-1);
switch (r)
{
case 0: ve2100(argc, argv); break;
case 1: ve2200(argc, argv); break;
case 2: ve2300(argc, argv); break;
case 3: ve2400(argc, argv); break;
default: error_box("Sintassi: %s -[0 [R|D|I] | 1 [L|C|O] | 2 [L|C|O] | 3]", argv[0]); break;
}
exit(0);
return 0;
}

View File

@ -200,7 +200,7 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_R_CODRIGA_G CODTAB[1,3]
OUTPUT F_R_DESRIGA_G S0
MESSAGE COPY,F_R_CODRIGA_A
// MESSAGE COPY,F_R_CODRIGA_A
CHECKTYPE FORCED
END
@ -223,7 +223,7 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_R_CODRIGA_S CODTAB
OUTPUT F_R_DESRIGA_S S0
MESSAGE COPY,F_R_CODRIGA_A
// MESSAGE COPY,F_R_CODRIGA_A
CHECKTYPE FORCED
END
@ -245,7 +245,7 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_R_CODRIGA_R CODTAB
OUTPUT F_R_DESRIGA_R S0
MESSAGE COPY,F_R_CODRIGA_A
// MESSAGE COPY,F_R_CODRIGA_A
CHECKTYPE FORCED
END

Some files were not shown because too many files have changed in this diff Show More