Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Riportata la versione 98.01.03pl058 sul main trunk


git-svn-id: svn://10.65.10.50/trunk@6736 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1998-06-10 16:38:58 +00:00
parent 7cfd681203
commit 1e106d3046
55 changed files with 13110 additions and 6962 deletions

View File

@ -479,6 +479,7 @@ bool TInstaller_mask::move_module(const TString& module, TInstall_ini& ini, bool
bool TInstaller_mask::install(const TString& module, int patchlevel)
{
TInstall_ini *ini;
bool ok = FALSE;
TString16 lastrelease; // release che sto installando
int lastpatch=patchlevel; // patchlevel che sto installando
@ -498,15 +499,14 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
if (fexist(ininame))
{
TInstall_ini ini(ininame);
ini.write_protect();
lastpatch=ini.get_int("Patch",module);
lastrelease=ini.get("Versione",module);
if (!can_install(module, ini))
ini = new TInstall_ini (ininame);
ini->write_protect();
lastpatch=ini->get_int("Patch",module);
lastrelease=ini->get("Versione",module);
if (!can_install(module, *ini))
return FALSE;
const int dischi = ini.get_int("Dischi", module);
const int dischi = ini->get_int("Dischi", module);
ok = dischi > 0;
if (!ok)
{
@ -514,7 +514,8 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
}
else
{
ok = pre_process(ini, module);
if (patchlevel==0)
ok = pre_process(*ini, module);
if (!ok) return FALSE;
}
@ -544,7 +545,7 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
while (!ok)
{
message_box("Inserire il disco %d di %d del modulo\n'%s'",
d, dischi, (const char*)ini.get("Descrizione"));
d, dischi, (const char*)ini->get("Descrizione"));
ok = fexist(cmdline);
if (!ok)
{
@ -580,9 +581,9 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
msg.cut(0);
msg << "Aggiornamento del modulo '" << module << "' in corso...";
pi.set_text(msg);
ok = move_module(module, ini, TRUE);
ok = move_module(module, *ini, TRUE);
TAuto_token_string altri(ini.get("Moduli", module));
TAuto_token_string altri(ini->get("Moduli", module));
FOR_EACH_TOKEN(altri, mod)
{
const TString16 submod = mod;
@ -594,18 +595,22 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
TInstall_ini curini;
const TString16 curver = curini.version(submod);
const int curpatch = curini.patch(submod);
const TString16 reqver = ini.version(submod);
const int reqpatch = ini.patch(submod);
const TString16 reqver = ini->version(submod);
const int reqpatch = ini->patch(submod);
int distance = compare_version(reqver, reqpatch, curver, curpatch);
upd = distance > 0;
}
ok &= move_module(submod, ini, upd);
ok &= move_module(submod, *ini, upd);
if (upd && ok)
ini->export_paragraph(submod, ini->default_name());
}
}
}
if (ok)
ok = post_process(ini, module);
{
if (ok) ini->export_paragraph(module, ini->default_name());
}
}
else
{
@ -615,18 +620,19 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
ok = fexist(ininame);
if (ok)
{
TInstall_ini ini(ininame);
ini.write_protect();
lastpatch=ini.get_int("Patch",module);
lastrelease=ini.get("Versione",module);
if (!can_install(module, ini))
ini = new TInstall_ini(ininame);
ini->write_protect();
lastpatch=ini->get_int("Patch",module);
lastrelease=ini->get("Versione",module);
if (!can_install(module, *ini))
return FALSE;
TString_array list;
const int files = ini.build_complete_list(module, list);
const int files = ini->build_complete_list(module, list);
if (files > 0)
{
ok = pre_process(ini, module);
if (patchlevel==0)
ok = pre_process(*ini, module);
if (ok)
{
@ -644,8 +650,7 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
if (ok)
{
ini.export_module_paragraphs(module, ini.default_name());
ok = post_process(ini, module);
if (ok) ini->export_module_paragraphs(module, ini->default_name());
}
}
}
@ -654,10 +659,10 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
if (ok)
{
{
TInstall_ini ini;
ini.set("DiskPath", path);
ini.set("Data", TDate(TODAY), module);
ini.update_prices(ininame);
ini = new TInstall_ini();
ini->set("DiskPath", path);
ini->set("Data", TDate(TODAY), module);
ini->update_prices(ininame);
}
// Non togliere le parentesi graffe soprastanti per permettere l'aggiornamento fisico del .ini (CON LA CHIAMATA DEL DISTRUTTORE)
update_version();
@ -668,6 +673,7 @@ bool TInstaller_mask::install(const TString& module, int patchlevel)
{
// ... installo DOPO tutte le patches successive
install_patches(module, lastrelease, lastpatch);
ok &= post_process(*ini, module);
}
return ok;

View File

@ -7,7 +7,6 @@ Item_01 = "Anagrafiche di base", [PRASSI_001]
Item_02 = "Amministrazione", <cgarea.men>
Item_03 = "Acquisti e vendite", <vearea.men>
Item_04 = "Magazzino e Produzione", <mgarea.men>
Item_05 = "Dichiarazioni", <77area.men>
Item_11 = "Comunicazione", [PRASSI_019]
Item_11 = "Manutenzione", [PRASSI_015]

View File

@ -5,6 +5,7 @@ Module = 0
Item_01 = "Contabilita' semplificata", <csprassi.men>
Item_02 = "Contabilita' generale", <cgprassi.men>
Item_04 = "Gestione cespiti", "cesp -t /cPRAWIN.INI", ""
Item_05 = "Contabilita analitica", <procomm.men>
Item_06 = "Bilanci e Analisi", <abprassi.men>
Item_07 = "Nota integrativa", <niprassi.men>
Item_05 = "Gestione percipienti", <77prassi.men>
Item_06 = "Contabilita analitica", <procomm.men>
Item_07 = "Bilanci e Analisi", <abprassi.men>
Item_08 = "Dichiarazione IVA", "miva -t", ""

View File

@ -68,7 +68,7 @@ FILE* TArchive::ask_disk(
if (first)
{
message_box("Inserire il disco %d nel drive %c:\n"
"File %s", disk, floppy, (const char*)name);
"File '%s'", disk, floppy, (const char*)prev.name());
first = FALSE;
}
else
@ -213,7 +213,7 @@ bool TArchive::fsplit(
if (!os_test_disk_free_space(work, tot))
{
TString16 dev("A:/*.*"); dev[0] = floppy;
TString16 dev("A:/*.*"); dev[0] = floppy; //
TString_array dir;
if (list_files(dev, dir) > 0)
{
@ -223,7 +223,6 @@ bool TArchive::fsplit(
}
}
int disk = 0;
TString buffer(BUFSIZE);

View File

@ -1,4 +1,5 @@
#include <stdlib.h>
#define XVT_INCL_NATIVE
#include <applicat.h>
#include <config.h>
@ -478,7 +479,6 @@ bool TDongle::login(bool test_all_keys)
case _dongle_eutron:
ok = eutron_login(test_all_keys);
break;
case _dongle_network:
ok = network_login(test_all_keys);
break;
default:

View File

@ -936,6 +936,9 @@ public:
// @cmember Cerca il campo identificato da <p id> !!!
TForm_item& find_field(const TString& id) const;
// @cmember Setta il flag di pagina nuova
void set_newpage(bool d = TRUE)
{ _flag.newpage = d; }
// @cmember Setta il flag di fincatura sinistra
void set_finkl(bool d = TRUE)
{ _flag.finkl = d; }

View File

@ -268,6 +268,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.first_row(), k = r1.first_row(); res == 0 && j >= 0 && k >= 0; j = r.succ_row(j), k = r1.succ_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

@ -65,6 +65,8 @@ protected:
// @cmember restituisce il numero di record attualmente caricati nel corpo (da usare nella dirty fields)
int loaded_rows(int logicnum = 0) const;
// @cmember confronta due record multipli
virtual int compare(const TSortable& s) const;
public:
//***********************

View File

@ -1,18 +1,27 @@
[PRASSI77_001]
Caption = "Modello 770"
Caption = "Gestione percipienti"
Picture = <7701.bmp>
Module = 4
Flags = ""
Item_01 = "Immissione dichiarazione", "776mod -1", ""
Item_02 = "Manutenzione dichiarazione", "776mod -0", ""
Item_03 = "Stampe", [PRASSI77_002]
Item_04 = "Parametri di studio", "773mod -0", ""
Item_05 = "Tabella C.A.A.F.", "773mod -3 %caf", ""
Item_06 = "Tabella causali", "773mod -3 %ca7", ""
Item_07 = "Tabella enti previdenziali", "773mod -3 %ent", ""
Item_08 = "Selezione dichiarazione", "776mod -2", ""
Item_09 = "Generazione versamenti", "774 -0", ""
Item_10 = "Azzeramento archivi", "774 -2 T", ""
Item_03 = "Selezione dichiarazione", "776mod -2", ""
Item_04 = "Stampe", [PRASSI77_002]
Item_05 = "Tabelle", [PRASSI77_003]
Item_06 = "Generazione versamenti", "774 -0", ""
Item_07 = "Azzeramento archivi", "774 -2 T", ""
Item_08 = "Parametri di studio", "773mod -0", ""
[PRASSI77_003]
Caption = "Tabelle"
Picture = <7701.bmp>
Module = 0
Flags = ""
Item_01 = "Tabella C.A.A.F.", "773mod -3 %caf", ""
Item_02 = "Tabella causali", "773mod -3 %ca7", ""
Item_03 = "Tabella enti previdenziali", "773mod -3 %ent", ""
[PRASSI77_002]
Caption = "Stampe"

View File

@ -25,6 +25,8 @@ BEGIN
DISPLAY "Anno" ANNOES
DISPLAY "Data reg. @10" DATAREG
DISPLAY "Data comp.@10" DATACOMP
DISPLAY "Descrizione@30" DESCR
DISPLAY "Causale" CODCAUS
OUTPUT F_NUMREG NUMREG
OUTPUT F_DATAREG DATAREG
OUTPUT F_DATACOMP DATACOMP
@ -48,10 +50,7 @@ BEGIN
USE LF_MOVMAG KEY 3
INPUT NUMREG F_NUMREG
INPUT DATAREG F_DATAREG
DISPLAY "N.reg." NUMREG
DISPLAY "Anno" ANNOES
DISPLAY "Data reg." DATAREG
DISPLAY "Data comp." DATACOMP
COPY DISPLAY F_NUMREG
OUTPUT F_NUMREG NUMREG
OUTPUT F_DATAREG DATAREG
OUTPUT F_DATACOMP DATACOMP
@ -68,7 +67,7 @@ BEGIN
USE LF_MOVMAG KEY 4
INPUT NUMREG F_NUMREG
INPUT DATACOMP F_DATACOMP
COPY DISPLAY F_DATAREG
COPY DISPLAY F_NUMREG
OUTPUT F_NUMREG NUMREG
OUTPUT F_DATAREG DATAREG
OUTPUT F_DATACOMP DATACOMP

View File

@ -91,7 +91,7 @@ BEGIN
OUTPUT F_CODMAG CODTAB[1,3]
CHECKTYPE NORMAL
STR_EXPR ((#H_GESTGIA=="X")&&(#F_CODDEP!=""))||(#H_GESTGIA!="X")
// WARNING "Indicare il deposito"
WARNING "Indicare il deposito"
END
STRING F_DESMAG 50

View File

@ -1,4 +1,5 @@
#include <applicat.h>
#include <utility.h>
#include "..\ve\veconf.h"
#include "mglib.h"
@ -119,16 +120,18 @@ bool TStampadatist_mask::handle_subord(TMask_field &fld, KEY k)
break;
case 'M':
case 'D':
fraggcod.set("X");
fraggcod.disable();
m.field(F_FROMLIVELLOART).set(m.artlev().last_level());
m.disable(F_FROMLIVELLOART);
m.field(F_TOLIVELLOART).set("0");
m.disable(F_TOLIVELLOART);
m.field(F_FROMLIVELLOGIAC).set("0");
m.disable(F_FROMLIVELLOGIAC);
m.field(F_TOLIVELLOGIAC).set("0");
m.disable(F_TOLIVELLOGIAC);
fraggcod.reset(); fraggcod.disable();
fraggcod.do_message(0);
fragggiac.reset(); fragggiac.disable();
fragggiac.do_message(0);
//m.field(F_FROMLIVELLOART).set(m.artlev().last_level());
//m.disable(F_FROMLIVELLOART);
//m.field(F_TOLIVELLOART).set("0");
//m.disable(F_TOLIVELLOART);
//m.field(F_FROMLIVELLOGIAC).set("0");
//m.disable(F_FROMLIVELLOGIAC);
//m.field(F_TOLIVELLOGIAC).set("0");
//m.disable(F_TOLIVELLOGIAC);
break;
}
}
@ -141,8 +144,15 @@ 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(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
@ -195,12 +205,13 @@ class TStampa_datistorici : public TSkeleton_application
TCursor * _cur;
TForm_giacprezzi * _form; // to be moved into TPrint_application
protected:
protected:
void open_files(int logicnum, ...);
virtual bool create();
virtual bool destroy();
virtual void main_loop();
virtual void on_firm_change();
void setprint_permagazzini();
void setprint_perarticoli();
@ -208,6 +219,24 @@ public:
TStampa_datistorici() {}
};
void TStampa_datistorici ::on_firm_change()
{
_mask->enable_livellicodice();
}
void TStampa_datistorici::open_files(int logicnum, ...)
{
va_list marker;
va_start(marker, logicnum);
while (logicnum > 0)
{
CHECKD(_file.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum);
_file.add(new TLocalisamfile(logicnum), logicnum);
logicnum = va_arg(marker, int);
}
}
bool TStampa_datistorici::create()
{
@ -229,36 +258,55 @@ void TStampa_datistorici::setprint_permagazzini()
TString cfilter,sortexp,joinexp;
_form = new TForm_giacprezzi("mg3100b", "");
_cur = _form->cursor();
// ********************
// setta il filtro sul cursore
TForm_item & it_filtro=_form->find_field('H',odd_page,FF_FILTRO);
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) << "\" ";
}
rangea.set(srangea.empty() ? "Tutti gli articoli" : format("Articoli %s", (const char *)srangea));
switch (*_mask->get(F_FILTRO)) {
case '0': // non nulli
cfilter << "(STR(" << LF_MAG << "->GIAC!=\"0\"))&&";
it_filtro.set("non nulle");
break;
case 'P': // positivi
cfilter << "(STR(" << LF_MAG << "->GIAC>\"0\"))&&";
it_filtro.set("positive");
break;
case 'N': // negativi
cfilter << "(STR(" << LF_MAG << "->GIAC<\"0\"))&&";
it_filtro.set("negative");
break;
case 'S': // sottoscorta
cfilter << "(STR(GIAC<SCORTAMIN))&&";
it_filtro.set("sottoscorta");
break;
}
if (cfilter.not_empty())
cfilter.cut(cfilter.len()-2);
// abilita/disabilita le sezioni dei totali
_form->setdett_permag(_mask->get_int(F_FROMLIVELLOART),
_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_TOTALIDEPOSITI),
_mask->get_bool(F_DETTAGLIODEP));
_form->find_field('B',odd_page,FF_DIVDEPOSITI).enable(_mask->get_bool(F_TOTALIDEPOSITI));
TString16 ena=((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)!='S')? "1": "0");
_form->find_field('H',odd_page,FF_FLAGGIAC).set(ena );
@ -274,6 +322,21 @@ void TStampa_datistorici::setprint_permagazzini()
_form->find_field('B',odd_page,FF_FLAGVALMEDI).set(ena);
_form->set_codlistino(_mask->get(F_CATVENLISTINO),_mask->get(F_CODLISTINO));
// ********************
// range di stampa magazzini
TForm_item & rangem=_form->find_field('H',odd_page,FF_RANGEMAGAZ);
TString srangem;
if (!_mask->get(F_DAMAG).blank())
{
darec.put("CODMAG",_mask->get(F_DAMAG));
srangem << "da \"" << _mask->get(F_DAMAG) << "\" ";
}
if (!_mask->get(F_AMAG).blank())
{
arec.put("CODMAG",_mask->get(F_AMAG));
srangem << "fino a \"" << _mask->get(F_AMAG) << "\" ";
}
rangem.set(srangem.empty() ? "Tutti i magazzini" : format("Magazzini %s", (const char *)srangem));
darec.put("ANNOES",_mask->get(F_ANNOES));
darec.put("CODMAG",_mask->get(F_DAMAG));
arec.put("ANNOES",_mask->get(F_ANNOES));
@ -287,31 +350,70 @@ void TStampa_datistorici::setprint_perarticoli()
{
TRectype darec(LF_ANAMAG),arec(LF_ANAMAG);
TString cfilter,filter,joinexp;
TString sortexp("ANNOES|CODART|LIVELLO|CODMAG");
TString sortexp("ANNOES|CODART");
if (_mask->get_bool(F_RAGGCODICE))
{
if (_mask->get_int(F_TOLIVELLOART))
sortexp << "[" << _mask->artlev().packed_length(_mask->get_int(F_TOLIVELLOART)) << "]";
}
if (_mask->get_bool(F_RAGGLIVGIAC))
{
sortexp << "|LIVELLO" ;
if (_mask->get_int(F_TOLIVELLOGIAC))
sortexp << "[1," << _mask->artlev().packed_length(_mask->get_int(F_TOLIVELLOGIAC)) << "]";
}
sortexp << "|CODMAG";
char filtro_articoli=*_mask->get(F_FILTRO);
char subordine=*_mask->get(F_ORDINEART);
_form = new TForm_giacprezzi("mg3100a", "");
_form = filtro_articoli == 'T' ?
new TForm_giacprezzi("mg3100aa", "") :
new TForm_giacprezzi("mg3100a", "");;
// ********************
// range di stampa magazzini
TForm_item & rangem=_form->find_field('H',odd_page,FF_RANGEMAGAZ);
TString srangem;
_cur = _form->cursor();
if (*_mask->get(F_DAMAG))
filter << "(CODMAG[1,3]>=" <<'"' << _mask->get(F_DAMAG)<< "\")&&" ;
{
filter << "(" << LF_MAG <<"->CODMAG[1,3]>=" <<'"' << _mask->get(F_DAMAG)<< "\")&&" ;
srangem << "da \"" << _mask->get(F_DAMAG) << "\" ";
}
if (*_mask->get(F_AMAG))
filter << "(CODMAG[1,3]<=" <<'"' << _mask->get(F_AMAG)<< "\")&&" ;
switch (*_mask->get(F_FILTRO)) {
{
filter << "(" << LF_MAG <<"->CODMAG[1,3]<=" <<'"' << _mask->get(F_AMAG)<< "\")&&" ;
srangem << "fino a \"" << _mask->get(F_AMAG) << "\"";
}
rangem.set(srangem.blank()? "Tutti i magazzini" : format("Magazzini %s",(const char *)srangem));
// ********************
// filtro giacenze
TForm_item & it_filtro=_form->find_field('H',odd_page,FF_FILTRO);
switch (filtro_articoli) {
case '0': // non nulli
filter << "(STR(" << LF_MAG << "->GIAC!=\"0\"))&&";
it_filtro.set("non nulle");
break;
case 'P': // positivi
filter << "(STR(" << LF_MAG << "->GIAC>\"0\"))&&";
it_filtro.set("positive");
break;
case 'N': // negativi
filter << "(STR(" << LF_MAG << "->GIAC<\"0\"))&&";
it_filtro.set("negative");
break;
case 'S': // sottoscorta
filter << "(STR(GIAC<SCORTAMIN))&&";
filter << "(STR("<< LF_MAG << "->GIAC < " <<LF_MAG << "->SCORTAMIN))&&";
it_filtro.set("sottoscorta");
break;
}
if (filter.not_empty())
filter.cut(filter.len()-2);
// ******************
// sotto-ordinamenti e range di stampa articoli
TForm_item & rangecm=_form->find_field('H',odd_page,FF_RANGECATMER);
TForm_item & rangea=_form->find_field('H',odd_page,FF_RANGEARTIC);
TString srangea,srangecm;
switch (subordine)
{
case 'C':
@ -321,6 +423,10 @@ void TStampa_datistorici::setprint_perarticoli()
_form->find_field('B',odd_page,"H_CATMER").hide();
_form->find_field('B',odd_page,"TOT_CATMER").hide();
_form->setcatmer(FALSE);
if (!_mask->get(F_DAART).blank())
srangea << "da \"" << _mask->get(F_DAART) << "\" ";
if (!_mask->get(F_AART).blank())
srangea << "fino a \"" << _mask->get(F_AART) << "\"";
break;
case 'D':
_cur->setkey(2);
@ -329,6 +435,10 @@ void TStampa_datistorici::setprint_perarticoli()
_form->find_field('B',odd_page,"H_CATMER").disable();
_form->find_field('B',odd_page,"TOT_CATMER").hide();
_form->setcatmer(FALSE);
if (!_mask->get(F_DADES).blank())
srangea << "da \"" << _mask->get(F_DADES) << "\" ";
if (!_mask->get(F_ADES).blank())
srangea << "fino a \"" << _mask->get(F_ADES) << "\"";
break;
case 'M':
_cur->setkey(3);
@ -339,19 +449,28 @@ void TStampa_datistorici::setprint_perarticoli()
_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) << "\" ";
if (!_mask->get(F_AART).blank())
srangea << "fino a \"" << _mask->get(F_AART) << "\"";
if (!_mask->get(F_DACATMER).blank())
srangecm << "da \"" << _mask->get(F_DACATMER) << "\" ";
if (!_mask->get(F_ACATMER).blank())
srangecm << "fino a \"" << _mask->get(F_ACATMER) << "\"";
rangecm.set(srangecm.empty() ? "Tutte le categorie merceologiche" : format("Categorie merc. %s", (const char *)srangecm));
break;
}
_form->setdett_perart(
_mask->get_int(F_FROMLIVELLOART),
_mask->get_int(F_TOLIVELLOART),
_mask->get_int(F_FROMLIVELLOGIAC),
_mask->get_int(F_TOLIVELLOGIAC),
_mask->get_bool(F_TOTALIMAGAZZINI),
_mask->get_bool(F_TOTALIDEPOSITI));
rangea.set(srangea.empty() ? "Tutti gli articoli" : format("Articoli %s", (const char *)srangea));
_form->find_field('H',odd_page,FF_FLAGGIAC).set((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)!='S') ? "1": "0");
_form->find_field('H',odd_page,FF_FLAGSOTTOS).set((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)=='S') ? "1": "0");
_form->find_field('B',odd_page,FF_FLAGVALMEDI).set(_mask->get_bool(F_VALMEDI) ? "1": "0");
_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_DETTAGLIOMAG));
TString16 ena=((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)!='S')? "1": "0");
_form->find_field('H',odd_page,FF_FLAGGIAC).set(ena );
@ -365,7 +484,6 @@ void TStampa_datistorici::setprint_perarticoli()
ena=_mask->get_bool(F_VALMEDI) ? "1": "0";
_form->find_field('H',odd_page,FF_FLAGVALMEDI).set(ena);
_form->find_field('B',odd_page,FF_FLAGVALMEDI).set(ena);
_form->find_field('B',odd_page,FF_FLAGTOTQTA).set("1");
_form->set_codlistino(_mask->get(F_CATVENLISTINO),_mask->get(F_CODLISTINO));

View File

@ -1,3 +1,4 @@
#include "mg3msk.h"
#define F_ORDINE 101
#define F_ORDINEART 102
#define F_ORDINEMAG 103
@ -12,18 +13,12 @@
#define F_ADES 112
#define F_VALMEDI 113
#define F_STAMPAGIAC 114
#define F_RAGGCODICE 115
#define F_FROMLIVELLOART 116
#define F_TOLIVELLOART 117
#define F_RAGGLIVGIAC 118
#define F_TOTALIMAGAZZINI 119
#define F_TOTALIDEPOSITI 120
#define F_ENABLEMAGAZZINI 121
#define F_DETTAGLIOMAG 122
#define F_DETTAGLIODEP 123
#define F_FROMLIVELLOGIAC 124
#define F_TOLIVELLOGIAC 125
#define F_FILTRO 126
#define F_PREZZIVALORI 127
#define F_CODLISTINO 128

View File

@ -207,9 +207,9 @@ END
BOOLEAN F_RAGGCODICE
BEGIN
PROMPT 2 14 "Raggruppo gli articoli"
MESSAGE FALSE CLEAR,F_FROMLIVELLOART|CLEAR,F_TOLIVELLOART|CHECK,F_TOLIVELLOART
MESSAGE TRUE ENABLE,F_FROMLIVELLOART|ENABLE,F_TOLIVELLOART|CHECK,F_TOLIVELLOART
PROMPT 2 14 "Stampa totali livelli di codice"
MESSAGE FALSE CLEAR,F_FROMLIVELLOART|CLEAR,F_TOLIVELLOART|CHECK,F_TOLIVELLOART
MESSAGE TRUE ENABLE,F_FROMLIVELLOART|ENABLE,F_TOLIVELLOART|CHECK,F_TOLIVELLOART
END
NUMBER F_FROMLIVELLOART 1

View File

@ -20,7 +20,7 @@ END
GENERAL
BEGIN
OFFSET 0 1
FONT "Courier New"
// FONT "Courier New"
// SIZE 12
END
@ -28,7 +28,7 @@ SECTION GRAPHIC
BEGIN
END
SECTION HEADER ODD 6
SECTION HEADER ODD 8
STRINGA 1 40 1
BEGIN
@ -57,10 +57,35 @@ BEGIN
PROMPT 45 2 "Stampa dati storici giacenze"
END
STRINGA FF_FILTRO 20
BEGIN
KEY "RANGE"
PROMPT 74 2 ""
END
STRINGA FF_RANGEARTIC 40
BEGIN
KEY "RANGE"
PROMPT 1 3 ""
END
STRINGA FF_RANGEMAGAZ 40
BEGIN
KEY "RANGE"
PROMPT 1 4 ""
END
STRINGA FF_RANGECATMER 40
BEGIN
KEY "RANGE"
PROMPT 45 4 ""
END
STRINGA 5 146
BEGIN
KEY "Separatore (iniziale)"
PROMPT 1 3 "---------------------------------------------------------------------------------------------------------------------------------------------------"
PROMPT 1 5 "---------------------------------------------------------------------------------------------------------------------------------------------------"
END
@ -103,117 +128,118 @@ END
FLAG "H"
KEY "FLAG VALORI MEDI"
ITEM "0|N"
// MESSAGE SHOW,FG_VALORI@|HIDE,FG_VALMEDI@
MESSAGE HIDE,FG_VALMEDI@
MESSAGE HIDE,FG_VALMEDI@
ITEM "1|Y"
// MESSAGE HIDE,FG_VALORI@|SHOW,FG_VALMEDI@
MESSAGE SHOW,FG_VALMEDI@
MESSAGE SHOW,FG_VALMEDI@
END
STRINGA 6 20
BEGIN
KEY "H1"
PROMPT 2 4 "Codice"
PROMPT 2 6 "Codice"
END
STRINGA 7 40
BEGIN
KEY "H1"
PROMPT 24 4 "Descrizione"
PROMPT 31 6 "Descrizione"
END
STRINGA 7 40
BEGIN
KEY "H1"
PROMPT 45 4 "UM"
PROMPT 54 6 "UM"
END
STRINGA 8 12
BEGIN
KEY "H1"
PROMPT 56 4 "Giac."
PROMPT 68 6 "Giac."
GROUP FG_RIGAPREZZI
END
STRINGA 8 12
BEGIN
KEY "H1"
PROMPT 57 4 "Acq."
PROMPT 65 6 "Acq."
GROUP FG_RIGAVALORI
END
STRINGA 9 12
BEGIN
KEY "H1"
PROMPT 68 4 "Ult.costo"
PROMPT 74 6 "Ult.costo"
GROUP FG_RIGAPREZZI
END
STRINGA 9 12 2
BEGIN
KEY "H1"
PROMPT 67 4 "Val.Acq."
GROUP FG_RIGAVALORI,FG_VALORI
PROMPT 75 6 "Val.Acq."
GROUP FG_RIGAVALORI FG_VALORI
END
STRINGA 9 12 2
BEGIN
KEY "H1"
PROMPT 67 5 "Medio"
GROUP FG_RIGAVALORI,FG_VALMEDI
FLAG "H"
PROMPT 75 7 " Medio"
GROUP FG_RIGAVALORI FG_VALMEDI
END
STRINGA 10 12
BEGIN
KEY "H1"
PROMPT 83 4 "Ven."
PROMPT 91 6 "Ven."
GROUP FG_RIGAVALORI
END
STRINGA 10 12
BEGIN
KEY "H1"
PROMPT 81 4 "Prezzo"
PROMPT 90 6 "Prezzo"
GROUP FG_RIGAPREZZI
END
STRINGA 11 12
BEGIN
KEY "H1"
PROMPT 93 4 "Val.Ven."
GROUP FG_RIGAVALORI,FG_VALORI
PROMPT 101 6 "Val.Ven."
GROUP FG_RIGAVALORI FG_VALORI
END
STRINGA 11 12
BEGIN
KEY "H1"
PROMPT 93 5 "Medio"
GROUP FG_RIGAVALORI,FG_VALMEDI
FLAG "H"
PROMPT 101 7 " Medio"
GROUP FG_RIGAVALORI FG_VALMEDI
END
STRINGA 12 12
BEGIN
KEY "H1"
PROMPT 109 4 "Rim."
PROMPT 117 6 "Rim."
GROUP FG_RIGAVALORI
END
STRINGA 13 12
BEGIN
KEY "H1"
PROMPT 119 4 "Val.Rim."
GROUP FG_RIGAVALORI,FG_VALORI
PROMPT 127 6 "Val.Rim."
GROUP FG_RIGAVALORI FG_VALORI
END
STRINGA 13 12
BEGIN
KEY "H1"
PROMPT 119 5 "Medio"
GROUP FG_RIGAVALORI,FG_VALMEDI
FLAG "H"
PROMPT 127 7 " Medio"
GROUP FG_RIGAVALORI FG_VALMEDI
END
STRINGA 14 12
BEGIN
KEY "H1"
PROMPT 131 4 "Giacenza"
PROMPT 139 6 "Giacenza"
GROUP FG_RIGAVALORI
END
STRINGA 15 12
BEGIN
KEY "H1"
PROMPT 131 4 "Scorta-Giac."
PROMPT 139 6 "Scorta-Giac."
GROUP FG_RIGAVALORI
END
STRINGA 17 146
BEGIN
KEY "Separatore (iniziale)"
PROMPT 1 6 "---------------------------------------------------------------------------------------------------------------------------------------------------"
KEY "Separatore (finale)"
PROMPT 1 8 "---------------------------------------------------------------------------------------------------------------------------------------------------"
END
END
@ -264,14 +290,14 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE HIDE,FG_VALORI@|ENABLE,FG_VALMEDI@
END
SECTION H_CATMER 1 1 2 GROUP
STRINGA 11 12 2
SECTION H_CATMER 1 1 1 GROUP
STRINGA 11 20 1
BEGIN
KEY "Codice CATMER"
PROMPT 2 1 ""
MESSAGE _USER,CODCATMER
PROMPT 2 1 "Cat. merc."
MESSAGE _USER,CODCATMER|COPY,1551
END
STRINGA 12 30 2
STRINGA 12 70 1
BEGIN
KEY "CATMER"
PROMPT 3 1 ""
@ -279,9 +305,9 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
STRINGA 60 40 1
STRINGA 60 20 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,15@|_USER,RESET_UM,1553
@ -289,19 +315,19 @@ SECTION BODY ODD 0 COLUMNWISE
SECTION GRUPPI_CATMER 1 0 0 FILE LF_ANAMAG GROUP GRMERC
STRINGA 60 40 1
STRINGA 60 20 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,14@|_USER,RESET_UM,1453
END
SECTION H_GCODART1 1 1 1 HEADER
STRINGA 16 12 2
STRINGA 16 20 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,1
MESSAGE _USER,CODGRUPPOART,1|COPY,1451
END
STRINGA 17 30 2
BEGIN
@ -311,20 +337,20 @@ SECTION BODY ODD 0 COLUMNWISE
END
END
SECTION GRUPPI_CODART1 1 0 0 FILE LF_ANAMAG GROUP CODART
SECTION GRUPPI_CODART1 1 0 0 FILE LF_ANAMAG GROUP CODART
STRINGA 60 40 1
BEGIN
FLAGS "H"
FLAG "H"
KEY ""
PROMPT 2 1 ""
MESSAGE RESET,13@|_USER,RESET_UM,1353
END
SECTION H_GCODART2 1 1 1 HEADER
STRINGA 16 12 2
STRINGA 16 20 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,2
MESSAGE _USER,CODGRUPPOART,2|COPY,1351
END
STRINGA 17 30 2
BEGIN
@ -337,18 +363,18 @@ SECTION BODY ODD 0 COLUMNWISE
SECTION GRUPPI_CODART2 1 0 0 FILE LF_ANAMAG GROUP CODART
STRINGA 60 40 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,12@|_USER,RESET_UM,1253
END
SECTION H_GCODART3 1 1 1 HEADER
STRINGA 16 12 2
STRINGA 16 20 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,3
MESSAGE _USER,CODGRUPPOART,3|COPY,1251
END
STRINGA 17 30 2
BEGIN
@ -359,19 +385,19 @@ SECTION BODY ODD 0 COLUMNWISE
END
SECTION GRUPPI_CODART3 1 0 0 FILE LF_ANAMAG GROUP CODART
STRINGA 60 40 1
STRINGA 60 20 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 1 1 ""
PROMPT 2 1 ""
MESSAGE RESET,11@|_USER,RESET_UM,1153
END
SECTION H_GCODART4 1 1 1 HEADER
STRINGA 16 12 2
STRINGA 16 20 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,4
MESSAGE _USER,CODGRUPPOART,4|COPY,1151
END
STRINGA 17 30 2
BEGIN
@ -384,17 +410,17 @@ SECTION BODY ODD 0 COLUMNWISE
SECTION GRUPPI_CODART4 1 0 0 FILE LF_ANAMAG GROUP CODART
STRINGA 60 40 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,10@|_USER,RESET_UM,1053
END
SECTION H_GCODART5 1 1 1 HEADER
STRINGA 16 12 2
STRINGA 16 20 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,5
MESSAGE _USER,CODGRUPPOART,5|COPY,1051
END
STRINGA 17 30 2
BEGIN
@ -407,17 +433,17 @@ SECTION BODY ODD 0 COLUMNWISE
SECTION GRUPPI_CODART5 1 0 0 FILE LF_ANAMAG GROUP CODART
STRINGA 60 40 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,9@|_USER,RESET_UM,953
END
SECTION H_GCODART6 1 1 1 HEADER
STRINGA 16 12 2
STRINGA 16 20 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,6
MESSAGE _USER,CODGRUPPOART,6|COPY,951
END
STRINGA 17 30 2
BEGIN
@ -430,17 +456,17 @@ SECTION BODY ODD 0 COLUMNWISE
SECTION GRUPPI_CODART6 1 0 0 FILE LF_ANAMAG GROUP CODART
STRINGA 60 40 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,8@|_USER,RESET_UM,853
END
SECTION H_GCODART7 1 1 1 HEADER
STRINGA 16 12 2
STRINGA 16 20 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,7
MESSAGE _USER,CODGRUPPOART,7|COPY,851
END
STRINGA 17 30 2
BEGIN
@ -453,18 +479,18 @@ SECTION BODY ODD 0 COLUMNWISE
SECTION GRUPPI_CODART7 1 0 0 FILE LF_ANAMAG GROUP CODART
STRINGA 60 40 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,7@|_USER,RESET_UM,753
END
SECTION H_GCODART8 1 1 1 HEADER
STRINGA 16 12 2
STRINGA 16 20 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,8
MESSAGE _USER,CODGRUPPOART,8|COPY,751
END
STRINGA 17 30 2
BEGIN
@ -477,17 +503,18 @@ SECTION BODY ODD 0 COLUMNWISE
SECTION GRUPPI_CODART8 1 0 0 FILE LF_ANAMAG GROUP CODART
STRINGA 60 40 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,6@|_USER,RESET_UM,653
END
SECTION H_ARTICOLO 1 1 1 HEADER
STRINGA 2020 12 2
STRINGA 2020 20 1
BEGIN
KEY "CODICE articolo"
PROMPT 2 1 ""
FIELD CODART
MESSAGE COPY,651
END
STRINGA 21 30 2
BEGIN
@ -499,7 +526,7 @@ SECTION BODY ODD 0 COLUMNWISE
NUMERO 22 12
BEGIN
KEY "ULC"
FLAGS "H"
FLAG "H"
PROMPT 7 2 ""
FIELD LF_ANAMAG->ULTCOS1
MESSAGE COPY,648
@ -507,108 +534,158 @@ SECTION BODY ODD 0 COLUMNWISE
NUMERO 23 12
BEGIN
KEY "PREZZO"
FLAGS "H"
FLAG "H"
PROMPT 7 2 ""
MESSAGE _USER,PREZZO|COPY,649
END
END
SECTION FILE_GIACENZE 1 0 0 FILE LF_MAG
STRINGA 60 40 1
STRINGA 60 20 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,5@
END
SECTION H_GLIVGIAC1 1 1 1 HEADER
STRINGA 31 50 1
STRINGA 31 20 1
BEGIN
KEY "Livello giac"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOGIAC,1|COPY,551
END
STRINGA 31 30 1
BEGIN
KEY "Livello giac"
PROMPT 3 1 ""
MESSAGE _USER,GRUPPOGIAC,1|COPY,550
END
END
SECTION GRUPPI_LIVGIAC1 1 0 0 FILE LF_MAG GROUP LIVELLO
STRINGA 60 40 1
SECTION GRUPPI_LIVGIAC1 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,4@
END
SECTION H_GLIVGIAC2 1 1 1 HEADER
STRINGA 31 50 1
STRINGA 31 20 1
BEGIN
KEY "Livello giac"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOGIAC,2|COPY,451
END
STRINGA 31 30 1
BEGIN
KEY "Livello giac"
PROMPT 3 1 ""
MESSAGE _USER,GRUPPOGIAC,2|COPY,450
END
END
SECTION GRUPPI_LIVGIAC2 1 0 0 FILE LF_MAG GROUP LIVELLO
STRINGA 60 40 1
SECTION GRUPPI_LIVGIAC2 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,3@
END
SECTION H_GLIVGIAC3 1 1 1 HEADER
STRINGA 31 50 1
STRINGA 31 20 1
BEGIN
KEY "Livello giac"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOGIAC,3|COPY,351
END
STRINGA 31 30 1
BEGIN
KEY "Livello giac"
PROMPT 3 1 ""
MESSAGE _USER,GRUPPOGIAC,3|COPY,350
END
END
SECTION GRUPPI_LIVGIAC3 1 0 0 FILE LF_MAG GROUP LIVELLO
SECTION GRUPPI_LIVGIAC3 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 40 1
BEGIN
FLAGS "H"
FLAG "H"
KEY "CATMER"
PROMPT 2 1 ""
MESSAGE RESET,2@
END
SECTION H_GLIVGIAC4 1 1 1 HEADER
STRINGA 31 50 1
STRINGA 31 20 1
BEGIN
KEY "Livello giac"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOGIAC,4|COPY,251
END
STRINGA 31 30 1
BEGIN
KEY "Livello giac"
PROMPT 3 1 ""
MESSAGE _USER,GRUPPOGIAC,4|COPY,250
END
END
SECTION GRUPPI_LIVGIAC4 1 0 0 FILE LF_MAG GROUP LIVELLO
STRINGA 60 40 1
SECTION GRUPPI_LIVGIAC4 1 0 0 FILE LF_MAG GROUP CODART
STRINGA 60 20 1
BEGIN
FLAGS "H"
KEY "MAGAZZ"
FLAG "H"
KEY "DESCR. MAGAZZ"
PROMPT 2 1 ""
MESSAGE RESET,1@
FIELD 500@->s0
MESSAGE RESET,1@|COPY,150
END
SECTION H_MAGAZZINO 1 1 1 HEADER
STRINGA 60 40 1
BEGIN
KEY "codice magazzino"
PROMPT 2 1 "Magazzino "
FIELD 500@->s0
MESSAGE COPY,150
END
STRINGA 61 50 1
BEGIN
FLAG "H"
KEY "COD. MAGAZZ"
PROMPT 3 1 ""
FIELD 500@->CODTAB
MESSAGE COPY,151
END
SECTION H_MAGAZZINO 1 0 0 GROUP
SECTION H_MAGAZZINO_NODEP 1 0 0 STR_EXPR 500@->B0!="X" // NON DIVISO IN DEPOSITI
STRINGA 60 40 1
BEGIN
PROMPT 2 1 ""
KEY "codice magazzino"
MESSAGE HIDE,TOT_DEPOSITO
END
END
SECTION H_MAGAZZINO_DEP 1 1 1 STR_EXPR 500@->B0=="X" // DIVISIONE IN DEPOSITI
STRINGA 60 20 1
BEGIN
KEY "descr magazzino"
FIELD 500@->CODTAB[1,3]
PROMPT 2 1 " Magazzino "
MESSAGE SHOW,TOT_DEPOSITO
END
STRINGA 61 70 1
BEGIN
KEY "codice 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 GROUP
END
SECTION TOT_DEPOSITO 1 1 1 GROUP
STRINGA 51 12
STRINGA 51 20
BEGIN
KEY "CODICE"
PROMPT 2 1 " Deposito"
FIELD 501@->CODTAB[4,5]
PROMPT 2 1 " Deposito "
END
STRINGA 52 30
BEGIN
@ -730,13 +807,13 @@ SECTION BODY ODD 0 COLUMNWISE
END // depositi dello stesso magazzino
END // MAGAZZ
SECTION TOT_MAGAZZINO 1 1 1 GROUP
STRINGA 151 12 2
SECTION TOT_MAGAZZINO 1 1 1 GROUP
STRINGA 151 20 1
BEGIN
KEY "Magazzino"
PROMPT 2 1 " Totale mag."
PROMPT 2 1 " Totale mag. "
END
STRINGA 150 30 2
STRINGA 150 30 1
BEGIN
KEY "Magazzino"
PROMPT 3 1 ""
@ -831,12 +908,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GGIAC4
SECTION TOT_GLIVGIAC4 1 1 1 GROUP
STRINGA 251 7 2
STRINGA 251 20 1
BEGIN
KEY "Livello giac4"
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 250 35 2
STRINGA 250 30 2
BEGIN
PROMPT 3 1 ""
END
@ -933,12 +1010,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GGIAC3
SECTION TOT_GLIVGIAC3 1 1 1 GROUP
STRINGA 351 7 2
STRINGA 351 20 1
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 350 35 2
STRINGA 350 30 2
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1036,12 +1113,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GGIAC2
SECTION TOT_GLIVGIAC2 1 1 1 GROUP
STRINGA 451 7 2
STRINGA 451 20 1
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 450 35 2
STRINGA 450 30 2
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1137,12 +1214,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot ggiac2
END // GGIAC1
SECTION TOT_GLIVGIAC1 1 1 1 GROUP
STRINGA 551 7 2
STRINGA 551 20 1
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 550 35 2
STRINGA 550 30 2
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1239,19 +1316,11 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot ggiac1
END // FILE GIACENZE
//SECTION TOT_ARTICOLO 1 1 1 GROUP
// FLAGS "R"
// STRINGA 883 32 1
// BEGIN
// KEY ""
// PROMPT 1 1 "CAZZOTTO "
// END
//END
SECTION TOT_ARTICOLO 1 1 1 FOOTER
STRINGA 651 12 2
STRINGA 651 20 1
BEGIN
KEY ""
PROMPT 2 1 "Articolo "
PROMPT 2 1 ""
END
STRINGA 650 30 2
BEGIN
@ -1363,12 +1432,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART8
SECTION TOT_GART8 1 1 1 FOOTER
STRINGA 751 8 2
STRINGA 751 20
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 750 34 2
STRINGA 750 30
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1408,7 +1477,7 @@ SECTION BODY ODD 0 COLUMNWISE
BEGIN
KEY "ven"
PROMPT 8 1 ""
PICTURE "1#######,@#"
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,753|ADD,843
GROUP 7
END
@ -1466,12 +1535,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART7
SECTION TOT_GART7 1 1 1 FOOTER
STRINGA 851 8 2
STRINGA 851 20 1
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 850 34 2
STRINGA 850 30 1
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1569,12 +1638,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART6
SECTION TOT_GART6 1 1 1 FOOTER
STRINGA 951 8 2
STRINGA 951 20 1
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 950 34 2
STRINGA 950 30 1
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1672,12 +1741,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART5
SECTION TOT_GART5 1 1 1 FOOTER
STRINGA 1051 8 2
STRINGA 1051 20 1
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 1050 34 2
STRINGA 1050 30 1
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1772,12 +1841,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART4
SECTION TOT_GART4 1 1 1 FOOTER
STRINGA 1151 8 2
STRINGA 1151 20 1
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 1150 34 2
STRINGA 1150 30 1
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1872,12 +1941,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART3
SECTION TOT_GART3 1 1 1 FOOTER
STRINGA 1251 8 2
STRINGA 1251 20 1
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 1250 34 2
STRINGA 1250 30 1
BEGIN
KEY ""
PROMPT 3 1 ""
@ -1972,12 +2041,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART2
SECTION TOT_GART2 1 1 1 FOOTER
STRINGA 1351 8 2
STRINGA 1351 20 1
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 1350 34 2
STRINGA 1350 30 1
BEGIN
KEY ""
PROMPT 3 1 ""
@ -2072,12 +2141,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART1
SECTION TOT_GART1 1 1 1 FOOTER
STRINGA 1451 8 2
STRINGA 1451 20 1
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 1450 34 2
STRINGA 1450 30 1
BEGIN
KEY ""
PROMPT 3 1 ""
@ -2173,12 +2242,12 @@ SECTION BODY ODD 0 COLUMNWISE
END // GRUPPI_CATMER
SECTION TOT_CATMER 1 1 1 FOOTER
STRINGA 1551 8 2
STRINGA 1551 20 1
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 1550 34 2
STRINGA 1550 30 1
BEGIN
KEY ""
PROMPT 3 1 ""
@ -2270,6 +2339,6 @@ SECTION BODY ODD 0 COLUMNWISE
END // section body, loop anamag
SECTION FOOTER ODD 2
END // fine footer
END // fine footersection
END // fine form

2344
mg/mg3100aa.frm Executable file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +1,22 @@
#include <applicat.h>
#include <utility.h>
#include "mglib.h"
#include "mg3200.h"
#include "mg3frm.h"
class TStampadisp_mask: public TMask
class TStampadisp_mask: public TStampemg_mask
{
static bool handle_ragg(TMask_field &fld, KEY k); // handler
static bool handle_liv(TMask_field &fld, KEY k); // handler
static bool handle_subord(TMask_field &fld, KEY k); // handler
TMagazzini _magazz_ini;
public:
TMagazzini magazz_ini() {return _magazz_ini;}
TStampadisp_mask();
virtual ~TStampadisp_mask(){};
};
TStampadisp_mask::TStampadisp_mask():
TMask("mg3200")
TStampemg_mask("mg3200")
{
TCodgiac_livelli giaclev;
TCodart_livelli artlev;
@ -53,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_DETTAGLIOMAG) || !fld.mask().get_bool(F_DETTAGLIODEP))
if (!fld.mask().get_bool(F_TOTALIDEPOSITI) || !fld.mask().get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
@ -76,8 +75,15 @@ bool TStampadisp_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(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
@ -102,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_DETTAGLIOMAG) || !m.get_bool(F_DETTAGLIODEP))
if (!m.get_bool(F_TOTALIDEPOSITI) || !m.get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
@ -134,6 +140,8 @@ protected:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
virtual void on_firm_change();
void setprint_permagazzini();
void setprint_perarticoli();
@ -157,6 +165,11 @@ bool TStampa_disp::destroy()
return TSkeleton_application::destroy();
}
void TStampa_disp::on_firm_change()
{
_mask->enable_livellicodice();
}
void TStampa_disp::setprint_permagazzini()
{
@ -174,8 +187,11 @@ void TStampa_disp::setprint_permagazzini()
cfilter.cut(cfilter.len()-2);
// abilita/disabilita le sezioni dei totali
_form->setdett_permag(_mask->get_int(F_FROMLIVELLOART),
_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,
@ -195,17 +211,45 @@ void TStampa_disp::setprint_perarticoli()
{
TRectype darec(LF_ANAMAG),arec(LF_ANAMAG);
TString cfilter,filter,joinexp;
TString sortexp("ANNOES|CODART|LIVELLO|CODMAG");
TString sortexp("ANNOES|CODART");
if (_mask->get_bool(F_RAGGCODICE))
{
if (_mask->get_int(F_TOLIVELLOART))
sortexp << "[" << _mask->artlev().packed_length(_mask->get_int(F_TOLIVELLOART)) << "]";
}
if (_mask->get_bool(F_RAGGLIVGIAC))
{
sortexp << "|LIVELLO" ;
if (_mask->get_int(F_TOLIVELLOGIAC))
sortexp << "[1," << _mask->artlev().packed_length(_mask->get_int(F_TOLIVELLOGIAC)) << "]";
}
sortexp << "|CODMAG";
char subordine=*_mask->get(F_ORDINEART);
_form = new TForm_stampemg("mg3200a", "");
_cur = _form->cursor();
// ********************
// range di stampa magazzini
TForm_item & rangem=_form->find_field('H',odd_page,FF_RANGEMAGAZ);
TString srangem;
if (*_mask->get(F_DAMAG))
filter << "(CODMAG[1,3]>=" <<'"' << _mask->get(F_DAMAG)<< "\")&&" ;
{
filter << "(" << LF_MAG<< "->CODMAG[1,3]>=" <<'"' << _mask->get(F_DAMAG)<< "\")&&" ;
srangem << "da \"" << _mask->get(F_DAMAG) << "\" ";
}
if (*_mask->get(F_AMAG))
filter << "(CODMAG[1,3]<=" <<'"' << _mask->get(F_AMAG)<< "\")&&" ;
{
filter << "(" << LF_MAG<< "->CODMAG[1,3]<=" <<'"' << _mask->get(F_AMAG)<< "\")&&" ;
srangem << "fino a \"" << _mask->get(F_AMAG) << "\" ";
}
rangem.set(srangem.empty() ? "Tutti i magazzini" : format("Magazzini %s",(const char *)srangem));
if (filter.not_empty())
filter.cut(filter.len()-2);
// ********************
// range di stampa articoli
TForm_item & rangecm=_form->find_field('H',odd_page,FF_RANGECATMER);
TForm_item & rangea=_form->find_field('H',odd_page,FF_RANGEARTIC);
TString srangea,srangecm;
switch (subordine)
{
case 'C':
@ -215,6 +259,10 @@ void TStampa_disp::setprint_perarticoli()
_form->find_field('B',odd_page,"H_CATMER").hide();
_form->find_field('B',odd_page,"TOT_CATMER").hide();
_form->setcatmer(FALSE);
if (!_mask->get(F_DAART).blank())
srangea << "da \"" << _mask->get(F_DAART) << "\" ";
if (!_mask->get(F_AART).blank())
srangea << "fino a \"" << _mask->get(F_AART) << "\"";
break;
case 'D':
_cur->setkey(2);
@ -223,6 +271,10 @@ void TStampa_disp::setprint_perarticoli()
_form->find_field('B',odd_page,"H_CATMER").disable();
_form->find_field('B',odd_page,"TOT_CATMER").hide();
_form->setcatmer(FALSE);
if (!_mask->get(F_DADES).blank())
srangea << "da \"" << _mask->get(F_DADES) << "\" ";
if (!_mask->get(F_ADES).blank())
srangea << "fino a \"" << _mask->get(F_ADES) << "\"";
break;
case 'M':
_cur->setkey(3);
@ -233,11 +285,24 @@ void TStampa_disp::setprint_perarticoli()
_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) << "\" ";
if (!_mask->get(F_AART).blank())
srangea << "fino a \"" << _mask->get(F_AART) << "\"";
if (!_mask->get(F_DACATMER).blank())
srangecm << "da \"" << _mask->get(F_DACATMER) << "\" ";
if (!_mask->get(F_ACATMER).blank())
srangecm << "fino a \"" << _mask->get(F_ACATMER) << "\"";
rangecm.set(srangecm.empty() ? "Tutte le categorie merceologiche" : format("Categorie merc. %s", (const char *)srangecm));
break;
}
rangea.set(srangea.empty() ? "Tutti gli articoli" : format("Articoli %s",(const char *)srangea));
_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),

View File

@ -1,3 +1,4 @@
#include "mg3msk.h"
#define F_ORDINE 101
#define F_ORDINEART 102
#define F_ORDINEMAG 103
@ -10,18 +11,12 @@
#define F_ACATMER 110
#define F_DADES 111
#define F_ADES 112
#define F_RAGGCODICE 115
#define F_FROMLIVELLOART 116
#define F_TOLIVELLOART 117
#define F_RAGGLIVGIAC 118
#define F_TOTALIMAGAZZINI 119
#define F_TOTALIDEPOSITI 120
#define F_ENABLEMAGAZZINI 121
#define F_DETTAGLIOMAG 122
#define F_DETTAGLIODEP 123
#define F_FROMLIVELLOGIAC 124
#define F_TOLIVELLOGIAC 125
#define G_CATMER 1
#define G_CODART 2

View File

@ -19,11 +19,11 @@ BEGIN
FLAGS "G"
PROMPT 34 1 "sotto-ordinamento "
ITEM "C|codice"
MESSAGE HIDE,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@
MESSAGE HIDE,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@|ENABLE,F_RAGGCODICE
ITEM "D|descrizione"
MESSAGE HIDE,G_CATMER@|DISABLE,G_CODART@|SHOW,G_DESART@
MESSAGE HIDE,G_CATMER@|DISABLE,G_CODART@|SHOW,G_DESART@|DISABLE,F_RAGGCODICE
ITEM "M|gruppo merc./codice"
MESSAGE SHOW,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@
MESSAGE SHOW,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@|DISABLE,F_RAGGCODICE
END
NUMBER F_ANNOES 4
@ -51,6 +51,7 @@ BEGIN
OUTPUT F_DAART CODART
GROUP G_CODART
END
STRING F_AART 20
BEGIN
PROMPT 2 5 " all'articolo "
@ -73,6 +74,7 @@ BEGIN
OUTPUT F_DADES DESCR
GROUP G_DESART
END
STRING F_ADES 50
BEGIN
PROMPT 2 5 " all'articolo "
@ -118,7 +120,6 @@ BEGIN
GROUP G_CATMER
END
STRING F_ACATMER 3
BEGIN
PROMPT 2 11 " al gruppo "
@ -144,10 +145,9 @@ BEGIN
MESSAGE FALSE CLEAR,F_RAGGLIVGIAC|K_SPACE,F_RAGGLIVGIAC|CLEAR,F_RAGGCODICE|K_SPACE,F_RAGGCODICE
END
BOOLEAN F_RAGGCODICE
BEGIN
PROMPT 2 13 "Raggruppo gli articoli"
PROMPT 2 13 "Stampa totali livelli di codice"
MESSAGE FALSE CLEAR,F_FROMLIVELLOART|CLEAR,F_TOLIVELLOART|CHECK,F_TOLIVELLOART
MESSAGE TRUE ENABLE,F_FROMLIVELLOART|ENABLE,F_TOLIVELLOART|CHECK,F_TOLIVELLOART
END
@ -181,7 +181,7 @@ END
BOOL F_RAGGLIVGIAC
BEGIN
PROMPT 2 14 "Raggruppo le giacenze"
PROMPT 2 14 "Stampa totali livelli di giacenza"
MESSAGE FALSE CLEAR,F_FROMLIVELLOGIAC|CLEAR,F_TOLIVELLOGIAC|CHECK,F_TOLIVELLOGIAC
MESSAGE TRUE ENABLE,F_FROMLIVELLOGIAC|ENABLE,F_TOLIVELLOGIAC
END

File diff suppressed because it is too large Load Diff

View File

@ -17,7 +17,7 @@ END
GENERAL
BEGIN
OFFSET 0 1
FONT "Courier New"
// FONT "Courier New"
// SIZE 12
END
@ -134,16 +134,34 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE RESET,1@|_USER,RESET_UM,153
END
SECTION H_MAGAZZINO 1 1 1 GROUP
STRINGA 60 40 1
STRINGA 60 20 1
BEGIN
KEY "codice magazzino"
PROMPT 2 1 "Magazzino "
FIELD 500@->CODTAB
MESSAGE COPY,151
END
STRINGA 61 70 1
BEGIN
KEY "codice magazzino"
PROMPT 3 1 ""
FIELD 500@->s0
MESSAGE COPY,150
END
END
SECTION GRUPPI_MAGAZZINO 1 0 0 FILE LF_MAG GROUP CODMAG[1,3]
LIST FF_DIVDEPOSITI
BEGIN
FLAGS "H"
KEY "Divisione in depositi"
FIELD 500@->B0
PROMPT 2 1 ""
ITEM " |non diviso in depositi"
MESSAGE HIDE,TOT_DEPOSITO
ITEM "X|diviso in depositi"
MESSAGE SHOW,TOT_DEPOSITO
END
STRINGA 60 40 1
BEGIN
FLAGS "H"
@ -151,11 +169,18 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE RESET,15@|_USER,RESET_UM,53
END
SECTION H_DEPOSITO 1 1 1 GROUP
STRINGA 60 40 1
SECTION H_DEPOSITO 1 1 1 STR_EXPR #FF_DIVDEPOSITI=="X"
STRINGA 60 20 1
BEGIN
KEY "codice dep"
PROMPT 2 1 "Deposito "
FIELD 501@->CODTAB[4,5]
MESSAGE COPY,51
END
STRINGA 61 70 1
BEGIN
KEY "codice dep"
PROMPT 3 1 ""
FIELD 501@->s0
MESSAGE COPY,50
END
@ -170,13 +195,13 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE RESET,14@|_USER,RESET_UM,1453
END
SECTION H_GCODART1 1 1 1 GROUP
STRINGA 16 12 2
STRINGA 16 20 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,1
MESSAGE _USER,CODGRUPPOART,1|COPY,1451
END
STRINGA 17 30 2
STRINGA 17 30 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -193,13 +218,13 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE RESET,13@|_USER,RESET_UM,1353
END
SECTION H_GCODART2 1 1 1 GROUP
STRINGA 16 12 2
STRINGA 16 20
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,2
MESSAGE _USER,CODGRUPPOART,2|COPY,1351
END
STRINGA 17 30 2
STRINGA 17 30 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -216,13 +241,13 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE RESET,12@|_USER,RESET_UM,1253
END
SECTION H_GCODART3 1 1 1 GROUP
STRINGA 16 12 2
STRINGA 16 20
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,3
MESSAGE _USER,CODGRUPPOART,3|COPY,1251
END
STRINGA 17 30 2
STRINGA 17 30 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -239,13 +264,13 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE RESET,11@|_USER,RESET_UM,1153
END
SECTION H_GCODART4 1 1 1 GROUP
STRINGA 16 12 2
STRINGA 16 20 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,4
MESSAGE _USER,CODGRUPPOART,4|COPY,1151
END
STRINGA 17 30 2
STRINGA 17 30 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -262,13 +287,13 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE RESET,10@|_USER,RESET_UM,1053
END
SECTION H_GCODART5 1 1 1 GROUP
STRINGA 16 12 2
STRINGA 16 20
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,5
MESSAGE _USER,CODGRUPPOART,5|COPY,1051
END
STRINGA 17 30 2
STRINGA 17 30 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -284,14 +309,14 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 2 1 ""
MESSAGE RESET,9@|_USER,RESET_UM,953
END
SECTION H_GCODART6 1 1 2 GROUP
STRINGA 16 12 2
SECTION H_GCODART6 1 1 1 GROUP
STRINGA 16 20
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,6
MESSAGE _USER,CODGRUPPOART,6|COPY,951
END
STRINGA 17 30 2
STRINGA 17 30 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -308,13 +333,13 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE RESET,8@|_USER,RESET_UM,853
END
SECTION H_GCODART7 1 1 1 GROUP
STRINGA 16 12 2
STRINGA 16 20
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,7
MESSAGE _USER,CODGRUPPOART,7|COPY,851
END
STRINGA 17 30 2
STRINGA 17 30 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -332,13 +357,13 @@ SECTION BODY ODD 0 COLUMNWISE
END
SECTION H_GCODART8 1 1 1 GROUP
STRINGA 16 12 2
STRINGA 16 20
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOART,8
MESSAGE _USER,CODGRUPPOART,8|COPY,751
END
STRINGA 17 30 2
STRINGA 17 30 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 3 1 ""
@ -355,13 +380,14 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE RESET,6@
END
SECTION H_ARTICOLO 1 1 1 GROUP
STRINGA 2020 12 2
STRINGA 2020 20
BEGIN
KEY "CODICE articolo"
PROMPT 2 1 ""
FIELD LF_ANAMAG->CODART
MESSAGE COPY,651
END
STRINGA 21 30 2
STRINGA 21 30 1
BEGIN
KEY "DESCR.articolo"
PROMPT 3 1 ""
@ -379,10 +405,16 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE RESET,5@
END
SECTION H_GLIVGIAC1 1 1 1 GROUP
STRINGA 31 50 1
STRINGA 31 20 1
BEGIN
KEY "Livello giac"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOGIAC,1|COPY,551
END
STRINGA 31 30 1
BEGIN
KEY "Livello giac"
PROMPT 3 1 ""
MESSAGE _USER,GRUPPOGIAC,1|COPY,550
END
END
@ -396,10 +428,16 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE RESET,4@
END
SECTION H_GLIVGIAC2 1 1 1 GROUP
STRINGA 31 50 1
STRINGA 31 20 1
BEGIN
KEY "Livello giac"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOGIAC,2|COPY,451
END
STRINGA 31 30 1
BEGIN
KEY "Livello giac"
PROMPT 3 1 ""
MESSAGE _USER,GRUPPOGIAC,2|COPY,450
END
END
@ -414,25 +452,34 @@ SECTION BODY ODD 0 COLUMNWISE
END
SECTION H_GLIVGIAC3 1 1 1 GROUP
STRINGA 31 50 1
STRINGA 31 20 1
BEGIN
KEY "Livello giac"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOGIAC,3|COPY,351
END
STRINGA 31 30 1
BEGIN
KEY "Livello giac"
PROMPT 3 1 ""
MESSAGE _USER,GRUPPOGIAC,3|COPY,350
END
END
SECTION GRUPPI_LIVGIAC3 1 0 0 FILE LF_MAG GROUP LIVELLO
SECTION H_GLIVGIAC4 1 1 1 GROUP
END
END
SECTION GRUPPI_LIVGIAC4 1 0 0 FILE LF_MAG GROUP LIVELLO
END
SECTION TOT_GLIVGIAC4 1 1 2 GROUP
STRINGA 251 2
SECTION TOT_GLIVGIAC4 1 1 1 GROUP
STRINGA 251 20
BEGIN
KEY "Livello giac4"
PROMPT 2 1 ""
MESSAGE _USER,CODGRUPPOGIAC,4
END
STRINGA 250 40 1
STRINGA 250 30 1
BEGIN
KEY "Livello giac"
PROMPT 3 1 ""
@ -517,15 +564,15 @@ SECTION BODY ODD 0 COLUMNWISE
END // GGIAC3
SECTION TOT_GLIVGIAC3 1 1 1 GROUP
STRINGA 350 35 2
STRINGA 351 20
BEGIN
KEY ""
PROMPT 2 1 ""
END
STRINGA 350 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA 351 7 2
BEGIN
KEY ""
PROMPT 2 1 " Totale"
END
STRINGA 353 3
BEGIN
@ -601,15 +648,15 @@ 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 ""
END
STRINGA 451 7 2
STRINGA 451 20
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 453 3
BEGIN
@ -684,15 +731,15 @@ 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 ""
END
STRINGA 551 7 2
STRINGA 551 20
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 553 3
BEGIN
@ -768,15 +815,15 @@ SECTION BODY ODD 0 COLUMNWISE
END // FILE GIACENZE
SECTION TOT_ARTICOLO 1 1 1 GROUP
STRINGA 650 30 2
STRINGA 651 20 1
BEGIN
KEY ""
PROMPT 2 1 ""
END
STRINGA 650 30 1
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA 651 12 2
BEGIN
KEY ""
PROMPT 2 1 "Articolo "
END
STRINGA 653 3
BEGIN
@ -853,15 +900,15 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART8
SECTION TOT_GART8 1 1 1 GROUP
STRINGA 750 34 2
STRINGA 750 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA 751 8 2
BEGIN
STRINGA 751 20
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 753 3
BEGIN
@ -937,15 +984,15 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART7
SECTION TOT_GART7 1 1 1 GROUP
STRINGA 850 34 2
STRINGA 850 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA 851 8 2
STRINGA 851 20
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 853 3
BEGIN
@ -1021,15 +1068,15 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART6
SECTION TOT_GART6 1 1 1 GROUP
STRINGA 950 34 2
STRINGA 950 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA 951 8 2
STRINGA 951 20
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 953 3
BEGIN
@ -1105,15 +1152,15 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART5
SECTION TOT_GART5 1 1 1 GROUP
STRINGA 1050 34 2
STRINGA 1050 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA 1051 8 2
STRINGA 1051 20
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 1053 3
BEGIN
@ -1189,15 +1236,15 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART4
SECTION TOT_GART4 1 1 1 GROUP
STRINGA 1150 34 2
STRINGA 1150 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA 1151 8 2
STRINGA 1151 20
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 1153 3
BEGIN
@ -1273,15 +1320,15 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART3
SECTION TOT_GART3 1 1 1 GROUP
STRINGA 1250 34 2
STRINGA 1250 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA 1251 8 2
STRINGA 1251 20
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 1253 3
BEGIN
@ -1357,15 +1404,15 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART2
SECTION TOT_GART2 1 1 1 GROUP
STRINGA 1350 34 2
STRINGA 1350 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA 1351 8 2
STRINGA 1351 20
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 1353 3
BEGIN
@ -1441,15 +1488,15 @@ SECTION BODY ODD 0 COLUMNWISE
END // GART1
SECTION TOT_GART1 1 1 1 GROUP
STRINGA 1450 34 2
STRINGA 1450 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA 1451 8 2
BEGIN
STRINGA 1451 20
BEGIN
KEY ""
PROMPT 2 1 " Totale"
PROMPT 2 1 ""
END
STRINGA 1453 3
BEGIN
@ -1526,17 +1573,17 @@ SECTION BODY ODD 0 COLUMNWISE
END // GRUPPI DEPOSITO
SECTION TOT_DEPOSITO 1 1 1 GROUP
SECTION SEP_DEPOSITO 1 1 NORMAL GROUP
SECTION SEP_DEPOSITO 1 0 0 NORMAL GROUP
STRINGA 77
BEGIN
KEY "giac"
PROMPT 52 1 "----------------------------------------------------------------------------------------------------"
END
END
STRINGA 51 12
STRINGA 51 20
BEGIN
KEY "CODICE"
PROMPT 2 1 " Totale dep."
PROMPT 2 1 "Totale dep."
END
STRINGA 50 30
BEGIN
@ -1616,8 +1663,8 @@ SECTION BODY ODD 0 COLUMNWISE
END // tot depositi
END // MAGAZZ
SECTION TOT_MAGAZZINO 1 1 1 GROUP
SECTION SEP_MAGAZZINO 1 1 1 NORMAL GROUP
SECTION TOT_MAGAZZINO 1 1 2 GROUP
SECTION SEP_MAGAZZINO 1 0 0 NORMAL GROUP
STRINGA 77
BEGIN
KEY "giac"
@ -1629,10 +1676,10 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "Magazzino"
PROMPT 3 1 ""
END
STRINGA 151 12 1
STRINGA 151 20 1
BEGIN
KEY "Magazzino"
PROMPT 2 1 " Totale mag."
PROMPT 2 1 "Totale mag."
END
STRINGA 153 3
BEGIN

View File

@ -22,8 +22,6 @@ class TForm_schedemag : public TForm_stampemg
TToken_string *_rmov_sortexp;
TString *_rmov_raggcond,*_rmov_joinexp;
//TMag_livelli * _giaclev,*_artlev; // gestori dei gruppi articolo/giacenza
//TDecoder *_giacgrp,*_artgrp; // decodifiche dei gruppi articolo/giacenza
TTipo_saldomag _tiposcheda; // tipo scheda
bool ragg_exprs(int livart,int livgiac);
@ -99,13 +97,6 @@ bool TForm_schedemag::validate(TForm_item &cf, TToken_string &s)
cf.set(descr_tiposcheda());
return TRUE;
}
if (subcode=="CODGRUPPOART") {
TString valore(relation()->lfile(LF_ANAMAG).get("CODART"));
if (artlev().enabled())
valore.cut(min(valore.len(),artlev().packed_length(_tolivart)));
cf.set(valore);
return TRUE;
}
if (subcode=="GRUPPOART") {
TString valore;
if (_tolivart==artlev().last_level())
@ -114,21 +105,19 @@ bool TForm_schedemag::validate(TForm_item &cf, TToken_string &s)
valore=artlev().group_descr(relation()->lfile(LF_ANAMAG).get("CODART"),_tolivart);
cf.set(valore);
return TRUE;
}
}
if (subcode=="CODGRUPPOGIAC") {
TString levname(giaclev().name(_tolivgiac)),valore;
int lv=0;
valore="";
do {
TString piece(giaclev().unpack_grpcode(relation()->lfile(LF_RMOVMAG).get("LIVGIAC"),lv+1));
if (piece.empty())
piece=UNKNOWN_NAME;
if (valore.not_empty())
valore << '/';
valore << piece ;
} while (++lv<_tolivgiac);
cf.set(levname << ' ' << valore);
}
s.add(_tolivgiac);
TForm_stampemg::validate(cf, s);
return TRUE;
}
if (subcode=="CODGRUPPOART") {
TString valore(relation()->lfile(LF_ANAMAG).get("CODART"));
if (artlev().enabled())
valore.cut(min(valore.len(),artlev().packed_length(_tolivart)));
cf.set(valore);
return TRUE;
}
if (subcode=="GRUPPOGIAC") {
TString valore;
valore=giaclev().group_descr(relation()->lfile(LF_RMOVMAG).get("LIVGIAC"),_tolivgiac);
@ -181,7 +170,7 @@ bool TForm_schedemag::validate(TForm_item &cf, TToken_string &s)
return TRUE;
}
}
return TForm::validate(cf, s);
return TForm_stampemg::validate(cf, s);
}
@ -213,16 +202,52 @@ bool TForm_schedemag::ragg_exprs(int livart,int livgiac)
}
void TForm_schedemag::setdett_permag(bool sudd_dep,bool show_dett,int livart,int livgiac)
{
TForm_subsection &h_d=(TForm_subsection &)find_field('B',odd_page,"HEADER_DEP");
h_d.enable(sudd_dep);
TForm_subsection &h_a=(TForm_subsection &)find_field('B',odd_page,"HEADER_ARTICOLO");
h_a.enable(show_dett);
TForm_subsection &h_g=(TForm_subsection &)find_field('B',odd_page,"HEADER_LIVGIAC");
h_g.enable(giaclev().enabled() && (livart ==0 || livgiac !=0 ));
*_rmov_raggcond="CODMAG[1,3]";
_rmov_sortexp->add("CODMAG[1,3]");
if (sudd_dep)
{
*_rmov_raggcond << "+CODMAG[4,5]";
_rmov_sortexp->add("CODMAG[4,5]");
if (show_dett)
{
ragg_exprs(livart,livgiac);
}
}
TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,"GRUPPI_RMOVMAG");
s.setcondition(*_rmov_raggcond,_strexpr);
TString cond;
cond << LF_MOVMAG << "->DATAREG";
_rmov_sortexp->add(cond);
_rmov_sortexp->add("NUMREG");
_tolivart=livart ? livart :artlev().last_level() ;
_tolivgiac=livgiac ? livgiac :giaclev().last_level();
}
void TForm_schedemag::setdett_percatmer(bool sottocat,int livart,int livgiac,bool sudd_mag,bool sudd_dep)
{
TForm_subsection &h_c=(TForm_subsection &)find_field('B',odd_page,"HEADER_CATMER");
h_c.enable();
TForm_subsection &h_a=(TForm_subsection &)find_field('B',odd_page,"HEADER_ARTICOLO");
h_a.enable();
h_a.set_newpage(livart !=0 && livgiac ==0 && !sudd_mag);
TForm_subsection &h_g=(TForm_subsection &)find_field('B',odd_page,"HEADER_GRMOV");
h_g.enable((livart ==0 || livgiac !=0 || sudd_mag));
h_g.enable(livart ==0 || livgiac !=0 || sudd_mag);
h_g.set_newpage(livart ==0 || livgiac !=0 || sudd_mag);
TForm_subsection &h_l=(TForm_subsection &)find_field('B',odd_page,"HEADER_LIVGIAC");
h_l.enable(giaclev().enabled() && livgiac !=0 );
h_l.enable(giaclev().enabled() && (livgiac !=0 ||livart ==0));
TForm_subsection &h_m=(TForm_subsection &)find_field('B',odd_page,"HEADER_MAG");
h_m.enable(sudd_mag );
TForm_subsection &h_d=(TForm_subsection &)find_field('B',odd_page,"HEADER_DEP");
@ -259,39 +284,6 @@ void TForm_schedemag::setdett_percatmer(bool sottocat,int livart,int livgiac,boo
_sottocatmer=sottocat;
}
void TForm_schedemag::setdett_permag(bool sudd_dep,bool show_dett,int livart,int livgiac)
{
TForm_subsection &h_d=(TForm_subsection &)find_field('B',odd_page,"HEADER_DEP");
h_d.enable(sudd_dep);
TForm_subsection &h_a=(TForm_subsection &)find_field('B',odd_page,"HEADER_ARTICOLO");
h_a.enable(show_dett);
TForm_subsection &h_g=(TForm_subsection &)find_field('B',odd_page,"HEADER_LIVGIAC");
h_g.enable(giaclev().enabled() && (livart ==0 || livgiac !=0 ));
*_rmov_raggcond="CODMAG[1,3]";
_rmov_sortexp->add("CODMAG[1,3]");
if (sudd_dep)
{
*_rmov_raggcond << "+CODMAG[4,5]";
_rmov_sortexp->add("CODMAG[4,5]");
if (show_dett)
{
ragg_exprs(livart,livgiac);
}
}
TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,"GRUPPI_RMOVMAG");
s.setcondition(*_rmov_raggcond,_strexpr);
TString cond;
cond << LF_MOVMAG << "->DATAREG";
_rmov_sortexp->add(cond);
_rmov_sortexp->add("NUMREG");
_tolivart=livart ? livart :artlev().last_level() ;
_tolivgiac=livgiac ? livgiac :giaclev().last_level();
}
void TForm_schedemag::setdett_perart(bool percatmer,bool sottocatmer,int livart,int livgiac,bool sudd_mag,bool sudd_dep)
{
// raggruppamento MAX fino all'articolo
@ -301,13 +293,15 @@ void TForm_schedemag::setdett_perart(bool percatmer,bool sottocatmer,int livart,
h_cm2.enable(percatmer);
TForm_subsection &h_a=(TForm_subsection &)find_field('B',odd_page,"HEADER_ARTICOLO");
h_a.enable(livart!=0 && !sudd_mag);
h_a.enable (livart!=0 && !sudd_mag);
h_a.set_newpage(livart!=0 && !sudd_mag);
TForm_subsection &t_a=(TForm_subsection &)find_field('B',odd_page,"TOTALI_GRUPPIART");
t_a.show( livart!=0 && !sudd_mag);
// raggruppamento MAX fino alla giacenza
TForm_subsection &h_g=(TForm_subsection &)find_field('B',odd_page,"HEADER_GRMOV");
h_g.enable((livart !=0 || livgiac !=0 || sudd_mag));
h_g.enable(livart ==0 || livgiac !=0 || sudd_mag);
h_g.set_newpage(livart ==0 || livgiac !=0 || sudd_mag);
TForm_subsection &h_l=(TForm_subsection &)find_field('B',odd_page,"HEADER_LIVGIAC");
h_l.enable(giaclev().enabled() && (livart ==0 || livgiac !=0 ));
TForm_subsection &h_m=(TForm_subsection &)find_field('B',odd_page,"HEADER_MAG");
@ -417,16 +411,23 @@ class TStampa_schede_mag : public TSkeleton_application
int _codicees;
bool _raggmag;
protected:
void setprint_perarticoli();
void setprint_permagazzini();
virtual bool create();
virtual bool destroy();
virtual void main_loop();
virtual void on_firm_change();
void setprint_perarticoli();
void setprint_permagazzini();
public:
TStampa_schede_mag() {}
};
void TStampa_schede_mag::on_firm_change()
{
}
void TStampa_schede_mag::setprint_permagazzini()
{
@ -555,6 +556,7 @@ void TStampa_schede_mag::setprint_perarticoli()
_mask->get_int(F_TOLIVELLOGIAC),
_mask->get_bool(F_SUDDIV_MAGAZZINI),
_mask->get_bool(F_SUDDIV_DEPOSITI));
break;
case 'M':
_cur->setkey(3);
darec.put("GRMERC",_mask->get(F_DACATMER));
@ -593,11 +595,18 @@ void TStampa_schede_mag::main_loop()
{
while (_mask->run() == K_ENTER)
{
if (_mask->get(F_ENABLER)=="1" && _mask->get_int(F_TOLIVELLOART)==0)
_mask->set(F_TOLIVELLOART,_mask->artlev().last_level());
if (_mask->get(F_ENABLER)=="2" && _mask->get_int(F_TOLIVELLOGIAC)==0)
_mask->set(F_TOLIVELLOGIAC,_mask->giaclev().last_level());
if (_mask->magazz_ini().gestmag(TRUE))
{
if (*_mask->get(F_ORDINE)=='A')
{
_form = new TForm_schedemag("mg3300a", "");
_form = new TForm_schedemag("mg3300a", "") ;
// *_mask->get(F_FILTRO) == 'T' ?
// new TForm_schedemag("mg3300aa", "") :
// new TForm_schedemag("mg3300a", "") ;
setprint_perarticoli();
} else if (*_mask->get(F_ORDINE)=='M') {
_form = new TForm_schedemag("mg3300b", "");

View File

@ -1,3 +1,4 @@
#include "mg3msk.h"
#define F_SCHEDA 101
#define F_DADATA 102
#define F_ADATA 103
@ -16,10 +17,6 @@
#define F_ADES 115
#define F_VALMEDI 116
#define F_STAMPAGIAC 117
#define F_RAGGCODICE 118
#define F_TOLIVELLOART 120
#define F_RAGGLIVGIAC 121
#define F_TOLIVELLOGIAC 122
#define F_SUDDIV_MAGAZZINI 123
#define F_SUDDIV_DEPOSITI 124
@ -31,6 +28,7 @@
#define G_CATMER 1
#define G_CODART 2
#define G_DESART 3
#define G_LIVELLI 4
#define FF_STAMPASALDOPREC 300
@ -58,4 +56,4 @@
#define FF_VALORE_MOVART 321
#define ALIAS_CATMER 510
#define ALIAS_SOTTOCATMER 511
#define ALIAS_SOTTOCATMER 511

View File

@ -33,11 +33,11 @@ BEGIN
FLAGS "G"
PROMPT 42 2 "sotto-ordinamento "
ITEM "C|codice"
MESSAGE HIDE,G_CATMER@|SHOW,G_CODART@|HIDE,G_DESART@
MESSAGE HIDE,G_CATMER@|SHOW,G_CODART@|HIDE,G_DESART@|ENABLE,G_LIVELLI@
ITEM "D|descrizione"
MESSAGE HIDE,G_CATMER@|HIDE,G_CODART@|SHOW,G_DESART@
MESSAGE HIDE,G_CATMER@|HIDE,G_CODART@|SHOW,G_DESART@|"1",F_ENABLER|"0",F_TOLIVELLOART|DISABLE,G_LIVELLI@
ITEM "M|gruppo merc."
MESSAGE SHOW,G_CATMER@|SHOW,G_CODART@|HIDE,G_DESART@
MESSAGE SHOW,G_CATMER@|SHOW,G_CODART@|HIDE,G_DESART@|ENABLE,G_LIVELLI@
END
NUMBER F_ANNOES 4
@ -189,16 +189,17 @@ END
LIST F_ENABLER 30
BEGIN
PROMPT 2 14 ""
ITEM "|Nessun raggruppamento"
MESSAGE ENABLE,F_SUDDIV_MAGAZZINI
MESSAGE RESET,F_TOLIVELLOGIAC|RESET,F_TOLIVELLOART|HIDE,F_TOLIVELLOART|HIDE,F_TOLIVELLOGIAC
ITEM "1|Raggruppa gli articoli"
MESSAGE RESET,F_TOLIVELLOGIAC|HIDE,F_TOLIVELLOGIAC|SHOW,F_TOLIVELLOART|CHECK,F_TOLIVELLOART
ITEM "2|Raggruppa le giacenze"
MESSAGE RESET,F_TOLIVELLOART|HIDE,F_TOLIVELLOART|SHOW,F_TOLIVELLOGIAC|CHECK,F_TOLIVELLOGIAC
ITEM "|Massimo dettaglio"
MESSAGE ENABLE,F_SUDDIV_MAGAZZINI
MESSAGE RESET,F_TOLIVELLOGIAC|RESET,F_TOLIVELLOART|HIDE,F_TOLIVELLOART|HIDE,F_TOLIVELLOGIAC
GROUP G_LIVELLI
END
NUMBER F_TOLIVELLOART 1
@ -213,6 +214,7 @@ BEGIN
//MESSAGE CLEAR,F_SUDDIV_MAGAZZINI|K_SPACE,F_SUDDIV_MAGAZZINI
CHECKTYPE NORMAL
GROUP G_LIVELLI
WARNING "Livello finale non ammissibile"
END
@ -228,6 +230,7 @@ BEGIN
//MESSAGE CLEAR,F_SUDDIV_MAGAZZINI|K_SPACE,F_SUDDIV_MAGAZZINI
CHECKTYPE NORMAL
GROUP G_LIVELLI
WARNING "Livello finale non ammissibile"
END

View File

@ -30,7 +30,7 @@ END
GENERAL
BEGIN
OFFSET 0 1
FONT "Courier New"
// FONT "Courier New"
// SIZE 12
END
@ -78,15 +78,15 @@ SECTION HEADER ODD 5
END
NUMBER 7 12
BEGIN
PROMPT 46 4 "Quantità"
PROMPT 47 4 "Quantità"
END
NUMBER 8 12
BEGIN
PROMPT 58 4 "Prezzo"
PROMPT 62 4 "Prezzo"
END
NUMBER 9 12
BEGIN
PROMPT 71 4 "Valore"
PROMPT 74 4 "Valore"
END
STRINGA 5 146
BEGIN
@ -103,7 +103,7 @@ SECTION BODY ODD 0
MESSAGE RESET,FF_SALDO_GART|RESET,FF_VALORE_GART
END
SECTION HEADER_ARTICOLO 1 2 2 HEADER
SECTION HEADER_ARTICOLO 1 2 2 NORMAL GROUP
FLAGS "N"
SECTION HEADER_CATMER 1 2 1 GROUP
STRINGA 10 20 1
@ -141,15 +141,12 @@ SECTION BODY ODD 0
END //HEADER articolo
SECTION GRUPPI_ARTICOLO 1 0 0 FILE LF_ANAMAG BY CODART
FLAGS "N"
SECTION FILE_RMOVMAG 1 1 0 FILE LF_RMOVMAG
FLAGS "N"
SECTION HEADER_GRMOV 1 2 2 HEADER
FLAGS "N"
SECTION HEADER_GRMOV 1 2 2 NORMAL GROUP
SECTION HEADER_LIVGIACCATMER 1 1 1 GROUP
STRINGA 10 20 1
BEGIN
KEY "CODICE CATMER"
KEY "CODICE CATMER"
PROMPT 1 1 "Gruppo merceologico "
MESSAGE _USER,CODCATMER|RESET,FF_STAMPASALDOPREC
END
@ -173,7 +170,7 @@ SECTION BODY ODD 0
PROMPT 30 1 ""
MESSAGE _USER,GRUPPOART
END
SECTION HEADER_LIVGIAC 1 1 1 GROUP
SECTION HEADER_LIVGIAC 2 1 1 GROUP
STRINGA 20 20 1
BEGIN
KEY "CODICE livello"
@ -194,7 +191,7 @@ SECTION BODY ODD 0
PROMPT 3 1 "Magazzino "
FIELD 500@->S0
END
SECTION HEADER_DEP 2 1 1 GROUP
SECTION HEADER_DEP 2 1 1 STR_EXPR 500@->B0=="X"
STRINGA 23 50 1
BEGIN
KEY "dep"
@ -374,7 +371,7 @@ SECTION BODY ODD 0
END
END // totali mov
END // loop scheda
SECTION TOTALI_GRMOV 1 1 3 NUMEXPR #FF_SALDO_GRMOV!=0
SECTION TOTALI_GRMOV 1 1 3 GROUP //PG057 NUMEXPR #FF_SALDO_GRMOV!=0
STRINGA 100 15
BEGIN
@ -401,7 +398,7 @@ SECTION BODY ODD 0
END // TOTALI scheda per articolo
END // loop RMOVMAG
SECTION TOTALI_MOV_ARTICOLO 1 0 0 NUMEXPR #FF_SALDO_MOV!=0
SECTION TOTALI_MOV_ARTICOLO 1 0 0 GROUP // NUMEXPR #FF_SALDO_MOV!=0
FLAGS "D"
// da eliminare !!!!!!!!!!!
/*
@ -440,7 +437,7 @@ SECTION BODY ODD 0
END // totali mov
END // ragg articolo (codice o catmer)
SECTION TOTALI_GRUPPIART 1 1 3 NUMEXPR #FF_SALDO_GART!=0
SECTION TOTALI_GRUPPIART 1 1 3 GROUP //PG057 NUMEXPR #FF_SALDO_GART!=0
STRINGA 100 15
BEGIN
PROMPT 1 1 "Totale scheda"

View File

@ -29,7 +29,7 @@ END
GENERAL
BEGIN
OFFSET 0 1
FONT "Courier New"
// FONT "Courier New"
// SIZE 12
END
@ -126,12 +126,14 @@ SECTION BODY ODD 2
PROMPT 1 1 "Magazzino "
FIELD 500@->S0
END
SECTION HEADER_DEP 2 1 1 GROUP
STRINGA 23 50 1
BEGIN
KEY "dep"
PROMPT 3 1 "Deposito "
FIELD 501@->S0
SECTION HEADER_DEP 2 0 0 GROUP
SECTION HEADER_DEP_VERO 1 1 1 STR_EXPR 500@->B0=="X"
STRINGA 23 50 1
BEGIN
KEY "dep"
PROMPT 3 1 "Deposito "
FIELD 501@->S0
END
END
SECTION HEADER_ARTICOLO 2 1 1 GROUP
STRINGA 10 20 1

View File

@ -3,9 +3,15 @@
#define FF_FLAGSOTTOS 668
#define FF_FLAGVALMEDI 669
#define FF_PREZZIVALORI 670
#define FF_DIVDEPOSITI 671
#define FG_VALORI 25
#define FG_VALMEDI 26
#define FF_RANGEMAGAZ 672
#define FF_RANGEARTIC 673
#define FF_RANGECATMER 674
#define FF_FILTRO 675
#define FG_VALORI 25
#define FG_VALMEDI 26
#define FG_RIGAVALORI 27
#define FG_RIGAPREZZI 28

6
mg/mg3msk.h Executable file
View File

@ -0,0 +1,6 @@
#define F_RAGGCODICE 180
#define F_FROMLIVELLOART 181
#define F_TOLIVELLOART 182
#define F_RAGGLIVGIAC 183
#define F_FROMLIVELLOGIAC 184
#define F_TOLIVELLOGIAC 185

View File

@ -94,7 +94,7 @@ END
NUMERO 106
BEGIN
KEY "quant"
PROMPT 88 4 "Quantita'"
PROMPT 86 4 "Quantita'"
END
NUMERO 107
@ -274,7 +274,7 @@ SECTION BODY ODD 1
NUMERO 10
BEGIN
KEY "totale mov"
PROMPT 83 3 "Totale valore movimentato: "
PROMPT 86 3 "Totale valore movimentato: "
PICTURE "##.###.###.##@"
END

View File

@ -8,7 +8,7 @@
#define MAX_VAL_COLUMNS 6
class TForm_inventario : public TForm_stampemg
{
int colonne;
int _colonne;
TConfig *conf_ditta;
TArticolo_giacenza * _curr_art;
TString16 _codlist,_catven; // codici listino e cat vendita
@ -42,41 +42,41 @@ bool TForm_inventario::validate(TForm_item &cf, TToken_string &s)
if (subcode=="VAL1") {
valorizzazione(cf,_valorizz_scelte[0]);
}
if (subcode=="VAL2"&& colonne >=2) {
if (subcode=="VAL2"&& _colonne >=2) {
valorizzazione(cf,_valorizz_scelte[1]);
}
if (subcode=="VAL3" && colonne >=3) {
if (subcode=="VAL3" && _colonne >=3) {
valorizzazione(cf,_valorizz_scelte[2]);
}
if (subcode=="VAL4" && colonne >=4) {
if (subcode=="VAL4" && _colonne >=4) {
valorizzazione(cf,_valorizz_scelte[3]);
}
if (subcode=="VAL5"&& colonne >=5) {
if (subcode=="VAL5"&& _colonne >=5) {
valorizzazione(cf,_valorizz_scelte[4]);
}
if (subcode=="VAL6" && colonne >=6) {
if (subcode=="VAL6" && _colonne >=6) {
valorizzazione(cf,_valorizz_scelte[5]);
}
if (subcode=="NAMEVAL1") {
cf.set(Nome_valorizz[_valorizz_scelte[0]]);
}
if (subcode=="NAMEVAL2"&& colonne >=2) {
if (subcode=="NAMEVAL2"&& _colonne >=2) {
cf.set(Nome_valorizz[_valorizz_scelte[1]]);
}
if (subcode=="NAMEVAL3" && colonne >=3) {
if (subcode=="NAMEVAL3" && _colonne >=3) {
cf.set(Nome_valorizz[_valorizz_scelte[2]]);
}
if (subcode=="NAMEVAL4" && colonne >=4) {
if (subcode=="NAMEVAL4" && _colonne >=4) {
cf.set(Nome_valorizz[_valorizz_scelte[3]]);
}
if (subcode=="NAMEVAL5"&& colonne >=5) {
if (subcode=="NAMEVAL5"&& _colonne >=5) {
cf.set(Nome_valorizz[_valorizz_scelte[4]]);
}
if (subcode=="NAMEVAL6" && colonne >=6) {
if (subcode=="NAMEVAL6" && _colonne >=6) {
cf.set(Nome_valorizz[_valorizz_scelte[5]]);
}
if (subcode=="LINEATOTALI") {
TString l(29*colonne+12,'-');
TString l(29*_colonne+12,'-');
cf.set(l);
}
}
@ -95,43 +95,15 @@ TArticolo_giacenza &TForm_inventario::curr_art()
void TForm_inventario::add_colval(int tipo)
{
TTipo_valorizz t ;
switch (tipo) {
case 1:
t=valorizz_ultcos;
break;
case 2:
t=valorizz_mediacos;
break;
case 3:
t=valorizz_przlist;
break;
case 4:
t=valorizz_coststd;
break;
case 5:
t=valorizz_costmedio;
break;
case 6:
t=valorizz_FIFOa;
break;
case 7:
t=valorizz_LIFOa;
break;
case 8:
t=valorizz_FIFO;
break;
case 9:
t=valorizz_LIFO;
break;
default:
return;
TTipo_valorizz t= (TTipo_valorizz )tipo;
if (t>=valorizz_ultcos && tipo <=valorizz_LIFOr)
{
_valorizz_scelte[_colonne++]=t;
TString col;
col << _colonne;
find_field('B',odd_page,FF_ENABLECOLS).set(col);
find_field('H',odd_page,FF_ENABLECOLS).set(col);
}
_valorizz_scelte[colonne++]=t;
TString col;
col << colonne;
find_field('B',odd_page,FF_ENABLECOLS).set(col);
find_field('H',odd_page,FF_ENABLECOLS).set(col);
}
bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t)
@ -146,7 +118,7 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t)
v=curr_art().media_costi(annoes).string();
}
if (t==valorizz_przlist) {
v=curr_art().prezzo_listino(annoes,_codlist,_catven).string();
v=curr_art().prezzo_listino(annoes,_catven,_codlist).string();
}
if (t==valorizz_coststd) {
v=curr_art().costo_standard(annoes).string();
@ -192,7 +164,7 @@ void TForm_inventario::set_parametri(const char * codcatv,const char * codlist,b
TForm_inventario::TForm_inventario(const char *name,const char *code) :
TForm_stampemg(name,code),_curr_art(NULL)
{
colonne=0;
_colonne=0;
}
@ -208,6 +180,7 @@ class TStampainv_mask: public TStampemg_mask
static bool handle_ragg(TMask_field &fld, KEY k); // handler
static bool handle_liv(TMask_field &fld, KEY k); // handler
static bool handle_subord(TMask_field &fld, KEY k); // handler
static bool handle_codlist(TMask_field &fld, KEY k); // handler
public:
TStampainv_mask();
~TStampainv_mask(){};
@ -222,8 +195,6 @@ TStampainv_mask::TStampainv_mask():
else {
field(F_CATVENLISTINO).disable(); field(F_CODLISTINO).disable();
}
TCodart_livelli artlev;
TCodgiac_livelli giaclev;
set_handler(F_TOLIVELLOART, handle_liv);
set_handler(F_TOLIVELLOGIAC, handle_liv);
@ -231,18 +202,7 @@ TStampainv_mask::TStampainv_mask():
set_handler(F_DETTAGLIODEP, handle_ragg);
set_handler(F_DETTAGLIOMAG, handle_ragg);
set_handler(F_ORDINEART,handle_subord);
if (!artlev.enabled()) {
TMask_field &f1=field(F_RAGGCODICE);
f1.reset(); f1.check();f1.hide();
field(F_FROMLIVELLOART).hide();
field(F_TOLIVELLOART).hide();
}
if (!giaclev.enabled()) {
TMask_field &f2=field(F_RAGGLIVGIAC);
f2.reset(); f2.check();f2.hide();
field(F_FROMLIVELLOGIAC).hide();
field(F_TOLIVELLOGIAC).hide();
}
set_handler(F_CODLISTINO, handle_codlist);
}
bool TStampainv_mask::handle_subord(TMask_field &fld, KEY k)
@ -318,6 +278,29 @@ bool TStampainv_mask::handle_ragg(TMask_field &fld, KEY k)
}
bool TStampainv_mask::handle_codlist(TMask_field &fld, KEY k)
{
if (k == K_ENTER)
{
if (fld.empty())
{
TMask & m=fld.mask();
if (m.get_int(F_VAL1)-1==valorizz_przlist ||
m.get_int(F_VAL2)-1==valorizz_przlist ||
m.get_int(F_VAL3)-1==valorizz_przlist ||
m.get_int(F_VAL4)-1==valorizz_przlist ||
m.get_int(F_VAL5)-1==valorizz_przlist ||
m.get_int(F_VAL6)-1==valorizz_przlist
)
return fld.error_box("Occorre specificare il listino per la valorizzazione");
}
}
return TRUE;
}
// STAMPA anagrafiche
class TStampa_inventario : public TSkeleton_application
{
@ -330,6 +313,8 @@ protected:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
virtual void on_firm_change();
void setprint_permagazzini();
void setprint_perarticoli();
@ -337,6 +322,12 @@ public:
TStampa_inventario() {}
};
void TStampa_inventario ::on_firm_change()
{
_mask->enable_livellicodice();
}
bool TStampa_inventario::create()
{
@ -368,20 +359,22 @@ void TStampa_inventario::setprint_permagazzini()
TString cfilter,sortexp,joinexp;
_cur = _form->cursor();
// setta il filtro sul cursore
/* if (*_mask->get(F_FILTRO)=='N')
if (*_mask->get(F_FILTRO)=='N')
cfilter << "(GIAC!=0)&&" ;
if (*_mask->get(F_FILTRO)=='+')
cfilter << "(GIAC>0)&&" ;*/
cfilter << "(GIAC>0)&&" ;
if (*_mask->get(F_DAART))
cfilter << "(CODART>=" <<'"' << _mask->get(F_DAART)<< "\")&&" ;
if (*_mask->get(F_AART))
cfilter << "(CODART<=" <<'"' << _mask->get(F_AART)<< "\")&&" ;
cfilter << "(CODART<=" <<'"' << _mask->get(F_AART)<< "~~~~~~~~~~~~~~~~~~~\")&&" ;
if (cfilter.not_empty())
cfilter.cut(cfilter.len()-2);
//_mask->set_livellicodice();
// abilita/disabilita le sezioni dei totali
_form->setdett_permag(_mask->get_int(F_FROMLIVELLOART),_mask->get_int(F_TOLIVELLOART),
_mask->get_int(F_FROMLIVELLOGIAC),_mask->get_int(F_TOLIVELLOGIAC),
_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));
darec.put("ANNOES",_mask->get(F_ANNOES));
@ -401,16 +394,18 @@ void TStampa_inventario::setprint_perarticoli()
char subordine=*_mask->get(F_ORDINEART);
_cur = _form->cursor();
/* if (*_mask->get(F_FILTRO)=='N')
filter << "(GIAC!=0)&&" ;
if (*_mask->get(F_FILTRO)=='N')
filter << "(" << LF_MAG <<"->GIAC!=0)&&" ;
if (*_mask->get(F_FILTRO)=='+')
filter << "(GIAC>0)&&" ;*/
filter << "(" << LF_MAG <<"->GIAC>0)&&" ;
if (*_mask->get(F_DAMAG))
filter << "(CODMAG[1,3]>=" <<'"' << _mask->get(F_DAMAG)<< "\")&&" ;
if (*_mask->get(F_AMAG))
filter << "(CODMAG[1,3]<=" <<'"' << _mask->get(F_AMAG)<< "\")&&" ;
if (filter.not_empty())
filter.cut(filter.len()-2);
_mask->set_livellicodice();
switch (subordine)
{
case 'C':
@ -441,12 +436,9 @@ void TStampa_inventario::setprint_perarticoli()
break;
}
_form->setdett_perart(
_mask->get_int(F_FROMLIVELLOART),
_mask->get_int(F_TOLIVELLOART),
_mask->get_int(F_FROMLIVELLOGIAC),
_mask->get_int(F_TOLIVELLOGIAC),
_mask->get_bool(F_TOTALIMAGAZZINI),
_mask->get_bool(F_TOTALIDEPOSITI));
_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));
/* if (*_mask->get(F_FILTRO)=='N')
_form->find_field('B',odd_page,"TOT_DEPOSITO").setcondition("GIAC!=0");
if (*_mask->get(F_FILTRO)=='+')
@ -457,7 +449,13 @@ void TStampa_inventario::setprint_perarticoli()
joinexp << "ANNOES==" << _mask->get(F_ANNOES) << "|CODART==CODART";
TSortedfile *mag;
mag= new TSortedfile(LF_MAG,NULL,sortexp,filter,1);
// !?!?!! ATTENZIONE : Modifica temporanea
mag= new TSortedfile(LF_MAG,NULL,sortexp,"",1);
// il filtro viene qui settato DOPO la creazione del Sortedfile a causa di una bug
// sulla libreria nei TSorted_file / TCursor
mag->cursor().setfilter(filter);
// FINE MODIFICA ; rimettere il filtro nel costruttore quando il bug sarà risolto
_cur->relation()->replace(mag,1,joinexp);
_cur->setfilter(cfilter);
_cur->setregion(darec,arec);
@ -470,28 +468,30 @@ void TStampa_inventario::main_loop()
{
if (_mask->magazz_ini().gestmag(TRUE))
{
if (*_mask->get(F_ORDINE)=='A')
{
_form = new TForm_inventario("mg4200a", "");
setprint_perarticoli();
} else {
_form = new TForm_inventario("mg4200b", "");
setprint_permagazzini();
}
_form->add_colval(_mask->get_int(F_VAL1));
_form->add_colval(_mask->get_int(F_VAL2));
_form->add_colval(_mask->get_int(F_VAL3));
_form->add_colval(_mask->get_int(F_VAL4));
_form->add_colval(_mask->get_int(F_VAL5));
_form->add_colval(_mask->get_int(F_VAL6));
_form->set_parametri(_mask->get(F_CATVENLISTINO),
_mask->get(F_CODLISTINO),
*_mask->get(F_REALE_GIAC)=='R',
*_mask->get(F_FIN_COMP)=='C'
);
_form->print();
delete _form;
if (*_mask->get(F_ORDINE)=='A')
{
if (*_mask->get(F_FILTRO)=='T') // tutti gli articoli
_form = new TForm_inventario("mg4200aa", "");
else
_form = new TForm_inventario("mg4200a", "");
setprint_perarticoli();
} else {
_form = new TForm_inventario("mg4200b", "");
setprint_permagazzini();
}
_form->set_parametri(_mask->get(F_CATVENLISTINO),
_mask->get(F_CODLISTINO),
*_mask->get(F_REALE_GIAC)=='R',
*_mask->get(F_FIN_COMP)=='C' );
_form->add_colval(_mask->get_int(F_VAL1)-1);
_form->add_colval(_mask->get_int(F_VAL2)-1);
_form->add_colval(_mask->get_int(F_VAL3)-1);
_form->add_colval(_mask->get_int(F_VAL4)-1);
_form->add_colval(_mask->get_int(F_VAL5)-1);
_form->add_colval(_mask->get_int(F_VAL6)-1);
_form->print();
delete _form;
}
} // while true
return ;

View File

@ -1,5 +1,6 @@
#ifndef __MG4200_H
#define __MG4200_H
#include "mg3msk.h"
#include "anamag.h"
#include "mag.h"
#include "stomag.h"
@ -19,18 +20,12 @@
#define F_ADES 112
#define F_VALMEDI 113
#define F_STAMPAGIAC 114
#define F_RAGGCODICE 115
#define F_FROMLIVELLOART 116
#define F_TOLIVELLOART 117
#define F_RAGGLIVGIAC 118
#define F_TOTALIMAGAZZINI 119
#define F_TOTALIDEPOSITI 120
#define F_ENABLEMAGAZZINI 121
#define F_DETTAGLIOMAG 122
#define F_DETTAGLIODEP 123
#define F_FROMLIVELLOGIAC 124
#define F_TOLIVELLOGIAC 125
#define F_REALE_GIAC 126
#define F_PREZZIVALORI 127
#define F_CODLISTINO 128

View File

@ -19,11 +19,11 @@ BEGIN
FLAGS "G"
PROMPT 36 1 "sotto-ordinamento "
ITEM "C|codice"
MESSAGE HIDE,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@
MESSAGE HIDE,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@|ENABLE,F_RAGGCODICE
ITEM "D|descrizione"
MESSAGE HIDE,G_CATMER@|DISABLE,G_CODART@|SHOW,G_DESART@
MESSAGE HIDE,G_CATMER@|DISABLE,G_CODART@|SHOW,G_DESART@|CLEAR,F_RAGGCODICE|K_SPACE,F_RAGGCODICE
ITEM "M|gruppo merc./codice"
MESSAGE SHOW,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@
MESSAGE SHOW,G_CATMER@|ENABLE,G_CODART@|HIDE,G_DESART@|ENABLE,F_RAGGCODICE
END
LIST F_REALE_GIAC 12
@ -31,7 +31,7 @@ BEGIN
PROMPT 2 2 "Inventario "
ITEM "G|di giacenza"
ITEM "R|reale"
HELP "reale =(giac+ACL-INCL)"
HELP "reale =(giac+ACL-INCL)"
END
NUMBER F_ANNOES 4
@ -51,7 +51,7 @@ END
LIST F_FIN_COMP 22
BEGIN
PROMPT 2 3 "Valorizzo solo "
PROMPT 2 3 "Valorizza solo "
ITEM "C|i componenti impegnati"
ITEM "F|i finiti in produzione"
HELP "finiti =(giac+INPRODF-INPRODC)"
@ -60,10 +60,10 @@ END
LIST F_FILTRO 23
BEGIN
PROMPT 43 3 " Stampo "
PROMPT 43 3 " stampa "
ITEM "N|solo giacenze non nulle"
ITEM "+|solo giacenze positive"
ITEM " |tutti gli articoli"
ITEM "T|tutti gli articoli"
END
@ -116,7 +116,7 @@ STRING F_DAMAG 3
BEGIN
PROMPT 2 5 "Dal magazzino "
FLAGS "U"
USE MAG SELECT CODTAB[4,5]=="" && CODTAB[1,3]!=""
USE MAG SELECT CODTAB[4,5]==""
INPUT CODTAB F_DAMAG
DISPLAY "Codice" CODTAB
DISPLAY "Descr@50" S0
@ -173,7 +173,7 @@ END
BOOLEAN F_RAGGCODICE
BEGIN
PROMPT 2 8 "Raggruppo gli articoli"
PROMPT 2 8 "Stampa totali livelli di codice"
MESSAGE FALSE CLEAR,F_FROMLIVELLOART|CLEAR,F_TOLIVELLOART|CHECK,F_TOLIVELLOART
MESSAGE TRUE ENABLE,F_FROMLIVELLOART|ENABLE,F_TOLIVELLOART|CHECK,F_TOLIVELLOART
END
@ -207,7 +207,7 @@ END
BOOL F_RAGGLIVGIAC
BEGIN
PROMPT 2 9 "Raggruppo le giacenze"
PROMPT 2 9 "Stampa totali livelli di giacenza"
MESSAGE FALSE CLEAR,F_FROMLIVELLOGIAC|CLEAR,F_TOLIVELLOGIAC|CHECK,F_TOLIVELLOGIAC
MESSAGE TRUE ENABLE,F_FROMLIVELLOGIAC|ENABLE,F_TOLIVELLOGIAC
END
@ -244,14 +244,14 @@ END
BOOL F_TOTALIMAGAZZINI
BEGIN
PROMPT 2 10 "Stampo i totali di magazzino"
PROMPT 2 10 "Stampa i totali di magazzino"
MESSAGE TRUE ENABLE,F_TOTALIDEPOSITI
MESSAGE FALSE CLEAR,F_TOTALIDEPOSITI
END
BOOL F_TOTALIDEPOSITI
BEGIN
PROMPT 42 10 "Stampo i totali di deposito"
PROMPT 42 10 "Stampa i totali di deposito"
END
LIST F_VAL1 20
@ -269,7 +269,7 @@ BEGIN
END
LIST F_VAL2 20
BEGIN
PROMPT 42 12 "Valorizz. 2 "
PROMPT 2 13 "Valorizz. 2 "
ITEM "|"
ITEM "1|Ultimo costo"
ITEM "2|Media ultimi costi"
@ -283,7 +283,7 @@ BEGIN
END
LIST F_VAL3 20
BEGIN
PROMPT 2 13 "Valorizz. 3 "
PROMPT 2 14 "Valorizz. 3 "
ITEM "|"
ITEM "1|Ultimo costo"
ITEM "2|Media ultimi costi"
@ -297,7 +297,7 @@ BEGIN
END
LIST F_VAL4 20
BEGIN
PROMPT 42 13 "Valorizz. 4 "
PROMPT 42 12 "Valorizz. 4 "
ITEM "|"
ITEM "1|Ultimo costo"
ITEM "2|Media ultimi costi"
@ -311,7 +311,7 @@ BEGIN
END
LIST F_VAL5 20
BEGIN
PROMPT 2 14 "Valorizz. 5 "
PROMPT 42 13 "Valorizz. 5 "
ITEM "|"
ITEM "1|Ultimo costo"
ITEM "2|Media ultimi costi"
@ -337,6 +337,12 @@ BEGIN
ITEM "8|FIFO"
ITEM "9|LIFO"
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 2 16 "Valorizzazioni al prezzo di listino"
END
STRING F_CATVENLISTINO 2
BEGIN
FLAGS "U"
@ -350,6 +356,7 @@ BEGIN
GROUP G_LISTINO
END
STRING F_CODLISTINO 3
BEGIN
FLAGS "U"

File diff suppressed because it is too large Load Diff

2613
mg/mg4200aa.frm Executable file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,14 @@
#define FF_FLAGSOTTOS 668
#define FF_FLAGVALMEDI 669
#define FF_PREZZIVALORI 670
#define FF_ENABLECOLS 671
#define FF_DIVDEPOSITI 671
#define FF_RANGEMAGAZ 672
#define FF_RANGEARTIC 673
#define FF_RANGECATMER 674
#define FF_FILTRO 675
#define FF_ENABLECOLS 679
// Questi sono i gruppi dei raggruppamenti
// e rappresentano i vari gruppi articoli / livello giac / magazzini ed

View File

@ -48,6 +48,8 @@ class TSheet_field;
#include "rmovmag.h"
#endif
// campi comuni alla maschere di magazzino
typedef enum {
riga_nongenerata=' ',
@ -56,13 +58,12 @@ typedef enum {
} TTipo_rigamovmag;
char * Nome_valorizz[];
typedef enum {
valorizz_costmedio,
valorizz_ultcos,
valorizz_mediacos,
valorizz_przlist,
valorizz_coststd,
valorizz_costmedio,
valorizz_FIFOa,
valorizz_LIFOa,
valorizz_FIFO,
@ -76,6 +77,16 @@ class TArticolo : public TMultiple_rectype
TRecfield * _codice;
protected:
// la get_str supporta anche la sintassi:
// #LF->fieldname
// oppure:
// #LF_par1->fieldname
// dove:
// LF = numero logico del sottofile collegato (LF_UMART, LF_DESLIN, LF_CODCORR
// par1 = chiave dell'indice del file collegato
// se par1 comincia con '#', esso indica il numero progressivo nell'indice
// (es:#49_#1: prima unità di misura)
// fieldname = nome del campo nel file collegato
virtual const TString & get_str(const char* fieldname) const ;
virtual void set_body_key(TRectype & rowrec);
@ -111,6 +122,17 @@ class TArticolo_giacenza : public TArticolo
TString16 _anno_sto;
protected:
// la get_str supporta anche la sintassi:
// #LF->fieldname
// #LF_par1->fieldname
// #LF_par1_par2->fieldname
// #LF_par1_par2_par3->fieldname
// dove:
// LF = numero logico del sottofile collegato (LF_UMART, LF_DESLIN, LF_CODCORR
// par1, par2, par3 = varie parti della chiave dell'indice del file collegato
// il numero di queste parti ed il loro valore dipende dal file collegato
// se parX comincia per # rappresenta il numero progressivo nell'indice
// fieldname = nome del campo nel file collegato
virtual const TString & get_str(const char* fieldname) const ;
virtual void set_body_key(TRectype & rowrec);
void set_anno_mag (const char * anno = NULL);
@ -437,7 +459,7 @@ class TForm_stampemg : public TForm
//sostituire con le funzioni di TLivelli_... :
//TDecoder *_giacgrp,*_artgrp;
bool setdettaglio(bool show, int fromlivart,int livart,int fromlivgiac,int livgiac,bool dettgiac);
void add_giaclev(TString &levname);
void add_giaclev(TString &levname,int from,int to);
TCodart_livelli * _artlev;
TCodgiac_livelli * _giaclev;
@ -449,10 +471,11 @@ public:
public:
void gruppogiac(TForm_item &cf, TToken_string &s);
void gruppoart(TForm_item &cf, TToken_string &s);
void codgruppogiac(TForm_item &cf, TToken_string &s);
bool validate(TForm_item &cf, TToken_string &s);
void setcatmer(bool catmer,bool sottoc=FALSE);
bool setdett_perart(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep);
bool setdett_permag(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep,bool showdett);
bool setdett_perart(bool totaliart, int fromlivart,int livart,bool totaligiac, int fromlivgiac,int livgiac,bool showmag, bool showdep);
bool setdett_permag(bool totaliart, int fromlivart,int livart,bool totaligiac, int fromlivgiac, int livgiac,bool showmag, bool showdep,bool showdett);
TForm_stampemg(const char *name,const char *code) ;
virtual ~TForm_stampemg();
};
@ -464,10 +487,12 @@ class TStampemg_mask: public TMask
TCodart_livelli _artlev;
TMagazzini _magazz_ini;
public:
void enable_livellicodice() ;
void set_livellicodice() ;
TCodgiac_livelli &giaclev() {return _giaclev;}
TCodart_livelli &artlev() {return _artlev;}
TMagazzini & magazz_ini() {return _magazz_ini;}
TStampemg_mask(const char * name) : TMask(name){}
TStampemg_mask(const char * name) : TMask(name){;}
virtual ~TStampemg_mask(){}
};

View File

@ -30,10 +30,15 @@ const TString & TArticolo::get_str(const char* fieldname) const
const int logicnum = atoi(fname);
const char * op1 = strchr(fname, '_');
int index = 0;
if (op1 && *op1 == '#')
index = atoi(fname + 1);
if (op1)
{
op1=op1+1;
if (*op1 == '#')
index = atoi(fname + 1);
}
const char* op2 = strstr(fname, "->");
CHECKS(op2, "Can't find '->' in string ", fieldname);
op2=op2+2;
switch (logicnum)
{
@ -217,16 +222,30 @@ const TString & TArticolo_giacenza::get_str(const char* fieldname) const
return TRectype::get_str(fieldname);
char * fname = (char *) fieldname + 1;
const int logicnum = atoi(fname);
if (logicnum !=LF_MAG && logicnum !=LF_STOMAG)
return TArticolo::get_str(fieldname);
const char * op1 = strchr(fname, '_');
int index = 0;
if (op1 && *op1 == '#')
index = atoi(fname + 1);
fname = (char *) op1 + 1;
if (op1)
{
op1=op1+1;
fname = (char *) op1;
if (*op1 == '#')
index = atoi(fname + 1);
}
const char * op2 = strchr(fname, '_');
fname = (char *) op2 + 1;
if (op2)
{
op2=op2+1;
fname = (char *) op2 + 1;
}
const char * op3 = strchr(fname, '_');
if (op3)
op3=op3+1;
const char * op4 = strstr(fname, "->");
CHECKS(op4, "Can't find '->' in string ", fieldname);
op4=op4+2;
switch (logicnum)
{
@ -236,15 +255,12 @@ const TString & TArticolo_giacenza::get_str(const char* fieldname) const
if (index > 0 && op3)
return mag(op1).row(index).get(op4);
break;
case LF_STOMAG:
case LF_STOMAG:
if (index = 0)
index = find_storico(op1, op2);
if (index > 0)
return storico(op1).row(index).get(op4);
break;
default:
return TArticolo::get_str(fieldname);
break;
}
return EMPTY_STRING;
}
@ -465,9 +481,17 @@ real TArticolo_giacenza::prezzo_listino(const char * annoes, const char * catven
if (last_esercizio == atoi(annoes))
{
static TString16 f;
if (f.empty())
TConfig cfg(CONFIG_DITTA);
TCondizione_vendita cv(&cfg);
cv.put_listino(codlist,catven);
if (cv.ricerca(codice()))
return cv.get_prezzo();
else
{
// se non lo trova, cerca nel prezzo indicato nelle UM
f.format("#%d->%s", LF_UMART, UMART_PREZZO);
return get_real(f); // da terminare
return get_real(f);
}
}
else
{

View File

@ -1,16 +1,18 @@
#include "form.h"
#include "mglib.h"
#include "mg3frm.h"
#include "mg3msk.h"
void TForm_stampemg::add_giaclev(TString &levname)
void TForm_stampemg::add_giaclev(TString &levname, int from, int to)
{
int lv=1;
do {
to=(to==0 ? (_tolivgiac ? _tolivgiac:_giaclev->last_level()) : to);
int lv=(from==0 ? 1: from );
for (; lv <to ; lv++) {
const TString & piece = _giaclev->unpack_grpcode(relation()->lfile(LF_MAG).get("LIVELLO"),lv);
if (piece.not_empty()) {
if (piece.not_empty())
levname << '/' << piece ;
}
} while (++lv< (_tolivgiac ? _tolivgiac: _giaclev->last_level()) );
}
}
@ -19,17 +21,14 @@ void TForm_stampemg::gruppogiac(TForm_item &cf, TToken_string &s)
TString valore,levname;
int livello=atoi(s.get());
if (_fromlivgiac) {
levname=relation()->lfile(LF_MAG).get("CODART");
if (_fromlivgiac>1) {
add_giaclev(levname);
}
}
levname << ' ' << _giaclev->name(livello) ;
if (_fromlivgiac && livello == _fromlivgiac)
{
levname << _giaclev->name(livello) << ' ' ;
}
valore=_giaclev->group_descr(relation()->lfile(LF_MAG).get("LIVELLO"),livello);
if (valore.empty())
valore=UNKNOWN_NAME;
cf.set(levname << ' ' << valore);
valore = UNKNOWN_NAME;
cf.set(levname << valore);
}
@ -39,10 +38,34 @@ void TForm_stampemg::gruppoart(TForm_item &cf, TToken_string &s)
TString valore;
valore=_artlev->group_descr(relation()->lfile(LF_ANAMAG).get("CODART"),lv);
if (valore.not_empty())
cf.set(valore);
else
cf.set(UNKNOWN_NAME);
if (valore.empty())
{
valore.separator(',');
valore << "_USER,CODGRUPPOART," << lv;
validate(cf,valore);
valore.cut(0);
valore << '"' << cf.get() << '"';
}
cf.set(valore);
}
void TForm_stampemg::codgruppogiac(TForm_item &cf, TToken_string &s)
{
TString valore,levname;
int livello=atoi(s.get());
if (_fromlivgiac && livello == _fromlivgiac)
{
levname=relation()->lfile(LF_MAG).get("CODART");
add_giaclev(levname,1,_fromlivgiac);
levname << ' ';
} else {
levname << _giaclev->name(livello) << ' ' ;
}
valore=_giaclev->unpack_grpcode(relation()->lfile(LF_MAG).get("LIVELLO"),livello);
if (valore.empty())
valore = UNKNOWN_NAME;
cf.set(levname << valore);
}
bool TForm_stampemg::validate(TForm_item &cf, TToken_string &s)
@ -77,8 +100,9 @@ bool TForm_stampemg::validate(TForm_item &cf, TToken_string &s)
cf.set(_artgrp->decode(valore));
*/
gruppoart(cf,s);
}
if (subcode=="CODGRUPPOART") {
} else if (subcode=="CODGRUPPOGIAC") {
codgruppogiac(cf,s);
} else if (subcode=="CODGRUPPOART") {
int lv=atoi(s.get());
do {
valore=relation()->lfile(LF_ANAMAG).get("CODART");
@ -165,24 +189,46 @@ void TForm_stampemg::setcatmer(bool catmer,bool sottoc)
_sottocatmer=sottoc;
}
bool TForm_stampemg::setdett_perart(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep)
bool TForm_stampemg::setdett_perart(bool totaliart,int fromlivart,int livart,bool totaligiac,int fromlivgiac,int livgiac,bool showmag, bool showdep)
{
find_field('B',odd_page,"H_MAGAZZINO").show(showmag && showdep);
if (!totaliart && fromlivgiac==0)
fromlivart=artlev().last_level();
if (!totaligiac)
{
if (livart==0)
livart=artlev().last_level(); //
} else {
if (livgiac==0)
livgiac=giaclev().last_level(); //
}
find_field('B',odd_page,"H_MAGAZZINO").enable(showmag && showdep);
find_field('B',odd_page,"TOT_MAGAZZINO").show(showmag);
find_field('B',odd_page,"H_DEPOSITO").show(FALSE);
find_field('B',odd_page,"TOT_DEPOSITO").show(showdep);
return setdettaglio(TRUE,fromlivart,livart,fromlivgiac,livgiac,showmag||showdep);
}
bool TForm_stampemg::setdett_permag(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep,bool showdett)
bool TForm_stampemg::setdett_permag(bool totaliart,int fromlivart,int livart,bool totaligiac,int fromlivgiac,int livgiac,bool showmag, bool showdep,bool showdett)
{
if (!totaliart && fromlivgiac==0)
fromlivart=artlev().last_level();
if (!totaligiac)
{
if (livart==0)
livart=artlev().last_level(); //
} else {
if (livgiac==0)
livgiac=giaclev().last_level(); //
}
find_field('B',odd_page,"H_MAGAZZINO").show(showmag && (showdep) );
find_field('B',odd_page,"TOT_MAGAZZINO").show(showmag);
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();
//if (livgiac==0)
// livgiac = _giaclev->last_level();
return setdettaglio(showdett,fromlivart,livart,fromlivgiac,livgiac,FALSE);
}
@ -193,7 +239,7 @@ bool TForm_stampemg::setdettaglio(bool show, int fromlivart,int livart,int froml
const int last_giaclev=_giaclev->last_level();
const int tolivart =min(( livart ? livart :_artlev->last_level()) ,_artlev->last_level()-1) ;
const int tolivgiac=min((livgiac ? livgiac :_giaclev->last_level()),_giaclev->last_level()-1);
const int tolivgiac=min((livgiac ? livgiac :_giaclev->last_level()),_giaclev->last_level());
_fromlivart=fromlivart;
_fromlivgiac=fromlivgiac;
@ -205,7 +251,7 @@ bool TForm_stampemg::setdettaglio(bool show, int fromlivart,int livart,int froml
TForm_subsection &s2=(TForm_subsection &)find_field('B',odd_page,"TOT_ARTICOLO");
if (fromlivgiac==0 // non raggruppo a partire dai livelli di giacenza
&& (livart==0 ||livart==_artlev->last_level())) {
s1.show(show && dettgiac);
s1.show(show && (dettgiac || livgiac!=0) );
s2.show(show);
} else {
s1.hide();
@ -242,15 +288,19 @@ bool TForm_stampemg::setdettaglio(bool show, int fromlivart,int livart,int froml
fromlivgiac=fromlivgiac ? fromlivgiac :1;
// codice livello giacenza
for (i=fromlivgiac;i<=tolivgiac ; i++) {
TString sname=("GRUPPI_LIVGIAC");
sname << i;
TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,sname);
TString cond(s.condition());
cond << "[1," << _giaclev->packed_length(i) <<']';
s.setcondition(cond,_strexpr);
if (livart==0)
{
TString sname=("GRUPPI_LIVGIAC");
sname << i;
TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,sname);
TString cond(s.condition());
cond << "+LIVELLO[" << _giaclev->packed_length(i-1)+1 << "," << _giaclev->packed_length(i) <<']';
s.setcondition(cond,_strexpr);
}
}
// sezioni livello codice
for (i=fromlivart;i<=tolivart ; i++) {
// for (i=fromlivart;i<=tolivart ; i++) {
for (i=1;i<=tolivart ; i++) {
TString sname("GRUPPI_CODART");
sname << i;
TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,sname);
@ -276,3 +326,68 @@ TForm_stampemg::~TForm_stampemg()
delete _giaclev;
delete _artlev;
}
// maschera delle stampe magazzino
void TStampemg_mask::enable_livellicodice()
{
int pos = id2pos(F_RAGGCODICE);
if (pos >= 0)
{
TMask_field &f_ragg=field(F_RAGGCODICE);
if (!_artlev.enabled())
{
// nasconde i campi di livello articolo
f_ragg.reset(); f_ragg.check(); f_ragg.hide();
field(F_FROMLIVELLOART).hide();
field(F_TOLIVELLOART).hide();
} else {
f_ragg.set("");
f_ragg.show();
f_ragg.check();
field(F_FROMLIVELLOART).show();
field(F_TOLIVELLOART).show();
}
}
int pos_g = id2pos(F_RAGGLIVGIAC);
if (pos_g >= 0)
{
TMask_field &f_ragg=field(F_RAGGLIVGIAC);
if (!_giaclev.enabled())
{
// nasconde i campi di livello giacenza
f_ragg.reset(); f_ragg.check();f_ragg.hide();
field(F_FROMLIVELLOGIAC).hide();
field(F_TOLIVELLOGIAC).hide();
} else {
f_ragg.set("");
f_ragg.show();
f_ragg.check();
field(F_FROMLIVELLOGIAC).show();
field(F_TOLIVELLOGIAC).show();
}
}
}
void TStampemg_mask::set_livellicodice()
{
if (!get_bool(F_RAGGCODICE) && get_int(F_FROMLIVELLOGIAC)==0)
{
set(F_FROMLIVELLOART,artlev().last_level());
//set(F_TOLIVELLOART,);
}
if (!get_bool(F_RAGGLIVGIAC))
{
if (get_int(F_TOLIVELLOART)==0)
set(F_TOLIVELLOART,artlev().last_level()); //
} else {
if (get_int(F_TOLIVELLOGIAC)==0)
set(F_TOLIVELLOGIAC,giaclev().last_level()); //
}
}

View File

@ -18,5 +18,7 @@
#define MOVMAG_TIPOCF "TIPOCF"
#define MOVMAG_CODCF "CODCF"
#define MOVMAG_NUMREGST "NUMREGST"
#define MOVMAG_EXNUMDOC "EX_NUMDOC"
#define MOVMAG_EXDATADOC "EX_DATADOC"
#endif

View File

@ -133,7 +133,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_2 CODTAB
CHECKTYPE NORMAL
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=="")||(#THIS_FIELD=="")||(#THIS_FIELD==#F_DOC1)||(#THIS_FIELD==#F_DOC2)||(#THIS_FIELD==#F_DOC3)||(#THIS_FIELD==#F_DOC4)||(#THIS_FIELD==#F_DOC5)}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -147,7 +147,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_3 CODTAB
CHECKTYPE NORMAL
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=="")||(#THIS_FIELD=="")||(#THIS_FIELD==#F_DOC1)||(#THIS_FIELD==#F_DOC2)||(#THIS_FIELD==#F_DOC3)||(#THIS_FIELD==#F_DOC4)||(#THIS_FIELD==#F_DOC5)}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -161,7 +161,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_4 CODTAB
CHECKTYPE NORMAL
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=="")||(#THIS_FIELD=="")||(#THIS_FIELD==#F_DOC1)||(#THIS_FIELD==#F_DOC2)||(#THIS_FIELD==#F_DOC3)||(#THIS_FIELD==#F_DOC4)||(#THIS_FIELD==#F_DOC5)}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -175,7 +175,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_4 CODTAB
CHECKTYPE NORMAL
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=="")||(#THIS_FIELD=="")||(#THIS_FIELD==#F_DOC1)||(#THIS_FIELD==#F_DOC2)||(#THIS_FIELD==#F_DOC3)||(#THIS_FIELD==#F_DOC4)||(#THIS_FIELD==#F_DOC5)}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -185,7 +185,7 @@ BEGIN
FLAGS "U"
FIELD S7[1,1]
USE %STD
INPUT CODTAB F_STATO_I_DOC_I_1
INPUT CODTAB F_STATO_I_DOC_I_1
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_I_DOC_I_1 CODTAB
@ -198,7 +198,7 @@ BEGIN
PROMPT 30 9 ""
FLAGS "U"
USE %STD
INPUT CODTAB F_STATO_I_DOC_I_2
INPUT CODTAB F_STATO_I_DOC_I_2
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_I_DOC_I_2 CODTAB
@ -321,23 +321,9 @@ BEGIN
FIELD B4
END
BOOLEAN F_INTERATTIVO
BEGIN
PROMPT 2 18 "Interattivo"
FIELD B5
MESSAGE FALSE CLEAR,F_INSERT_MODE
MESSAGE TRUE ENABLE,F_INSERT_MODE
END
BOOLEAN F_INSERT_MODE
BEGIN
PROMPT 42 18 "Attivo solo in creazione"
FIELD B6
END
STRING F_APPLICAZIONE 20
BEGIN
PROMPT 2 19 "Applicazione "
PROMPT 2 18 "Applicazione "
FIELD S3
END

View File

@ -97,13 +97,17 @@ IMPNETTI = S_NORMALE //2200
RAGGREFF = S_NORMALE //2300
SPESEINC = S_NORMALE //2400
ADDBOLLI = S_NORMALE //2500
CAUSMAG = S_OBBLIGATORIO //2900
CAUSMAGC = S_DISABILITATO //2900
DESCRMAG = S_NORMALE //2900
DESCRMAGC = S_DISABILITATO //2900
BLANK = S_DISABILITATO //4000
[DEFAULT]
NDEFAULTS=0
[SHEET]
NCOLS=15
NCOLS=18
1=FR_CODMAG
2=FR_CODDEP
3=FR_CODART
@ -119,6 +123,9 @@ NCOLS=15
13=FR_PERCPROV
14=FR_CODIVA
15=FR_ADDIVA
16=FR_CAUS
17=FR_CODMAGC
18=FR_CODDEPC
[RIGHE]
NTIPIRIGA=9
@ -159,10 +166,11 @@ NHANDLER=0
2200 = S_NORMALE
2300 = S_NORMALE
2400 = S_NORMALE
2900 = S_NORMALE
4000 = S_NORMALE
[ORDINEGRUPPI]
NGROUPS=21
NGROUPS=22
1=100
2=200
3=300
@ -183,4 +191,5 @@ NGROUPS=21
18=2200
20=2300
21=2400
22=2900

View File

@ -84,34 +84,40 @@ END
STRINGA 11 10
BEGIN
KEY "Intestazione (Stato doc.)"
PROMPT 75 4 "Stato doc."
PROMPT 67 4 "St. doc."
END
STRINGA 12 10
BEGIN
KEY "Intestazione (Cod. Valuta)"
PROMPT 76 4 "Val."
END
STRINGA 13 10
BEGIN
KEY "Intestazione (Imponibile)"
PROMPT 91 4 "Imponibile"
END
STRINGA 13 10
STRINGA 14 10
BEGIN
KEY "Intestazione (Spese)"
PROMPT 111 4 "Spese"
END
STRINGA 14 10
STRINGA 15 10
BEGIN
KEY "Intestazione (IVA)"
PROMPT 128 4 "IVA"
END
STRINGA 15 14
STRINGA 16 14
BEGIN
KEY "Intestazione (Importo totale)"
PROMPT 134 4 "Importo tot."
END
STRINGA 16 146
STRINGA 17 146
BEGIN
KEY "Separatore (finale)"
PROMPT 1 5 "------------------------------------------------------------------------------------------------------------------------------------------------------"
@ -121,21 +127,21 @@ END
SECTION BODY ODD 2
STRINGA 17 4
STRINGA 21 4
BEGIN
KEY "Codice numerazione"
PROMPT 1 1 ""
FIELD 33->CODNUM
END
STRINGA 18 9
STRINGA 22 9
BEGIN
KEY "Tipo documento"
PROMPT 11 1 ""
FIELD %TIP->S0
END
NUMERO 19 7
NUMERO 23 7
BEGIN
KEY "Numero documento"
PROMPT 22 1 ""
@ -143,14 +149,14 @@ BEGIN
PICTURE "#######"
END
DATA 20 10
DATA 24 10
BEGIN
KEY "Data documento"
PROMPT 31 1 ""
FILED 33->DATADOC
END
NUMERO 21 7
NUMERO 25 7
BEGIN
KEY "Codice cliente"
PROMPT 42 1 ""
@ -158,51 +164,136 @@ BEGIN
PICTURE "#######"
END
STRINGA 22 25 2
STRINGA 26 22 2
BEGIN
KEY "Cliente ragione sociale"
PROMPT 51 1 ""
MESSAGE _CLIENTE,!RAGSOC
END
STRINGA 23 1
STRINGA 27 1
BEGIN
KEY "Stato documento"
PROMPT 76 1 ""
PROMPT 73 1 ""
FIELD 33->STATO
END
NUMBER 24 15
STRINGA 28 4
BEGIN
KEY "Cod. Valuta"
PROMPT 76 1 ""
FIELD 33->CODVAL
END
NUMBER 29 15
BEGIN
KEY "Totale imponibile (con spese)"
PROMPT 86 1 ""
MESSAGE _TOTIMPONIBILI,0
MESSAGE _TOTIMPONIBILI,0|COPY,40
PICTURE "###.###.###.###"
END
NUMBER 25 15
NUMBER 30 15
BEGIN
KEY "Spese"
PROMPT 101 1 ""
PICTURE "###.###.###.###"
FIELD TOTSPE
MESSAGE COPY,41
END
NUMBER 26 15
NUMBER 31 15
BEGIN
KEY "Totale imposte"
PROMPT 116 1 ""
FIELD IMPOSTE
MESSAGE COPY,42
PICTURE "###.###.###.###"
END
NUMBER 27 15
NUMBER 32 15
BEGIN
KEY "Totale documento"
PROMPT 131 1 ""
FIELD TOTDOC
PICTURE "###.###.###.###"
MESSAGE COPY,43
END
NUMBER 40 15
BEGIN
KEY "Hidden field for computing tot imponibili"
FLAGS "H"
PROMPT 86 1 ""
MESSAGE _NUMEXPR,IF(33->CAMBIO!=0;#40*33->CAMBIO;#40)
MESSAGE ADD,FL->52
END
NUMBER 41 15
BEGIN
KEY "Hidden field for computing tot spese"
PROMPT 101 1 ""
MESSAGE _NUMEXPR,IF(33->CAMBIO!=0;#41*33->CAMBIO;#41)
MESSAGE ADD,FL->53
FLAGS "H"
END
NUMBER 42 15
BEGIN
KEY "Hidden field for computing tot imposte"
PROMPT 116 1 ""
MESSAGE _NUMEXPR,IF(33->CAMBIO!=0;#42*33->CAMBIO;#42)
MESSAGE ADD,FL->54
FLAGS "H"
END
NUMBER 43 15
BEGIN
KEY "Hidden field for computing tot documento"
PROMPT 131 1 ""
MESSAGE _NUMEXPR,IF(33->CAMBIO!=0;#43*33->CAMBIO;#43)
MESSAGE ADD,FL->55
FLAGS "H"
END
END
SECTION FOOTER LAST 2
STRINGA 51 25 1
BEGIN
KEY "Totale"
PROMPT 51 1 "@BTotale"
END
NUMBER 52 15
BEGIN
KEY "Totale imponibili"
PROMPT 86 1 ""
PICTURE "###.###.###.###"
END
NUMBER 53 15
BEGIN
KEY "Totale Spese"
PROMPT 101 1 ""
PICTURE "###.###.###.###"
END
NUMBER 54 15
BEGIN
KEY "Totale imposte"
PROMPT 116 1 ""
PICTURE "###.###.###.###"
END
NUMBER 55 15
BEGIN
KEY "Totale documenti"
PROMPT 131 1 ""
PICTURE "###.###.###.###"
END
END

View File

@ -1,4 +1,5 @@
#include "ve0100.h"
#include "ve0100b1.h"
#include "ve0100o.h"
#include "veini.h"
@ -254,38 +255,211 @@ bool TMotore_application::num_handler( TMask_field& f, KEY key )
return TRUE;
}
HIDDEN bool elab_hndl( TMask_field & f, KEY key )
{
if (f.to_check(key, TRUE))
{
const int id = f.dlg();
}
return TRUE;
}
class TElabora_mask : public TMask
{
TMask * _main;
static TLista_elaborazioni _elab;
// @access Public Member
public:
void update_list();
void elabora();
static bool tipo_elaborazione_handler( TMask_field& f, KEY key );
static bool tipo_documento_handler( TMask_field& f, KEY key );
// @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk)
TElabora_mask(const char* title, TMask * main_mask);
// @cmember Distruttore
virtual ~TElabora_mask() {}
};
void TElabora_mask::update_list()
{
TString_array elabs;
const TString16 tipo(_main->get(F_TIPODOC));
const TString16 stato(_main->get(F_STATO));
const TString16 tipo_elab(get(F_TIPODOC_ELAB));
const TString16 stato_elab(get(F_STATODOC_ELAB));
const bool from_elab = !get_bool(F_TYPE);
int items = 0;
if (from_elab)
items = _elab.select(elabs, tipo, stato, tipo_elab, stato_elab) ;
else
items = _elab.select(elabs, tipo_elab, stato_elab, tipo, stato) ;
const bool ok = items > 0;
enable(DLG_OK, ok);
enable(F_ELAB, ok);
TList_field & f = (TList_field &) field(F_ELAB);
TToken_string codes;
TToken_string descrs;
if (ok)
for (int i = 0; i < items; i++)
{
codes.add(format("%s", (const char *)_elab[elabs.row(i)].codice()));
descrs.add((const char *)_elab[elabs.row(i)].descrizione());
}
f.replace_items(codes, descrs);
}
TLista_elaborazioni TElabora_mask::_elab;
void TElabora_mask::elabora()
{
TLista_documenti in;
TLista_documenti out;
TDocumento & app_doc = ((TDocumento_mask *)_main)->doc();
long numdoc = get_long(F_NDOC_ELAB);
TDocumento d(*get(F_PROVV_ELAB), get_int(F_ANNO_ELAB), get(F_CODNUM_ELAB), numdoc, new TCond_vendita());
if (numdoc <= 0)
{
TDocumento::copy_data(d.head(), app_doc.head());
d.put(DOC_TIPODOC, get(F_TIPODOC_ELAB));
}
const bool from_elab = !get_bool(F_TYPE);
const TString16 cod_elab(get(F_ELAB));
if (from_elab)
{
in.add(app_doc);
out.add(d);
if (_elab[cod_elab].elabora(in, out, TDate(TODAY), TRUE))
{
if (out[0] != d)
out.rewrite();
if (in[0] != app_doc)
{
in.rewrite();
app_doc = in[0];
}
}
}
else
{
out.add(app_doc);
in.add(d);
if (_elab[cod_elab].elabora(in, out, TDate(TODAY), TRUE))
{
if (out[0] != app_doc)
{
out.rewrite();
app_doc = out[0];
}
if (in[0] != d)
in.rewrite();
}
}
}
bool TElabora_mask::tipo_elaborazione_handler( TMask_field& f, KEY key )
{
if (key == K_SPACE)
((TElabora_mask&)f.mask()).update_list();
return TRUE;
}
bool TElabora_mask::tipo_documento_handler( TMask_field& f, KEY key )
{
if (f.to_check(key, TRUE))
((TElabora_mask&)f.mask()).update_list();
return TRUE;
}
TElabora_mask::TElabora_mask(const char* title, TMask * main_mask)
: TMask(title), _main(main_mask)
{
set_handler(F_TYPE, tipo_elaborazione_handler);
set_handler(F_TIPODOC_ELAB, tipo_documento_handler);
set_handler(F_STATODOC_ELAB, tipo_documento_handler);
}
bool TMotore_application::elabora_handler( TMask_field& f, KEY key )
{
if (key == K_SPACE)
{
#ifndef DBG
return message_box("Funzione in fase di implementazione");
#endif
TString_array elabs;
TMask & m = f.mask();
const TString16 tipo(m.get(F_TIPODOC));
const TString16 stato(m.get(F_STATO));
TLista_elaborazioni & elab = app().elab();
const int items = elab.select(elabs, TRUE, m.insert_mode(), NULL, NULL, tipo, stato);
if (items == 0)
return message_box("Non ci sono elaborazioni attive per questo documento");
int selected = 0;
if (items > 1)
if (app().save(TRUE)) // Registra il record corrente
{
TMask selection("ve0100b");
TList_field & f = (TList_field &) selection.field(F_SELECT);
TElabora_mask selection("ve0100b", &f.mask());
bool ok = FALSE;
selection.set(F_ANNO_ELAB, f.mask().get(F_ANNO));
selection.set(F_TIPOCF_ELAB, f.mask().get(F_TIPOCF));
selection.set(F_CODCF_ELAB, f.mask().get(F_CODCF));
if (selection.run() == K_ENTER)
selection.elabora();
}
}
return TRUE;
}
for (int i = 0; i < items; i++)
f.add_item(format("%d|%s", i, (const char *)elab[elabs.row(i)].descrizione()));
if (selection.run() == K_ENTER)
selected = atoi(selection.get(F_SELECT));
bool TMotore_application::codlist_handler( TMask_field& f, KEY key )
{
if (key == K_TAB && f.focusdirty())
{
TLocalisamfile & list = ((TEdit_field &) f).browse()->cursor()->file();
const TDate datadoc(f.mask().get(F_DATADOC));
const TDate datascad(list.get_date("VALFIN"));
if (datascad.ok() && datadoc > datascad)
{
const TString16 codsucc(list.get("CODLISSUCC"));
if (codsucc.empty())
return error_box("Listino scaduto il %s", datascad.string());
else
{
f.set(codsucc);
f.set_focusdirty();
((TEdit_field &)f).check();
}
}
else
selected = 1;
if (selected > 0)
TElaborazione & e = elab[elabs.row(selected)];
}
return TRUE;
}
bool TMotore_application::codcont_handler( TMask_field& f, KEY key )
{
if (key == K_TAB && f.focusdirty())
{
TLocalisamfile & cont = ((TEdit_field &) f).browse()->cursor()->file();
const TDate datadoc(f.mask().get(F_DATADOC));
const TDate datascad(cont.get_date("VALFIN"));
if (datascad.ok() && datadoc > datascad)
return error_box("Contratto scaduto il %s", datascad.string());
}
return TRUE;
}
bool TMotore_application::codcamp_handler( TMask_field& f, KEY key )
{
if (key == K_TAB && f.focusdirty())
{
TLocalisamfile & camp = ((TEdit_field &) f).browse()->cursor()->file();
const TDate datadoc(f.mask().get(F_DATADOC));
const TDate datascad(camp.get_date("VALFIN"));
if (datascad.ok() && datadoc > datascad)
return error_box("Offerta scaduta il %s", datascad.string());
}
return TRUE;
}
@ -544,10 +718,12 @@ TMask* TMotore_application::get_mask( int mode )
msk1->set_handler( F_DATAINSC, condpag_hndl );
msk1->set_handler( F_CODNOTE, note_hndl );
msk1->set_handler( F_DATADOC, data_hndl );
msk1->set_handler( F_CODLIST, codlist_handler );
msk1->set_handler( F_CODLIST1, codlist_handler );
msk1->set_handler( F_CODCONT, codcont_handler );
msk1->set_handler( F_CODCONT1, codcont_handler );
msk1->set_handler( F_CODCAMP, codcamp_handler );
msk1->set_handler( 99, elabora_handler ); // cazzo !!!!!!
#ifndef DBG
msk1->disable(99);
#endif
msk1->set_handler( DLG_PRINT, print_handler );
int numhandler = pro( ).get_int( "NHANDLER", "HANDLERS" ); // prof
for ( i = 1; i <= numhandler; i ++ )

View File

@ -96,6 +96,9 @@ protected:
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

167
ve/ve0100b.uml Executable file
View File

@ -0,0 +1,167 @@
#include "ve0100b1.h"
PAGE "Elaborazioni " -1 -1 78 15
BOOLEAN F_TYPE
BEGIN
PROMPT 2 1 "Aggiungi al documento attuale"
MESSAGE FALSE SHOW,F_GROUP_D|HIDE,F_GROUP_S
MESSAGE TRUE SHOW,F_GROUP_S|HIDE,F_GROUP_D
END
LISTBOX F_ELAB 3 50
BEGIN
PROMPT 2 3 "Elaborazione "
END
GROUPBOX F_GROUP_D 77 9
BEGIN
PROMPT 1 4 "Destinazione"
END
GROUPBOX F_GROUP_S 77 9
BEGIN
PROMPT 1 4 "Sorgente"
END
STRING F_TIPODOC_ELAB 4
BEGIN
PROMPT 2 5 "Tipo documento "
HELP "Codice tipo documento"
USE %TIP
INPUT CODTAB F_TIPODOC_ELAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC_ELAB CODTAB
OUTPUT F_DESTIPODOC_ELAB S0
CHECKTYPE NORMAL
FLAG "UP"
END
STRING F_DESTIPODOC_ELAB 50
BEGIN
PROMPT 24 5 ""
HELP "Descrizione tipo documento"
USE %TIP KEY 2
INPUT S0 F_DESTIPODOC_ELAB
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
CHECKTYPE NORMAL
COPY OUTPUT F_TIPODOC_ELAB
END
STRING F_STATODOC_ELAB 1
BEGIN
PROMPT 2 7 "Stato "
USE %STD
CHECKTYPE NORMAL
INPUT CODTAB F_STATODOC_ELAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATODOC_ELAB CODTAB
OUTPUT F_DESSTATODOC_ELAB S0
FLAG "U"
END
STRING F_DESSTATODOC_ELAB 50
BEGIN
PROMPT 24 7 ""
HELP "Descrizione tipo documento"
USE %STD KEY 2
INPUT S0 F_DESSTATODOC_ELAB
DISPLAY "Descrizione@40" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_STATODOC_ELAB
CHECKTYPE NORMAL
END
STRING F_CODNUM_ELAB 4
BEGIN
PROMPT 2 9 "Cod. num. "
HELP "Codice numerazione"
USE %NUM
INPUT CODTAB F_CODNUM_ELAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODNUM_ELAB CODTAB
OUTPUT F_DESNUM_ELAB S0
CHECKTYPE REQUIRED
FLAG "UPA"
WARNING "Numerazione assente"
KEY 1
END
STRING F_DESNUM_ELAB 50
BEGIN
PROMPT 24 9 ""
HELP "Descrizione numerazione"
USE %NUM KEY 2
INPUT S0 F_DESNUM_ELAB
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODNUM_ELAB
KEY 2
END
NUMBER F_ANNO_ELAB 4
BEGIN
PROMPT 2 11 "Esercizio "
CHECKTYPE REQUIRED
KEY 1
END
LIST F_TIPOCF_ELAB 1 11
BEGIN
PROMPT 2 13 ""
FLAGS "H"
HELP "Indicare se cliente oppure fornitore"
ITEM "C|Clienti"
ITEM "F|Fornitori"
END
NUMBER F_CODCF_ELAB 6
BEGIN
PROMPT 10 13 ""
FLAGS "HR"
END
NUMBER F_NDOC_ELAB 6
BEGIN
PROMPT 24 11 "Numero doc. "
USE LF_DOC SELECT (TIPOCF==#F_TIPOCF_ELAB)&&(CODCF==#F_CODCF_ELAB)
INPUT PROVV F_PROVV_ELAB SELECT
INPUT ANNO F_ANNO_ELAB SELECT
INPUT CODNUM F_CODNUM_ELAB SELECT
INPUT NDOC F_NDOC_ELAB
DISPLAY "Num." CODNUM
DISPLAY "Anno" ANNO
DISPLAY "Provv" PROVV
DISPLAY "Tipo" TIPODOC
DISPLAY "N.Doc. " NDOC
OUTPUT F_NDOC_ELAB NDOC
CHECKTYPE NORMAL
FLAG "R"
WARNING "Documento inesistente o incompatibile"
END
LISTBOX F_PROVV_ELAB 14
BEGIN
PROMPT 46 11 "Tipo "
ITEM "D|Definitiva "
ITEM "P|Provvisoria"
KEY 1
FLAGS "P"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_CANCEL 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

15
ve/ve0100b1.h Executable file
View File

@ -0,0 +1,15 @@
#define F_TYPE 101
#define F_ELAB 102
#define F_TIPODOC_ELAB 103
#define F_STATODOC_ELAB 104
#define F_DESTIPODOC_ELAB 105
#define F_DESSTATODOC_ELAB 106
#define F_GROUP_D 107
#define F_GROUP_S 108
#define F_CODNUM_ELAB 109
#define F_DESNUM_ELAB 110
#define F_ANNO_ELAB 111
#define F_NDOC_ELAB 112
#define F_PROVV_ELAB 113
#define F_TIPOCF_ELAB 114
#define F_CODCF_ELAB 115

View File

@ -658,6 +658,7 @@ public:
int rewrite() const { return write(TRUE); }
int add(TDocumento* doc) { return _documenti.add(doc); }
int add(const TDocumento & doc) { return _documenti.add(doc); }
const TDocumento& operator[] (int n) const { return doc(n); }
TDocumento& operator[] (int n) { return (TDocumento&)_documenti[n]; }
@ -751,11 +752,9 @@ public:
bool gestione_riferimenti() const { return get_bool("B1"); }
bool riferimenti_in_testa() const { return get_bool("B2"); }
bool ignora_descrizioni() const { return get_bool("B3"); }
bool interattivo() const { return get_bool("B5"); }
bool insert_mode() const { return get_bool("B6"); }
const TString& tipo_iniziale(int i) const { return get("S8").mid(i*4, 4); }
const char stato_iniziale(int i) const { return get("S9")[i]; }
const TString tipo_iniziale(int i) const { return get("S2").smid(i*4, 4).rtrim(); }
const char stato_iniziale(int i) const { return get("S7")[i]; }
const TString& tipo_finale() const { return get("S8"); }
const TString& stato_finale() const { return get("S9"); }
@ -764,7 +763,7 @@ public:
const TString & applicazione_esterna() const { return get("S5"); }
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab) pure;
const TDate& data_elab, bool interattivo = FALSE) pure;
TElaborazione(const char* cod);
TElaborazione(const TRectype& rec) : TRectype(rec) { }
@ -775,7 +774,7 @@ class TEsterna : public TElaborazione // velib04
{
public:
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab);
const TDate& data_elab, bool interattivo = FALSE);
TEsterna(const char* cod);
TEsterna(const TRectype& rec) : TElaborazione(rec) { }
@ -786,7 +785,7 @@ class TConsegna_ordini : public TElaborazione // velib05
{
public:
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab);
const TDate& data_elab, bool interattivo = FALSE);
TConsegna_ordini(const char* cod);
TConsegna_ordini(const TRectype& rec) : TElaborazione(rec) { }
@ -800,7 +799,7 @@ class TFatturazione_bolle : public TElaborazione // velib04a
public:
virtual bool raggruppa(TDocumento& din, TDocumento& dout);
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab);
const TDate& data_elab, bool interattivo = FALSE);
void tipi_validi(TToken_string& tipi) const;
void stati_validi(TToken_string& stati) const;
@ -932,7 +931,7 @@ protected:
bool sc_enabled() const ;
public:
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab);
const TDate& data_elab, bool interattivo = FALSE);
void set_auto(const bool a) { _auto_data = a; }
void set_nump(const byte n) { _nump_iva = n; }
const long docs() { return _total_docs; }
@ -945,7 +944,7 @@ class TCopia_documento : public TElaborazione // velib04
{
public:
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab);
const TDate& data_elab, bool interattivo = FALSE);
TCopia_documento(const char* cod);
TCopia_documento(const TRectype& rec) : TElaborazione(rec) { }
@ -996,7 +995,7 @@ protected:
bool good() const { return _error == no_error;}
public:
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab);
const TDate& data_elab, bool interattivo = FALSE);
const long bills() { return _total_bills; }
void set_group(TAssoc_array& a) { _group_array = a; }
@ -1014,7 +1013,7 @@ protected:
public:
TElaborazione & operator [](const char * key) const;
int select(TString_array & result, bool interattivo, bool insert_mode, const char * tipo_iniziale = NULL, const char * stato_iniziale = NULL, const char * tipo_finale = NULL, const char * stato_finale = NULL);
int select(TString_array & result, const char * tipo_iniziale = NULL, const char * stato_iniziale = NULL, const char * tipo_finale = NULL, const char * stato_finale = NULL);
void update();
TLista_elaborazioni() : _elab(NULL) {}
virtual ~TLista_elaborazioni();

View File

@ -296,8 +296,13 @@ TDocumento::TDocumento(const TDocumento & d)
_sconto(NULL), _esenzione(NULL), _stato_originale(' ')
{
add_file(LF_RIGHEDOC, "NRIGA");
copy(d);
_tipocf = new TRecfield(*this, "TIPOCF");
_codcf = new TRecfield(*this, "CODCF");
_cod_occas = new TRecfield(*this, "OCFPI");
_provv_agente = new TProvvigioni_agente;
set_memo_fld("G1");
check_modules();
copy(d);
}
TDocumento::TDocumento(char provv, int anno, const char* codnum, long numdoc,

View File

@ -303,7 +303,7 @@ TEsterna::TEsterna(const char* cod)
}
bool TEsterna::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab)
const TDate& data_elab, bool interattivo)
{
CHECK(doc_in.items() == 1, "Si deve specificare uno e un solo documento in entrata");
CHECK(doc_out.items() == 1, "Si deve specificare uno e un solo documento in uscita");
@ -396,7 +396,7 @@ TConsegna_ordini::TConsegna_ordini(const char* cod)
}
bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab)
const TDate& data_elab, bool interattivo)
{
return TRUE;
}
@ -411,7 +411,7 @@ TCopia_documento::TCopia_documento(const char* cod)
}
bool TCopia_documento::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab)
const TDate& data_elab, bool interattivo)
{
CHECK(doc_in.items() == 1, "Si deve specificare uno e un solo documento in entrata");
CHECK(doc_out.items() == 1, "Si deve specificare uno e un solo documento in uscita");
@ -465,24 +465,29 @@ void TLista_elaborazioni::read()
}
}
int TLista_elaborazioni::select(TString_array & result, bool interattivo, bool insert_mode, const char * tipo_iniziale, const char * stato_iniziale, const char * tipo_finale, const char * stato_finale)
int TLista_elaborazioni::select(TString_array & result, const char * tipo_iniziale, const char * stato_iniziale, const char * tipo_finale, const char * stato_finale)
{
read();
_elab->restart();
result.destroy();
for (TElaborazione * el = (TElaborazione *)_elab->get(); el ; el = (TElaborazione *) _elab->get())
{
bool ok = TRUE;
if (tipo_iniziale && stato_iniziale)
{
bool found = FALSE;
for (int i = 0; !found && i < 5; i++)
found = el->tipo_iniziale(i) == tipo_iniziale && el->stato_iniziale(i) == *stato_iniziale;
ok = found;
}
ok &= (tipo_finale && stato_finale && el->tipo_finale() == tipo_finale && el->stato_finale() == *stato_finale);
if (ok && (!interattivo || interattivo == el->interattivo()) &&
(!insert_mode || insert_mode == el->insert_mode()))
bool ok = FALSE;
TString ti;
if ((tipo_iniziale && *tipo_iniziale) && (stato_iniziale && *stato_iniziale))
for (int i = 0; !ok && i < 5; i++)
{
ti = el->tipo_iniziale(i);
const char si = el->stato_iniziale(i);
ok |= ti == tipo_iniziale &&
si == *stato_iniziale;
}
else
ok = TRUE;
if ((tipo_finale && *tipo_finale) && (stato_finale && *stato_finale))
ok &= el->tipo_finale() == tipo_finale &&
el->stato_finale() == stato_finale;
if (ok)
result.add(el->codice());
}
return result.items();

View File

@ -154,7 +154,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
}
bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab)
const TDate& data_elab, bool interattivo)
{
bool ok = TRUE;
@ -166,6 +166,7 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
"CODPAG", "CODABIA|CODCABA", "CODLIST", "CODAG",
"CODSPMEZZO", "CODPORTO", "CAUSTRASP", "CODVETT1|CODVETT2|CODVETT3",
NULL };
for (int u = 0; cond[u]; u++)
if (doc_uguale(u)) campi_doc.add(cond[u]);
@ -175,13 +176,26 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
const int tot = doc_out.items();
int od = tot;
if (campione.raggruppabile()) // Se il documento ha il flag di raggruppabilita' ...
if (interattivo)
{
od = 0;
const TString16 tipo(campione.get(DOC_TIPOCF));
const long codice = campione.get_long(DOC_CODCF);
if (tipo != doc_out[od].get(DOC_TIPOCF) ||
codice != doc_out[od].get_long(DOC_CODCF))
fatal_box("Documenti incompatibili : cliente/fornitore diverso");
}
else
{
for (od = 0; od < tot; od++) // ... cerca un documento compatibile.
if (campione.raggruppabile()) // Se il documento ha il flag di raggruppabilita' ...
{
if (campione.raggruppabile(doc_out[od], campi_doc))
break;
}
for (od = 0; od < tot; od++) // ... cerca un documento compatibile.
{
if (campione.raggruppabile(doc_out[od], campi_doc))
break;
}
}
}
if (od >= tot) // Se non ho trovato un documento compatibile ...
{ // ... creane uno nuovo (certamente compatibile)

View File

@ -1581,7 +1581,7 @@ bool TContabilizzazione::sc_enabled() const
}
bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab)
const TDate& data_elab, bool interattivo)
{
_error = no_error;

View File

@ -529,7 +529,7 @@ void TGenerazione_effetti::generate_bill(TDocumento& doc) // bill in inglese sig
}
bool TGenerazione_effetti::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab)
const TDate& data_elab, bool interattivo)
{
_pagamento = NULL;
_error = no_error;

View File

@ -980,7 +980,7 @@ BEGIN
IFDEF(X_ASPBENI)
PROMPT X_ASPBENI Y_ASPBENI PR_ASPBENI
ELSEIF
PROMPT 2 17 "Aspetto Beni "
PROMPT 2 17 "Asp. Beni "
ENDIF
USE %ABE
INPUT CODTAB FR_ASPBENI
@ -1016,7 +1016,7 @@ BEGIN
IFDEF(X_CAUS)
PROMPT X_CAUS Y_CAUS PR_CAUS
ELSEIF
PROMPT 2 18 "Caus.magazz. "
PROMPT 2 18 "Caus.mag. "
ENDIF
USE %CAU
INPUT CODTAB FR_CAUS
@ -1034,12 +1034,12 @@ ENDIF
END
IFDEF(F_DESCRCAUS)
STRING FR_DESCRCAUS 49
STRING FR_DESCRCAUS 50
BEGIN
IFDEF(X_DESCRCAUS)
PROMPT X_DESCRCAUS Y_DESCRCAUS PR_DESCRCAUS
ELSEIF
PROMPT 23 18 ""
PROMPT 22 18 ""
ENDIF
FLAGS "D"
END