Patch level : 12.0 918
Files correlati : mg3.exe Commento : Stampa schede di diotazione iniziale, odierna e temporanea
This commit is contained in:
parent
584b70096b
commit
a30390a50d
@ -53,7 +53,8 @@ USER5|4|15|5|campo definito dall'utente
|
||||
USERVAL5|4|18|3|valore
|
||||
USER6|4|15|5|campo definito dall'utente
|
||||
USERVAL6|4|18|3|valore
|
||||
3
|
||||
4
|
||||
ANNOES+TIPOCF+CODCF+INDSPED+CODART+NRIGA|
|
||||
ANNOES+TIPOCF+CODCF+INDSPED+CODART+LIVELLO|X
|
||||
ANNOES+CODART+LIVELLO+TIPOCF+CODCF+INDSPED|X
|
||||
ANNOES+CODART+TIPOCF+CODCF+INDSPED|X
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include <applicat.h>
|
||||
#include <execp.h>
|
||||
#include <mailbox.h>
|
||||
#include <modaut.h>
|
||||
#include <printer.h>
|
||||
#include <recset.h>
|
||||
|
||||
@ -8,9 +9,13 @@
|
||||
#include "mg3300.h"
|
||||
|
||||
#include "../cg/cglib01.h"
|
||||
#include "clifogiac.h"
|
||||
|
||||
#define VALUE_NOT_SET "~~"
|
||||
|
||||
static bool cau_filter(const TRelation* rel);
|
||||
static bool calc_saldo(const TRelation & rel, void * pJolly);
|
||||
|
||||
inline TCausale_magazzino& get_cau(const char* codcaus)
|
||||
{ return cached_causale_magazzino(codcaus); }
|
||||
|
||||
@ -20,10 +25,13 @@ class TForm_schedemag : public TForm_stampemg
|
||||
TString4 _anno_prec;
|
||||
bool _magazzino_chiuso;
|
||||
bool _sottocatmer;
|
||||
bool _sudd_mag;
|
||||
bool _no_valori;
|
||||
bool _sudd_mag;
|
||||
bool _sudd_dep;
|
||||
bool _no_valori;
|
||||
bool _no_ff;
|
||||
bool _sintetica;
|
||||
bool _per_articoli;
|
||||
bool _per_magazzini;
|
||||
TDate _data_inizio, _data_fine;
|
||||
|
||||
TToken_string _rmov_sortexp;
|
||||
@ -34,6 +42,9 @@ class TForm_schedemag : public TForm_stampemg
|
||||
TTipo_saldomag _tiposcheda; // tipo scheda
|
||||
int _annoes;
|
||||
TString16 _user1;
|
||||
TString4 _tipocf;
|
||||
long _codcf;
|
||||
int _indsped;
|
||||
|
||||
bool ragg_exprs(int livart,int livgiac);
|
||||
|
||||
@ -45,8 +56,9 @@ public:
|
||||
|
||||
void set_tiposcheda(const char * tipo);
|
||||
void set_chiusura_mag(const int val);
|
||||
void set_data_inizio(const TDate& d) { _data_inizio = d; }
|
||||
bool validate(TForm_item &cf, TToken_string &s);
|
||||
void set_data_inizio(const TDate& d) { _data_inizio = d; }
|
||||
void set_clifo(const TString& tipocf, const long codcf, const int indsped) { _tipocf = tipocf; _codcf = codcf; _indsped = indsped; }
|
||||
bool validate(TForm_item &cf, TToken_string &s);
|
||||
void setdett_perart(bool percatmer, bool sottocatmer,int livart,int livgiac,bool sudd_mag, bool sudd_dep);
|
||||
void setdett_permag(bool sudd_dep, bool showdett,int livart,int livgiac);
|
||||
void set_date_limite(const int anno, const TDate& d, const TDate& e);
|
||||
@ -56,7 +68,9 @@ public:
|
||||
TTipo_saldomag tiposcheda() const { return _tiposcheda; }
|
||||
|
||||
TForm_schedemag(const char *name,const char *code)
|
||||
: TForm_stampemg(name,code), _tolivgiac(0), _tolivart(0) {}
|
||||
: TForm_stampemg(name,code), _tolivgiac(0), _tolivart(0),
|
||||
_sudd_mag(false), _sudd_dep(false), _per_articoli(false),
|
||||
_per_magazzini(false) {}
|
||||
|
||||
virtual ~TForm_schedemag() {}
|
||||
};
|
||||
@ -71,8 +85,11 @@ const char* TForm_schedemag::descr_tiposcheda() const
|
||||
case s_prodc: return TR("In produzione componenti");
|
||||
case s_prodf: return TR("In produzione finiti");
|
||||
case s_ordc: return TR("Ordinato clienti");
|
||||
case s_ordf: return TR("Ordinato fornitori");
|
||||
case s_acq:
|
||||
case s_ordf: return TR("Ordinato fornitori");
|
||||
case s_dotin: return TR("Dotazione iniziale");
|
||||
case s_dotod: return TR("Dotazione odierna");
|
||||
case s_dottm: return TR("Dotazione temporanea");
|
||||
case s_acq:
|
||||
default: break;
|
||||
}
|
||||
return "";
|
||||
@ -88,8 +105,11 @@ const char* TForm_schedemag::nomecampo_scheda() const
|
||||
case s_prodc:return (MAG_PRODCOMP);
|
||||
case s_prodf:return (MAG_PRODFIN);
|
||||
case s_ordc: return (MAG_ORDC);
|
||||
case s_ordf: return (MAG_ORDF);
|
||||
case s_acq:
|
||||
case s_ordf: return (MAG_ORDF);
|
||||
case s_dotin: return (CLIFOGIAC_DOTIN);
|
||||
case s_dotod: return (CLIFOGIAC_DOTOD);
|
||||
case s_dottm: return (CLIFOGIAC_DOTTM);
|
||||
case s_acq:
|
||||
case s_ent:
|
||||
case s_ven:
|
||||
case s_usc:
|
||||
@ -207,136 +227,218 @@ bool TForm_schedemag::validate(TForm_item &cf, TToken_string &s)
|
||||
const bool stampa_perart = relation()->lfile().num() == LF_ANAMAG;
|
||||
|
||||
// Se il movimento corrente e' >= la data inizio stampa allora posso sempre stampare il saldo ...
|
||||
if (datareg < _data_inizio) // ... altrimenti devo fare altri controlli
|
||||
{
|
||||
if (stampa_perart) // Stampa per articoli
|
||||
{
|
||||
TSortedfile& rmm = (TSortedfile&)relation()->lfile(LF_RMOVMAG);
|
||||
const TRecnotype oldpos = rmm.recno();
|
||||
TToken_string old_art;
|
||||
old_art = rmm.get(RMOVMAG_CODART);
|
||||
old_art.add(rmm.get(RMOVMAG_LIVGIAC));
|
||||
const int err = rmm.next();
|
||||
if (err == NOERR) // Se non sono sull'ultimo record ...
|
||||
{
|
||||
const TRectype& next_movmag = rmm.relation().curr(LF_MOVMAG);
|
||||
const TDate next_datareg = next_movmag.get_date(MOVMAG_DATAREG);
|
||||
// Se il prossimo record e' dopo la data iniziale devo stampre il saldo
|
||||
// Lo stesso dicasi se la prossima data e' inferiore alla corrente (sono su un altro articolo!)
|
||||
printsaldoprec = next_datareg >= _data_inizio || next_datareg < datareg;
|
||||
if (!printsaldoprec)
|
||||
{
|
||||
// Se la prossima data e' >= della corrente verifico se cambio articolo
|
||||
TToken_string new_art;
|
||||
new_art = rmm.get(RMOVMAG_CODART);
|
||||
new_art.add(rmm.get(RMOVMAG_LIVGIAC));
|
||||
printsaldoprec = old_art != new_art;
|
||||
}
|
||||
}
|
||||
rmm.readat(oldpos); // ripristino la posizione del file
|
||||
}
|
||||
else // Stampa per magazzini
|
||||
{
|
||||
TSortedfile& rmm = (TSortedfile&)relation()->lfile(LF_RMOVMAG);
|
||||
const TRecnotype oldpos = rmm.recno();
|
||||
TToken_string old_art;
|
||||
old_art = rmm.get(RMOVMAG_CODART);
|
||||
old_art.add(rmm.get(RMOVMAG_LIVGIAC));
|
||||
old_art.add(rmm.get(RMOVMAG_CODMAG));
|
||||
|
||||
const int err = rmm.next();
|
||||
if (err == NOERR) // Se non sono sull'ultimo record ...
|
||||
{
|
||||
const long next_num_reg = rmm.get_long(RMOVMAG_NUMREG);
|
||||
const TRectype& next_movmag = cache().get(LF_MOVMAG, next_num_reg);
|
||||
const TDate next_datareg = next_movmag.get_date(MOVMAG_DATAREG);
|
||||
// Se il prossimo record e' dopo la data iniziale devo stampre il saldo
|
||||
// Lo stesso dicasi se la prossima data e' inferiore alla corrente (sono su un altro articolo!)
|
||||
printsaldoprec = next_datareg >= _data_inizio || next_datareg < datareg;
|
||||
if (!printsaldoprec)
|
||||
{
|
||||
// Se la prossima data e' >= della corrente verifico se cambio articolo
|
||||
TToken_string new_art;
|
||||
new_art = rmm.get(RMOVMAG_CODART);
|
||||
new_art.add(rmm.get(RMOVMAG_LIVGIAC));
|
||||
new_art.add(rmm.get(RMOVMAG_CODMAG));
|
||||
printsaldoprec = old_art != new_art;
|
||||
}
|
||||
}
|
||||
rmm.readat(oldpos); // ripristino la posizione del file
|
||||
}
|
||||
}
|
||||
if (printsaldoprec) // Memorizzo chiave articolo per utilizzarla al momento di calcolare il SALDOPREC
|
||||
{
|
||||
if (datareg < _data_inizio) // ... altrimenti devo fare altri controlli
|
||||
{
|
||||
if (stampa_perart) // Stampa per articoli
|
||||
{
|
||||
TSortedfile& rmm = (TSortedfile&)relation()->lfile(LF_RMOVMAG);
|
||||
const TRecnotype oldpos = rmm.recno();
|
||||
TToken_string old_art;
|
||||
|
||||
old_art = rmm.get(RMOVMAG_CODART);
|
||||
old_art.add(rmm.get(RMOVMAG_LIVGIAC));
|
||||
|
||||
const int err = rmm.next();
|
||||
|
||||
if (err == NOERR) // Se non sono sull'ultimo record ...
|
||||
{
|
||||
const TRectype& next_movmag = rmm.relation().curr(LF_MOVMAG);
|
||||
const TDate next_datareg = next_movmag.get_date(MOVMAG_DATAREG);
|
||||
// Se il prossimo record e' dopo la data iniziale devo stampre il saldo
|
||||
// Lo stesso dicasi se la prossima data e' inferiore alla corrente (sono su un altro articolo!)
|
||||
|
||||
printsaldoprec = next_datareg >= _data_inizio || next_datareg < datareg;
|
||||
if (!printsaldoprec)
|
||||
{
|
||||
// Se la prossima data e' >= della corrente verifico se cambio articolo
|
||||
TToken_string new_art;
|
||||
|
||||
new_art = rmm.get(RMOVMAG_CODART);
|
||||
new_art.add(rmm.get(RMOVMAG_LIVGIAC));
|
||||
printsaldoprec = old_art != new_art;
|
||||
}
|
||||
}
|
||||
rmm.readat(oldpos); // ripristino la posizione del file
|
||||
}
|
||||
else // Stampa per magazzini
|
||||
{
|
||||
TSortedfile& rmm = (TSortedfile&)relation()->lfile(LF_RMOVMAG);
|
||||
const TRecnotype oldpos = rmm.recno();
|
||||
TToken_string old_art;
|
||||
|
||||
old_art = rmm.get(RMOVMAG_CODART);
|
||||
old_art.add(rmm.get(RMOVMAG_LIVGIAC));
|
||||
old_art.add(rmm.get(RMOVMAG_CODMAG));
|
||||
|
||||
const int err = rmm.next();
|
||||
if (err == NOERR) // Se non sono sull'ultimo record ...
|
||||
{
|
||||
const long next_num_reg = rmm.get_long(RMOVMAG_NUMREG);
|
||||
const TRectype& next_movmag = cache().get(LF_MOVMAG, next_num_reg);
|
||||
const TDate next_datareg = next_movmag.get_date(MOVMAG_DATAREG);
|
||||
// Se il prossimo record e' dopo la data iniziale devo stampre il saldo
|
||||
// Lo stesso dicasi se la prossima data e' inferiore alla corrente (sono su un altro articolo!)
|
||||
printsaldoprec = next_datareg >= _data_inizio || next_datareg < datareg ||
|
||||
_tiposcheda == s_dotin || _tiposcheda == s_dotod ||
|
||||
_tiposcheda == s_dottm;
|
||||
if (!printsaldoprec)
|
||||
{
|
||||
// Se la prossima data e' >= della corrente verifico se cambio articolo
|
||||
TToken_string new_art;
|
||||
new_art = rmm.get(RMOVMAG_CODART);
|
||||
new_art.add(rmm.get(RMOVMAG_LIVGIAC));
|
||||
new_art.add(rmm.get(RMOVMAG_CODMAG));
|
||||
printsaldoprec = old_art != new_art;
|
||||
}
|
||||
}
|
||||
rmm.readat(oldpos); // ripristino la posizione del file
|
||||
}
|
||||
}
|
||||
if (!printsaldoprec)
|
||||
printsaldoprec = _tiposcheda == s_dotin || _tiposcheda == s_dotod || _tiposcheda == s_dottm;
|
||||
// if (printsaldoprec) // Memorizzo chiave articolo per utilizzarla al momento di calcolare il SALDOPREC
|
||||
// {
|
||||
const TRectype& rmm = relation()->curr(LF_RMOVMAG);
|
||||
_saldo_key = rmm.get(RMOVMAG_CODART);
|
||||
_saldo_key.add(rmm.get(RMOVMAG_LIVGIAC));
|
||||
_saldo_key.add(rmm.get(RMOVMAG_CODMAG));
|
||||
}
|
||||
//}
|
||||
valore = printsaldoprec ? "1" : "0";
|
||||
}
|
||||
if (subcode=="SALDOPREC")
|
||||
{
|
||||
valore = "";
|
||||
if (!_magazzino_chiuso) // mag precedente non chiuso, mancano i saldi di apertura
|
||||
{
|
||||
TString80 codart; _saldo_key.get(0, codart); codart.rtrim();
|
||||
TString16 livello; _saldo_key.get(1, livello); livello.rtrim();
|
||||
TString8 codmag; _saldo_key.get(2, codmag); codmag.rtrim();
|
||||
if (_tolivart > 0 && _tolivart < livelli_articolo().last_level())
|
||||
{
|
||||
codart.cut(livelli_articolo().code_length(_tolivart));
|
||||
livello.cut(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_tolivgiac > 0)
|
||||
{
|
||||
if (_tolivgiac < livelli_giacenza().last_level())
|
||||
livello.cut(livelli_giacenza().code_length(_tolivgiac));
|
||||
}
|
||||
else
|
||||
livello.cut(0);
|
||||
}
|
||||
TString80 codart; _saldo_key.get(0, codart); codart.rtrim();
|
||||
TString16 livello; _saldo_key.get(1, livello); livello.rtrim();
|
||||
TString8 codmag; _saldo_key.get(2, codmag); codmag.rtrim();
|
||||
const bool dotaz = _tiposcheda == s_dotin || _tiposcheda == s_dotod || _tiposcheda == s_dottm;
|
||||
const bool clifogiac = dotaz || _codcf != 0L;
|
||||
TString region;
|
||||
TString query;
|
||||
// real currsaldo = cf.get();
|
||||
real currsaldo;
|
||||
|
||||
TString region;
|
||||
region << MAG_ANNOES << '=' << _anno_prec;
|
||||
region << ' ' << MAG_CODART << "=\"" << codart << "\"";
|
||||
valore.zap();
|
||||
if (_tolivart > 0 && _tolivart < livelli_articolo().last_level())
|
||||
{
|
||||
codart.cut(livelli_articolo().code_length(_tolivart));
|
||||
livello.cut(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_tolivgiac > 0)
|
||||
{
|
||||
if (_tolivgiac < livelli_giacenza().last_level())
|
||||
livello.cut(livelli_giacenza().code_length(_tolivgiac));
|
||||
}
|
||||
else
|
||||
livello.cut(0);
|
||||
}
|
||||
if (clifogiac)
|
||||
{
|
||||
region << CLIFOGIAC_ANNOES << '=' << _anno_prec;
|
||||
region << ' ' << CLIFOGIAC_CODART << "=\"" << codart << "\"";
|
||||
if (_tolivart <= 0 || _tolivart >= livelli_articolo().last_level())
|
||||
region.insert("~", region.len() - 1);
|
||||
region << ' ' << CLIFOGIAC_TIPOCF << '=' << _tipocf;
|
||||
region << ' ' << CLIFOGIAC_CODCF << '=' << _codcf;
|
||||
if (_indsped != 0)
|
||||
region << ' ' << CLIFOGIAC_INDSPED << '=' << _indsped;
|
||||
query << "USE " << LF_CLIFOGIAC << " KEY 4";
|
||||
query << "\nFROM " << region;
|
||||
query << "\nTO " << region;
|
||||
|
||||
TString query;
|
||||
query << "USE " << LF_MAG;
|
||||
query << "\nFROM " << region;
|
||||
query << "\nTO " << region;
|
||||
if (_tolivart <= 0 || _tolivart >= livelli_articolo().last_level())
|
||||
query.insert("~", query.len()-1);
|
||||
TISAM_recordset clifogiacprec(query);
|
||||
|
||||
for (bool ok = clifogiacprec.move_first(); ok; ok = clifogiacprec.move_next())
|
||||
{
|
||||
if (_tolivgiac > 0) // Stampa per livello di giacenza
|
||||
{
|
||||
const TString& cl = clifogiacprec.get(CLIFOGIAC_LIVELLO).as_string();
|
||||
if (_tolivgiac >= livelli_giacenza().last_level())
|
||||
{
|
||||
if (cl != livello)
|
||||
continue; // Escludi livelli non corrispondenti
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!cl.starts_with(livello))
|
||||
continue; // Escludi sotto livelli non corrispondenti
|
||||
}
|
||||
}
|
||||
|
||||
TISAM_recordset magprec(query);
|
||||
real currsaldo = cf.get();
|
||||
for (bool ok = magprec.move_first(); ok; ok = magprec.move_next())
|
||||
{
|
||||
if (_sudd_mag && magprec.get(MAG_CODMAG).as_string() != codmag)
|
||||
continue; // Escludo magazzini indesiderati
|
||||
const real saldoprec = clifogiacprec.get(nomecampo_scheda()).as_real();
|
||||
|
||||
if (_tolivgiac > 0) // Stampa per livello di giacenza
|
||||
{
|
||||
const TString& cl = magprec.get(MAG_LIVELLO).as_string();
|
||||
if (_tolivgiac >= livelli_giacenza().last_level())
|
||||
{
|
||||
if (cl != livello)
|
||||
continue; // Escludi livelli non corrispondenti
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!cl.starts_with(livello))
|
||||
continue; // Escludi sotto livelli non corrispondenti
|
||||
}
|
||||
}
|
||||
currsaldo += saldoprec; // Sommo il saldo precedente al campo corrente
|
||||
}
|
||||
valore = currsaldo.string();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!_magazzino_chiuso) // mag precedente non chiuso, mancano i saldi di apertura
|
||||
{
|
||||
region << MAG_ANNOES << '=' << _anno_prec;
|
||||
region << ' ' << MAG_CODART << "=\"" << codart << "\"";
|
||||
query << "USE " << LF_MAG;
|
||||
query << "\nFROM " << region;
|
||||
query << "\nTO " << region;
|
||||
if (_tolivart <= 0 || _tolivart >= livelli_articolo().last_level())
|
||||
query.insert("~", query.len() - 1);
|
||||
|
||||
const real saldoprec = magprec.get(nomecampo_scheda()).as_real();
|
||||
currsaldo += saldoprec; // Sommo il saldo precedente al campo corrente
|
||||
}
|
||||
valore = currsaldo.string();
|
||||
}
|
||||
TISAM_recordset magprec(query);
|
||||
|
||||
for (bool ok = magprec.move_first(); ok; ok = magprec.move_next())
|
||||
{
|
||||
if (_sudd_mag && magprec.get(MAG_CODMAG).as_string() != codmag)
|
||||
continue; // Escludo magazzini indesiderati
|
||||
|
||||
if (_tolivgiac > 0) // Stampa per livello di giacenza
|
||||
{
|
||||
const TString& cl = magprec.get(MAG_LIVELLO).as_string();
|
||||
if (_tolivgiac >= livelli_giacenza().last_level())
|
||||
{
|
||||
if (cl != livello)
|
||||
continue; // Escludi livelli non corrispondenti
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!cl.starts_with(livello))
|
||||
continue; // Escludi sotto livelli non corrispondenti
|
||||
}
|
||||
}
|
||||
|
||||
const real saldoprec = magprec.get(nomecampo_scheda()).as_real();
|
||||
|
||||
currsaldo += saldoprec; // Sommo il saldo precedente al campo corrente
|
||||
}
|
||||
}
|
||||
}
|
||||
TEsercizio esc = esercizi().esercizio(_annoes);
|
||||
|
||||
if (_data_inizio.ok() && _data_inizio > esc.inizio())
|
||||
{
|
||||
TRelation *rel = new TRelation(LF_RMOVMAG);
|
||||
TRectype rec(rel->lfile().curr());
|
||||
TString cond;
|
||||
|
||||
rel->add(LF_MOVMAG, "NUMREG==NUMREG");
|
||||
rec.put(RMOVMAG_CODART, codart);
|
||||
cond << "ANSI(" << LF_MOVMAG << "->DATAREG)<\"" << _data_inizio.string(ANSI) << '"';
|
||||
|
||||
if (livello.full())
|
||||
cond << "&&(" << LF_RMOVMAG << "->" << RMOVMAG_LIVGIAC << "== \"" << livello << "\")";
|
||||
if (_per_magazzini && _sudd_mag)
|
||||
{
|
||||
if (_sudd_dep)
|
||||
cond << "&&(" << LF_RMOVMAG << "->" << RMOVMAG_CODMAG << "==" << '"' << codmag << "\")";
|
||||
else
|
||||
cond << "&&(" << LF_RMOVMAG << "->" << RMOVMAG_CODMAG << "[1,3]==" << '"' << codmag.left(3) << "\")";
|
||||
}
|
||||
TCursor rmovmag(rel, cond, 2, &rec, &rec);
|
||||
|
||||
rmovmag.set_filterfunction(cau_filter);
|
||||
rmovmag.scan(calc_saldo, &currsaldo);
|
||||
}
|
||||
valore = currsaldo.string();
|
||||
}
|
||||
if (subcode.left(3) == "ADD")
|
||||
{
|
||||
@ -395,7 +497,10 @@ 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");
|
||||
_per_articoli = false;
|
||||
_per_magazzini = true;
|
||||
|
||||
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);
|
||||
@ -431,6 +536,8 @@ void TForm_schedemag::setdett_permag(bool sudd_dep,bool show_dett,int livart,int
|
||||
|
||||
void TForm_schedemag::setdett_perart(bool percatmer,bool sottocatmer,int livart,int livgiac,bool sudd_mag,bool sudd_dep)
|
||||
{
|
||||
_per_articoli= true;
|
||||
_per_magazzini = false;
|
||||
_rmov_sortexp.cut(0);
|
||||
// raggruppamento MAX fino all'articolo
|
||||
TForm_subsection &h_cm=(TForm_subsection &)find_field('B',odd_page,"HEADER_CATMER");
|
||||
@ -478,7 +585,8 @@ void TForm_schedemag::setdett_perart(bool percatmer,bool sottocatmer,int livart,
|
||||
ragg_exprs(livart, livgiac);
|
||||
|
||||
_sudd_mag = sudd_mag; // E' una stampa suddvisa per magazzini?
|
||||
if (sudd_mag)
|
||||
_sudd_dep = sudd_dep; // E' una stampa suddvisa per magazzini?
|
||||
if (sudd_mag)
|
||||
{
|
||||
_rmov_raggcond << "+CODMAG[1,3]";
|
||||
_rmov_sortexp.add("CODMAG[1,3]");
|
||||
@ -498,30 +606,42 @@ void TForm_schedemag::setdett_perart(bool percatmer,bool sottocatmer,int livart,
|
||||
|
||||
void TForm_schedemag::set_tiposcheda(const char * tipo)
|
||||
{
|
||||
if (tipo[0] == 'G')
|
||||
_tiposcheda = s_giac;
|
||||
if (tipo[0] == 'G')
|
||||
_tiposcheda = s_giac;
|
||||
else
|
||||
if (tipo[0] == 'A')
|
||||
_tiposcheda = s_acl;
|
||||
else
|
||||
if (tipo[0] == 'I')
|
||||
_tiposcheda = s_incl;
|
||||
else
|
||||
if (*tipo=='P')
|
||||
{
|
||||
if (tipo[1]=='F')
|
||||
_tiposcheda = s_prodf;
|
||||
else
|
||||
_tiposcheda = s_prodc;
|
||||
}
|
||||
if (tipo[0] == 'I')
|
||||
_tiposcheda = s_incl;
|
||||
else
|
||||
if (tipo[0] == 'O')
|
||||
if (*tipo == 'P')
|
||||
{
|
||||
if (tipo[1]=='F')
|
||||
_tiposcheda = s_ordf;
|
||||
if (tipo[1] == 'F')
|
||||
_tiposcheda = s_prodf;
|
||||
else
|
||||
_tiposcheda = s_ordc;
|
||||
_tiposcheda = s_prodc;
|
||||
}
|
||||
else
|
||||
if (tipo[0] == 'O')
|
||||
{
|
||||
if (tipo[1] == 'F')
|
||||
_tiposcheda = s_ordf;
|
||||
else
|
||||
_tiposcheda = s_ordc;
|
||||
}
|
||||
else
|
||||
if (tipo[0] == 'D')
|
||||
{
|
||||
if (tipo[1] == 'I')
|
||||
_tiposcheda = s_dotin;
|
||||
else
|
||||
if (tipo[1] == 'O')
|
||||
_tiposcheda = s_dotod;
|
||||
else
|
||||
if (tipo[1] == 'T')
|
||||
_tiposcheda = s_dottm;
|
||||
}
|
||||
}
|
||||
|
||||
void TForm_schedemag::set_options(bool no_valori, bool no_ff, bool sintetica, bool print_gio)
|
||||
@ -587,12 +707,12 @@ class TStampa_schede_mag : public TSkeleton_application
|
||||
bool _reload;
|
||||
|
||||
protected:
|
||||
TStampemg_mask & mask() { return *_mask;}
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual void main_loop();
|
||||
static bool negatives_only(const TRelation* rel);
|
||||
static bool cau_filter(const TRelation* rel);
|
||||
// static bool clifo_filter(const TRelation* rel);
|
||||
// static bool cau_filter(const TRelation* rel);
|
||||
|
||||
void setprint_perarticoli();
|
||||
void setprint_permagazzini();
|
||||
@ -602,6 +722,7 @@ protected:
|
||||
static bool handle_adata(TMask_field& f, KEY k);
|
||||
|
||||
public:
|
||||
TStampemg_mask & mask() { return *_mask; }
|
||||
bool & reload() {return _reload;}
|
||||
TTipo_saldomag tiposcheda() const {return _form->tiposcheda();} ;
|
||||
TStampa_schede_mag() : _reload(false) {}
|
||||
@ -619,13 +740,52 @@ bool TStampa_schede_mag::negatives_only(const TRelation* rel)
|
||||
return giac < ZERO;
|
||||
}
|
||||
|
||||
bool TStampa_schede_mag::cau_filter(const TRelation* rel)
|
||||
{
|
||||
const TRectype& rmov = rel->curr(LF_RMOVMAG);
|
||||
TString16 cau = rmov.get(RMOVMAG_CODCAUS);
|
||||
if (cau.empty())
|
||||
cau = cache().get(LF_MOVMAG, rmov.get(RMOVMAG_NUMREG), MOVMAG_CODCAUS);
|
||||
return get_cau(cau).sgn(app().tiposcheda()) != 0;
|
||||
bool clifo_filter(const TRelation* rel)
|
||||
{
|
||||
const long codcf = app().mask().get_long(F_CODCF);
|
||||
|
||||
if (codcf == 0L)
|
||||
return true;
|
||||
|
||||
const TRectype& rmov = rel->curr(LF_RMOVMAG);
|
||||
const TRectype& mov = cache().get(LF_MOVMAG, rmov.get(RMOVMAG_NUMREG));
|
||||
const TString & tipocf = app().mask().get(F_TIPOCF);
|
||||
|
||||
if (mov.get(MOVMAG_TIPOCF) != tipocf || mov.get_long(MOVMAG_CODCF) != codcf)
|
||||
return false;
|
||||
|
||||
const int indsped = app().mask().get_long(F_INDSPED);
|
||||
|
||||
if ((indsped == 0) || (indsped == 1 && mov.get(MOVMAG_CODINDSP).blank()))
|
||||
return true;
|
||||
return mov.get_int(MOVMAG_CODINDSP) == indsped;
|
||||
}
|
||||
|
||||
bool cau_filter(const TRelation* rel)
|
||||
{
|
||||
const TRectype& rmov = rel->curr(LF_RMOVMAG);
|
||||
TString16 cau = rmov.get(RMOVMAG_CODCAUS);
|
||||
|
||||
if (cau.empty())
|
||||
cau = cache().get(LF_MOVMAG, rmov.get(RMOVMAG_NUMREG), MOVMAG_CODCAUS);
|
||||
return get_cau(cau).sgn(app().tiposcheda()) != 0 && clifo_filter(rel);
|
||||
}
|
||||
|
||||
bool calc_saldo(const TRelation & rel, void * pJolly)
|
||||
{
|
||||
if (pJolly)
|
||||
{
|
||||
real * saldo = (real *)pJolly;
|
||||
TString16 cau = rel.lfile().get(RMOVMAG_CODCAUS);
|
||||
|
||||
if (cau.empty())
|
||||
cau = rel.lfile(LF_MOVMAG).get(MOVMAG_CODCAUS);
|
||||
|
||||
const real val = rel.lfile().get_real(RMOVMAG_QUANT) * get_cau(cau).sgn(app().tiposcheda());
|
||||
|
||||
*saldo += val;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void TStampa_schede_mag::setprint_permagazzini()
|
||||
@ -662,9 +822,8 @@ void TStampa_schede_mag::setprint_permagazzini()
|
||||
cond << "ANSI(" << LF_MOVMAG << "->DATAREG)>=\"" << d1.string(ANSI) << '"';
|
||||
((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_INTERESSATI")).setcondition(cond,_strexpr);
|
||||
((TForm_subsection &)_form->find_field('B',odd_page,"H_MOVS_INTERESSATI")).setcondition(cond,_strexpr);
|
||||
cond.cut(0) << "ANSI(" << LF_MOVMAG << "->DATAREG)<\"" << d1.string(ANSI) << '"';
|
||||
((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_PRECEDENTI")).setcondition(cond,_strexpr);
|
||||
}
|
||||
cfilter << "(ANSI(110->DATAREG)>=" << '"' << d1.string(ANSI) << "\")&&";
|
||||
}
|
||||
|
||||
// Imposta i livelli di dettaglio della scheda
|
||||
_form->setdett_permag(m.get_bool(F_DETTAGLIOMAG), m.get_bool(F_DETTAGLIODEP),
|
||||
@ -725,9 +884,8 @@ void TStampa_schede_mag::setprint_perarticoli()
|
||||
cond << "ANSI(" << LF_MOVMAG << "->DATAREG)>=\"" << d1.string(ANSI) << '"';
|
||||
((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_INTERESSATI")).setcondition(cond,_strexpr);
|
||||
((TForm_subsection &)_form->find_field('B',odd_page,"H_MOVS_INTERESSATI")).setcondition(cond,_strexpr);
|
||||
cond.cut(0) << "ANSI(" << LF_MOVMAG << "->DATAREG)<\"" << d1.string(ANSI) << '"';
|
||||
((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_PRECEDENTI")).setcondition(cond,_strexpr);
|
||||
}
|
||||
filter << "(ANSI(110->DATAREG)>=" << '"' << d1.string(ANSI) << "\")&&";
|
||||
}
|
||||
if (m.get(F_ADATA).not_empty())
|
||||
{
|
||||
TDate d1(m.get(F_ADATA));
|
||||
@ -806,9 +964,8 @@ void TStampa_schede_mag::setprint_perarticoli()
|
||||
darecr.put(RMOVMAG_CODART,darec.get(ANAMAG_CODART));
|
||||
arecr.put(RMOVMAG_CODART,arec.get(ANAMAG_CODART));
|
||||
rmovmag->setregion(darecr,arecr,tilde);
|
||||
if (tiposcheda() != s_giac)
|
||||
rmovmag->cursor().set_filterfunction(cau_filter);
|
||||
|
||||
// if (tiposcheda() != s_giac)
|
||||
rmovmag->cursor().set_filterfunction(cau_filter);
|
||||
#ifdef DBG
|
||||
rmovmag->first();
|
||||
#endif
|
||||
@ -861,6 +1018,7 @@ void TStampa_schede_mag::main_loop()
|
||||
_form = new TForm_schedemag(frmname, "") ;
|
||||
_form->set_options(m.get_bool(F_NO_VALORI), m.get_bool(F_NO_FF),
|
||||
sintetica, m.get_bool(F_PRINTREG));
|
||||
_form->set_clifo(m.get(F_TIPOCF), m.get_long(F_CODCF), m.get_int(F_INDSPED));
|
||||
|
||||
if (per_articoli)
|
||||
setprint_perarticoli();
|
||||
@ -944,7 +1102,12 @@ bool TStampa_schede_mag::create()
|
||||
printer().links().add("Articolo |b|w"); // Crea il link blu alle anagrafiche
|
||||
printer().links().add("Movimento |v|w"); // Crea il link viola ai movimenti
|
||||
printer().setlinkhandler(linker);
|
||||
|
||||
|
||||
if (has_module(LVAUT))
|
||||
{
|
||||
TList_field & l = _mask->lfield(F_SCHEDA);
|
||||
|
||||
}
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,9 @@
|
||||
#define F_STAMPAGIAC 117
|
||||
#define F_DADEP 118
|
||||
#define F_ADEP 119
|
||||
#define F_TIPOCF 120
|
||||
#define F_CODCF 121
|
||||
#define F_INDSPED 122
|
||||
|
||||
#define F_SUDDIV_MAGAZZINI 123
|
||||
#define F_SUDDIV_DEPOSITI 124
|
||||
@ -37,7 +40,8 @@
|
||||
#define G_DESART 3
|
||||
#define G_LIVELLI 4
|
||||
#define G_USER 5
|
||||
|
||||
#define G_MAG 6
|
||||
#define G_CLIFO 7
|
||||
|
||||
#define FF_CANPRINTSALDOPREC 299
|
||||
#define FF_STAMPASALDOPREC 300
|
||||
|
@ -10,13 +10,16 @@ PAGE "Stampa Schede di magazzino" 0 0 0 0
|
||||
LISTBOX F_SCHEDA 30
|
||||
BEGIN
|
||||
PROMPT 2 1 "Tipo scheda "
|
||||
ITEM "G|Giacenza"
|
||||
ITEM "OF|Ordinato fornitori"
|
||||
ITEM "OC|Ordinato clienti"
|
||||
ITEM "ACL|A conto lavoro"
|
||||
ITEM "INCL|In conto lavoro"
|
||||
ITEM "PC|Componenti in produzione "
|
||||
ITEM "PF|Finiti in produzione "
|
||||
ITEM "G|Giacenza" MESSAGE ENABLE,G_MAG@
|
||||
ITEM "OF|Ordinato fornitori" MESSAGE ENABLE,G_MAG@
|
||||
ITEM "OC|Ordinato clienti" MESSAGE ENABLE,G_MAG@
|
||||
ITEM "ACL|A conto lavoro" MESSAGE ENABLE,G_MAG@
|
||||
ITEM "INCL|In conto lavoro" MESSAGE ENABLE,G_MAG@
|
||||
ITEM "PC|Componenti in produzione " MESSAGE ENABLE,G_MAG@
|
||||
ITEM "PF|Finiti in produzione " MESSAGE ENABLE,G_MAG@
|
||||
ITEM "DI|Dotazione iniziale" MESSAGE CLEAR,G_MAG@
|
||||
ITEM "DO|Dotazione odierna" MESSAGE CLEAR,G_MAG@
|
||||
ITEM "DT|Dotazione temporanea" MESSAGE CLEAR,G_MAG@
|
||||
END
|
||||
|
||||
LISTBOX F_ORDINE 12
|
||||
@ -66,6 +69,7 @@ BEGIN
|
||||
PROMPT 34 3 "Filtro "
|
||||
ITEM "T|Tutti"
|
||||
ITEM "N|Negativi"
|
||||
GROUP G_MAG
|
||||
END
|
||||
|
||||
DATE F_DADATA
|
||||
@ -166,6 +170,7 @@ BEGIN
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descr@50" S0
|
||||
OUTPUT F_DAMAG CODTAB
|
||||
GROUP G_MAG
|
||||
END
|
||||
|
||||
STRING F_AMAG 3
|
||||
@ -178,6 +183,7 @@ BEGIN
|
||||
OUTPUT F_AMAG CODTAB
|
||||
STR_EXPR (#F_AMAG>=#F_DAMAG)||(#F_AMAG=="")
|
||||
WARNING "Il secondo estremo deve essere superiore al primo"
|
||||
GROUP G_MAG
|
||||
END
|
||||
|
||||
STRING F_DADEP 3
|
||||
@ -191,6 +197,7 @@ BEGIN
|
||||
DISPLAY "Deposito" CODTAB[4,5]
|
||||
DISPLAY "Descr@50" S0
|
||||
OUTPUT F_DADEP CODTAB[4,5]
|
||||
GROUP G_MAG
|
||||
END
|
||||
|
||||
STRING F_ADEP 3
|
||||
@ -204,6 +211,7 @@ BEGIN
|
||||
OUTPUT F_ADEP CODTAB[4,5]
|
||||
STR_EXPR (#F_ADEP>=#F_DADEP)||(#F_ADEP=="")
|
||||
WARNING "Il secondo estremo deve essere superiore al primo"
|
||||
GROUP G_MAG
|
||||
END
|
||||
|
||||
STRING F_DACATMER 3
|
||||
@ -234,12 +242,14 @@ END
|
||||
BOOL F_DETTAGLIOMAG
|
||||
BEGIN
|
||||
PROMPT 2 12 "Suddivido per depositi"
|
||||
GROUP G_MAG
|
||||
END
|
||||
|
||||
BOOL F_DETTAGLIODEP
|
||||
BEGIN
|
||||
FLAGS "DH"
|
||||
PROMPT 42 12 "Dettaglio i depositi"
|
||||
GROUP G_MAG
|
||||
END
|
||||
|
||||
LIST F_ENABLER 2 30
|
||||
@ -281,38 +291,84 @@ BEGIN
|
||||
GROUP G_LIVELLI
|
||||
WARNING "Livello finale non ammissibile"
|
||||
END
|
||||
|
||||
|
||||
|
||||
LIST F_TIPOCF 1 11
|
||||
BEGIN
|
||||
PROMPT 2 16 "Tipo "
|
||||
HELP "Indicare se cliente oppure fornitore"
|
||||
ITEM "C|Clienti"
|
||||
ITEM "F|Fornitori"
|
||||
END
|
||||
|
||||
NUMBER F_CODCF 6
|
||||
BEGIN
|
||||
PROMPT 24 16 "Codice "
|
||||
FLAGS "R"
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF F_TIPOCF SELECT
|
||||
INPUT CODCF F_CODCF
|
||||
DISPLAY "Codice@6R" CODCF
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Codice fiscale@16" COFI
|
||||
DISPLAY "Partita IVA@11" PAIV
|
||||
OUTPUT F_TIPOCF TIPOCF
|
||||
OUTPUT F_CODCF CODCF
|
||||
CHECKTYPE NORMAL
|
||||
MESSAGE CLEAR,G_MAG@
|
||||
MESSAGE EMPTY ENABLE,G_MAG@
|
||||
END
|
||||
|
||||
NUMBER F_INDSPED 3
|
||||
BEGIN
|
||||
PROMPT 40 16 "Indirizzo di spedizione "
|
||||
USE LF_INDSP
|
||||
JOIN LF_COMUNI INTO STATO==STATO COM==COM
|
||||
INPUT TIPOCF F_TIPOCF SELECT
|
||||
INPUT CODCF F_CODCF SELECT
|
||||
INPUT CODIND F_INDSPED
|
||||
DISPLAY "Codice@3R" CODIND
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Indirizzo 1@35" INDIR
|
||||
DISPLAY "Indirizzo 2@35" INDIR2
|
||||
DISPLAY "Civico" CIV
|
||||
DISPLAY "Località@35" LOCALITA
|
||||
DISPLAY "Comune@50" LF_COMUNI->DENCOM
|
||||
OUTPUT F_INDSPED CODIND
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
BOOL F_SUDDIV_MAGAZZINI
|
||||
BEGIN
|
||||
PROMPT 2 16 "Suddivido per magazzini"
|
||||
PROMPT 2 18 "Suddivido per magazzini"
|
||||
MESSAGE TRUE ENABLE,F_SUDDIV_DEPOSITI
|
||||
MESSAGE FALSE CLEAR,F_SUDDIV_DEPOSITI|K_SPACE,F_SUDDIV_DEPOSITI
|
||||
GROUP G_MAG
|
||||
END
|
||||
|
||||
BOOL F_SUDDIV_DEPOSITI
|
||||
BEGIN
|
||||
PROMPT 2 17 "Suddivido per depositi"
|
||||
PROMPT 2 19 "Suddivido per depositi"
|
||||
GROUP G_MAG
|
||||
END
|
||||
|
||||
BOOL F_NO_VALORI
|
||||
BEGIN
|
||||
PROMPT 2 18 "Non stampare i valori"
|
||||
PROMPT 2 20 "Non stampare i valori"
|
||||
END
|
||||
|
||||
BOOL F_NO_FF
|
||||
BEGIN
|
||||
PROMPT 42 16 "Senza salto pagina"
|
||||
PROMPT 42 18 "Senza salto pagina"
|
||||
END
|
||||
|
||||
BOOL F_SINTETICA
|
||||
BEGIN
|
||||
PROMPT 42 17 "Stampa sintetica"
|
||||
PROMPT 42 19 "Stampa sintetica"
|
||||
END
|
||||
|
||||
BOOL F_PRINTREG
|
||||
BEGIN
|
||||
PROMPT 42 18 "Stampa numero giornale"
|
||||
PROMPT 42 20 "Stampa numero giornale"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
@ -79,83 +79,83 @@ SECTION HEADER ODD 5
|
||||
STRINGA 4 45
|
||||
BEGIN
|
||||
KEY "Intestazione stampa"
|
||||
PROMPT 45 2 "Stampa schede di magazzino :"
|
||||
MESSAGE _USER,TIPOSCHEDA
|
||||
END
|
||||
|
||||
STRINGA 5 95
|
||||
PROMPT 45 2 "Stampa schede di magazzino : "
|
||||
MESSAGE _USER, TIPOSCHEDA
|
||||
End
|
||||
|
||||
STRINGA 5 95
|
||||
BEGIN
|
||||
KEY "Separatore (iniziale)"
|
||||
KEY "Separatore (iniziale)"
|
||||
PROMPT 1 3 "-----------------------------------------------------------------------------------------------"
|
||||
END
|
||||
STRINGA 6 12
|
||||
End
|
||||
STRINGA 6 12
|
||||
BEGIN
|
||||
PROMPT 42 4 "UM"
|
||||
END
|
||||
NUMERO 7 12
|
||||
PROMPT 42 4 "UM"
|
||||
End
|
||||
NUMERO 7 12
|
||||
BEGIN
|
||||
PROMPT 50 4 "Quantità"
|
||||
END
|
||||
VALUTA 8 12
|
||||
PROMPT 50 4 "Quantità"
|
||||
End
|
||||
VALUTA 8 12
|
||||
BEGIN
|
||||
PROMPT 66 4 "Prezzo"
|
||||
PROMPT 66 4 "Prezzo"
|
||||
FLAGS "U"
|
||||
END
|
||||
VALUTA 9 12
|
||||
End
|
||||
VALUTA 9 12
|
||||
BEGIN
|
||||
PROMPT 81 4 "Valore"
|
||||
END
|
||||
STRINGA 5 95
|
||||
PROMPT 81 4 "Valore"
|
||||
End
|
||||
STRINGA 5 95
|
||||
BEGIN
|
||||
KEY "Separatore (iniziale)"
|
||||
KEY "Separatore (iniziale)"
|
||||
PROMPT 1 5 "-----------------------------------------------------------------------------------------------"
|
||||
END
|
||||
END
|
||||
End
|
||||
End
|
||||
|
||||
SECTION BODY ODD 0
|
||||
|
||||
NUMERO 100 1
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
MESSAGE RESET,FF_SALDO_GART|RESET,FF_VALORE_GART
|
||||
END
|
||||
FLAGS "H"
|
||||
MESSAGE RESET, FF_SALDO_GART|RESET,FF_VALORE_GART
|
||||
End
|
||||
|
||||
SECTION HEADER_ARTICOLO 1 2 2 NORMAL GROUP
|
||||
FLAGS "N"
|
||||
SECTION HEADER_CATMER 1 2 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
|
||||
STRINGA 12 50 1
|
||||
MESSAGE _USER, CODCATMER|RESET,FF_STAMPASALDOPREC
|
||||
End
|
||||
STRINGA 12 50 1
|
||||
BEGIN
|
||||
KEY "DESCR."
|
||||
KEY "DESCR."
|
||||
PROMPT 30 1 ""
|
||||
MESSAGE _USER,CATMER
|
||||
END
|
||||
END //HEADER catmer
|
||||
MESSAGE _USER, CATMER
|
||||
End
|
||||
End //HEADER catmer
|
||||
|
||||
STRINGA 10 20 1
|
||||
BEGIN
|
||||
KEY "CODICE articolo"
|
||||
KEY "CODICE articolo"
|
||||
PROMPT 1 1 "Articolo "
|
||||
MESSAGE _USER,CODGRUPPOART|RESET,FF_STAMPASALDOPREC
|
||||
END
|
||||
|
||||
STRINGA 11 50 1
|
||||
MESSAGE _USER, CODGRUPPOART|RESET,FF_STAMPASALDOPREC
|
||||
End
|
||||
|
||||
STRINGA 11 50 1
|
||||
BEGIN
|
||||
KEY "DESCR.articolo"
|
||||
KEY "DESCR.articolo"
|
||||
PROMPT 30 1 ""
|
||||
MESSAGE _USER,GRUPPOART
|
||||
END
|
||||
STRINGA 24 50 1
|
||||
MESSAGE _USER, GRUPPOART
|
||||
End
|
||||
STRINGA 24 50 1
|
||||
BEGIN
|
||||
KEY "dep"
|
||||
KEY "dep"
|
||||
PROMPT 1 2 "-----------------------------------------------------------------------------------------------"
|
||||
END
|
||||
END //HEADER articolo
|
||||
End
|
||||
End //HEADER articolo
|
||||
|
||||
SECTION GRUPPI_ARTICOLO 1 0 0 FILE LF_ANAMAG BY CODART
|
||||
SECTION FILE_RMOVMAG 1 1 0 FILE LF_RMOVMAG
|
||||
@ -163,194 +163,185 @@ SECTION BODY ODD 0
|
||||
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
|
||||
STRINGA 12 50 1
|
||||
MESSAGE _USER, CODCATMER|RESET,FF_STAMPASALDOPREC
|
||||
End
|
||||
STRINGA 12 50 1
|
||||
BEGIN
|
||||
KEY "DESCR."
|
||||
KEY "DESCR."
|
||||
PROMPT 30 1 ""
|
||||
MESSAGE _USER,CATMER
|
||||
END
|
||||
END //HEADER catmer
|
||||
MESSAGE _USER, CATMER
|
||||
End
|
||||
End //HEADER catmer
|
||||
|
||||
STRINGA 10 20 1
|
||||
BEGIN
|
||||
KEY "CODICE articolo"
|
||||
KEY "CODICE articolo"
|
||||
PROMPT 1 1 "Gruppo $[b,w]"
|
||||
MESSAGE _USER,CODGRUPPOART|RESET,FF_STAMPASALDOPREC
|
||||
END
|
||||
STRINGA 11 50 1
|
||||
MESSAGE _USER, CODGRUPPOART|RESET,FF_STAMPASALDOPREC
|
||||
End
|
||||
STRINGA 11 50 1
|
||||
BEGIN
|
||||
KEY "DESCR.articolo"
|
||||
KEY "DESCR.articolo"
|
||||
PROMPT 30 1 "$[n,w]"
|
||||
MESSAGE _USER,GRUPPOART
|
||||
END
|
||||
MESSAGE _USER, GRUPPOART
|
||||
End
|
||||
SECTION HEADER_LIVGIAC 2 1 1 GROUP
|
||||
STRINGA 20 20 1
|
||||
BEGIN
|
||||
KEY "CODICE livello"
|
||||
KEY "CODICE livello"
|
||||
PROMPT 1 1 ""
|
||||
MESSAGE _USER,CODGRUPPOGIAC
|
||||
END
|
||||
STRINGA 21 50 1
|
||||
MESSAGE _USER, CODGRUPPOGIAC
|
||||
End
|
||||
STRINGA 21 50 1
|
||||
BEGIN
|
||||
KEY "Livello giac"
|
||||
KEY "Livello giac"
|
||||
PROMPT 23 1 ""
|
||||
MESSAGE _USER,GRUPPOGIAC
|
||||
END
|
||||
END
|
||||
MESSAGE _USER, GRUPPOGIAC
|
||||
End
|
||||
End
|
||||
|
||||
SECTION HEADER_MAG 2 1 1 GROUP
|
||||
STRINGA 22 13 1
|
||||
BEGIN
|
||||
KEY "mag"
|
||||
KEY "mag"
|
||||
PROMPT 3 1 "Magazzino "
|
||||
FIELD ALIAS_MAG@->CODTAB[1,3]
|
||||
END
|
||||
STRINGA 23 50 1
|
||||
End
|
||||
STRINGA 23 50 1
|
||||
BEGIN
|
||||
KEY "mag"
|
||||
KEY "mag"
|
||||
PROMPT 17 1 ""
|
||||
FIELD ALIAS_MAG@->S0
|
||||
END
|
||||
End
|
||||
SECTION HEADER_DEP 2 1 1 STR_EXPR ALIAS_MAG@->B0=="X"
|
||||
STRINGA 24 11 1
|
||||
BEGIN
|
||||
KEY "dep"
|
||||
KEY "dep"
|
||||
PROMPT 5 1 "Deposito "
|
||||
FIELD ALIAS_DEP@->CODTAB[4,5]
|
||||
END
|
||||
STRINGA 25 50 1
|
||||
End
|
||||
STRINGA 25 50 1
|
||||
BEGIN
|
||||
KEY "dep"
|
||||
KEY "dep"
|
||||
PROMPT 17 1 ""
|
||||
FIELD ALIAS_DEP@->S0
|
||||
END
|
||||
END // HEADER deposito
|
||||
END // HEADER magazzino
|
||||
End
|
||||
End // HEADER deposito
|
||||
End // HEADER magazzino
|
||||
|
||||
STRINGA 26 95
|
||||
BEGIN
|
||||
KEY "dep"
|
||||
KEY "dep"
|
||||
PROMPT 1 2 "-----------------------------------------------------------------------------------------------"
|
||||
END
|
||||
END // HEADER raggruppamenti di movimenti
|
||||
End
|
||||
End // HEADER raggruppamenti di movimenti
|
||||
|
||||
STRINGA 10
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
MESSAGE RESET,FF_SALDO_GRMOV|RESET,FF_VALORE_GRMOV
|
||||
END
|
||||
FLAGS "H"
|
||||
MESSAGE RESET, FF_SALDO_GRMOV|RESET,FF_VALORE_GRMOV
|
||||
End
|
||||
|
||||
SECTION GRUPPI_RMOVMAG 1 0 0 FILE LF_RMOVMAG GROUP CODART
|
||||
|
||||
SECTION H_MOVS_INTERESSATI 1 0 0 STREXPR LF_MOVMAG->DATAREG>""
|
||||
NUMERO 10
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
FLAGS "H"
|
||||
FIELD LF_RMOVMAG->NUMREG
|
||||
MESSAGE COPY,FF_NUM_MOV
|
||||
END
|
||||
NUMERO 110
|
||||
MESSAGE COPY, FF_NUM_MOV
|
||||
End
|
||||
NUMERO 110
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
FLAGS "H"
|
||||
FIELD LF_MOVMAG->NUMREGST
|
||||
MESSAGE COPY,FF_NUM_MOV
|
||||
END
|
||||
NUMERO 11
|
||||
MESSAGE COPY, FF_NUM_MOV
|
||||
End
|
||||
NUMERO 11
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
FLAGS "H"
|
||||
FIELD LF_MOVMAG->DATAREG
|
||||
MESSAGE COPY,FF_DATA_MOV
|
||||
END
|
||||
|
||||
STRINGA 12
|
||||
MESSAGE COPY, FF_DATA_MOV
|
||||
End
|
||||
|
||||
STRINGA 12
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
FLAGS "H"
|
||||
FIELD LF_MOVMAG->DESCR
|
||||
MESSAGE COPY,FF_DESCR_MOV
|
||||
END
|
||||
MESSAGE COPY, FF_DESCR_MOV
|
||||
End
|
||||
|
||||
STRINGA 13
|
||||
STRINGA 13
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
FLAGS "H"
|
||||
FIELD LF_MOVMAG->TIPOCF
|
||||
MESSAGE COPY,FF_TIPOCF_MOV
|
||||
END
|
||||
MESSAGE COPY, FF_TIPOCF_MOV
|
||||
End
|
||||
|
||||
NUMERO 14
|
||||
NUMERO 14
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
FLAGS "H"
|
||||
FIELD LF_MOVMAG->CODCF
|
||||
MESSAGE COPY,FF_CODCF_MOV
|
||||
END
|
||||
MESSAGE COPY, FF_CODCF_MOV
|
||||
End
|
||||
|
||||
STRINGA 15
|
||||
STRINGA 15
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
FLAGS "H"
|
||||
FIELD LF_CLIFO->RAGSOC
|
||||
MESSAGE COPY,FF_CLIFO_MOV
|
||||
END
|
||||
MESSAGE COPY, FF_CLIFO_MOV
|
||||
End
|
||||
|
||||
NUMERO 16
|
||||
NUMERO 16
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
MESSAGE RESET,FF_NUMRIGHE
|
||||
END
|
||||
END // header mov
|
||||
FLAGS "H"
|
||||
MESSAGE RESET, FF_NUMRIGHE
|
||||
End
|
||||
End // header mov
|
||||
|
||||
SECTION MOVIMENTO 1 0 0 FILE LF_RMOVMAG GROUP NUMREG
|
||||
|
||||
NUMERO FF_NUMRIGHE
|
||||
BEGIN
|
||||
KEY "Contatore del numero di righe raggruppate"
|
||||
End
|
||||
|
||||
NUMERO 13
|
||||
BEGIN
|
||||
KEY "Contatore del numero di righe raggruppate"
|
||||
END
|
||||
|
||||
NUMERO 13
|
||||
FLAGS "H"
|
||||
MESSAGE _USER, CAUSALERIGA|COPY,FF_CAUSALE_RIGA|RESET,FF_SALDO_MOV|RESET,FF_VALORE_MOV
|
||||
End
|
||||
NUMERO 14
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
MESSAGE _USER,CAUSALERIGA|COPY,FF_CAUSALE_RIGA|RESET,FF_SALDO_MOV|RESET,FF_VALORE_MOV
|
||||
END
|
||||
NUMERO 14
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
MESSAGE _USER,DESCRCAUSALE|COPY,FF_DESCRCAUSALE
|
||||
END
|
||||
FLAGS "H"
|
||||
MESSAGE _USER, DESCRCAUSALE|COPY,FF_DESCRCAUSALE
|
||||
End
|
||||
NUMERO FF_QUANTRIGA 12
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
MESSAGE _NUMEXPR,LF_RMOVMAG->QUANT*349@->FC|_USER,*SEGNOCAUS,Q
|
||||
END
|
||||
FLAGS "H"
|
||||
MESSAGE _NUMEXPR, LF_RMOVMAG->QUANT*349@->FC|_USER,*SEGNOCAUS,Q
|
||||
End
|
||||
SECTION MOVIMENTO_CAUSALE 1 0 0 FILE LF_RMOVMAG GROUP CAUS
|
||||
|
||||
NUMERO FF_QUANTRIGA 12
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
MESSAGE _NUMEXPR,LF_RMOVMAG->QUANT*349@->FC|_USER,*SEGNOCAUS,Q
|
||||
END
|
||||
FLAGS "H"
|
||||
MESSAGE _NUMEXPR, LF_RMOVMAG->QUANT*349@->FC|_USER,*SEGNOCAUS,Q
|
||||
End
|
||||
|
||||
NUMERO FF_STAMPASALDOPREC 6
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
END
|
||||
FLAGS "H"
|
||||
End
|
||||
|
||||
NUMERO FF_CANPRINTSALDOPREC 6
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
MESSAGE _USER,CANPRINTSALDOPREC
|
||||
END
|
||||
FLAGS "H"
|
||||
MESSAGE _USER, CANPRINTSALDOPREC
|
||||
End
|
||||
|
||||
SECTION MOVS_PRECEDENTI 1 0 0 STREXPR LF_MOVMAG->DATAREG<""
|
||||
NUMERO 103 30
|
||||
BEGIN
|
||||
PROMPT 31 1 "Quantita' a saldo prec:"
|
||||
PICTURE "###.##@,@##"
|
||||
MESSAGE _NUMEXPR,#FF_QUANTRIGA|ADD,FF_SALDOPREC
|
||||
END
|
||||
END
|
||||
|
||||
SECTION MOVS_INTERESSATI 1 0 0 STREXPR LF_MOVMAG->DATAREG>=""
|
||||
|
||||
STRINGA 100 30
|
||||
|
@ -79,7 +79,7 @@ SECTION HEADER ODD 5
|
||||
STRINGA 4 45
|
||||
BEGIN
|
||||
KEY "Intestazione stampa"
|
||||
PROMPT 45 2 "Stampa schede di magazzino :"
|
||||
PROMPT 45 2 "Stampa schede di magazzino : "
|
||||
MESSAGE _USER,TIPOSCHEDA
|
||||
END
|
||||
|
||||
@ -330,16 +330,8 @@ SECTION BODY ODD 0
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
MESSAGE _USER,CANPRINTSALDOPREC
|
||||
END
|
||||
End
|
||||
|
||||
SECTION MOVS_PRECEDENTI 1 0 0 STREXPR LF_MOVMAG->DATAREG<""
|
||||
NUMERO 103 30
|
||||
BEGIN
|
||||
PROMPT 31 1 "Quantita' a saldo prec:"
|
||||
PICTURE "###.##@,@##"
|
||||
MESSAGE _NUMEXPR,#FF_QUANTRIGA|ADD,FF_SALDOPREC
|
||||
END
|
||||
END
|
||||
|
||||
SECTION MOVS_INTERESSATI 1 0 0 STREXPR LF_MOVMAG->DATAREG>=""
|
||||
|
||||
|
@ -76,7 +76,7 @@ SECTION HEADER ODD 5
|
||||
STRINGA 4 45
|
||||
BEGIN
|
||||
KEY "Intestazione stampa"
|
||||
PROMPT 45 2 "Stampa schede di magazzino :"
|
||||
PROMPT 45 2 "Stampa schede di magazzino : "
|
||||
MESSAGE _USER,TIPOSCHEDA
|
||||
END
|
||||
|
||||
|
@ -76,7 +76,7 @@ SECTION HEADER ODD 5
|
||||
STRINGA 4 45
|
||||
BEGIN
|
||||
KEY "Intestazione stampa"
|
||||
PROMPT 45 2 "Stampa schede di magazzino :"
|
||||
PROMPT 45 2 "Stampa schede di magazzino : "
|
||||
MESSAGE _USER,TIPOSCHEDA
|
||||
END
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user