Patch level : 10.0 272

Files correlati     : mg1.exe mg1100.msk
Ricompilazione Demo : [ ]
Commento            :
0001216: Righe automatiche di movimento magazzino
Modificando un movimento di magazzino che deriva da documento, mi permette di modificare il codice del magazzino sulla riga. Tutto il resto, a parte il prezzo, è disabilitato.


git-svn-id: svn://10.65.10.50/trunk@18622 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2009-03-27 10:40:23 +00:00
parent b50b89232f
commit b3a42fe53d
5 changed files with 106 additions and 82 deletions

View File

@ -4,10 +4,13 @@
#include "../db/dblib.h" #include "../db/dblib.h"
#include "../ve/veconf.h" #include "../ve/veconf.h"
#include <relapp.h> #include <defmask.h>
#include <relapp.h>
#include <msksheet.h> #include <msksheet.h>
#include "anamag.h" #include "anamag.h"
#include "rmovmag.h"
#include "mg1100.h" #include "mg1100.h"
#include <cfven.h> #include <cfven.h>
@ -23,13 +26,16 @@ class TMask_movmag : public TMask
int _autorows; int _autorows;
TArray _old_qta; TArray _old_qta;
bool _check_giac; bool _check_giac;
TMagazzini _magazzini;
protected:
virtual bool on_key(KEY key);
protected:
// aggiorna la riga di magazzino aggiungendo righe automatiche o esplosioni // aggiorna la riga di magazzino aggiungendo righe automatiche o esplosioni
bool update_rigamov(int r, const char * old_codcaus, const char * old_codart, const real & old_quant); bool update_rigamov(int r, const char * old_codcaus, const char * old_codart, const real & old_quant);
bool add_autorows(int r, const char * old_codcaus, const char * old_codart, const real & old_quant); bool add_autorows(int r, const char * old_codcaus, const char * old_codart, const real & old_quant);
bool add_explrows(int r); bool add_explrows(int r);
TMagazzini _magazzini;
void qta_inventory(real & qta); void qta_inventory(real & qta);
@ -46,18 +52,18 @@ class TMask_movmag : public TMask
static bool codgrp_handler(TMask_field &fld, KEY k); // handler del codice gruppo static bool codgrp_handler(TMask_field &fld, KEY k); // handler del codice gruppo
static void sheetrighe_put(TSheet_field &fld_righe, int item); static void sheetrighe_put(TSheet_field &fld_righe, int item);
static void sheetrighe_get(TSheet_field &fld_righe, int item); static void sheetrighe_get(TSheet_field &fld_righe, int item);
public: public:
TArticolo_giacenza& curr_art(); TArticolo_giacenza& curr_art();
TArray & old_qta() { return _old_qta; } TArray& old_qta() { return _old_qta; }
void update_tot();
const TMagazzini& magazzini() const { return _magazzini; } const TMagazzini& magazzini() const { return _magazzini; }
int autorows() const { return _autorows;} int autorows() const { return _autorows;}
void update_tot();
TMask_movmag(TMov_mag* m_m); TMask_movmag(TMov_mag* m_m);
virtual ~TMask_movmag(); virtual ~TMask_movmag();
}; };
// HANDLER DEL CODICE LIVELLO anagrafica // HANDLER DEL CODICE LIVELLO anagrafica
bool TMask_movmag::codgrp_handler(TMask_field& f, KEY k) bool TMask_movmag::codgrp_handler(TMask_field& f, KEY k)
{ {
@ -66,7 +72,7 @@ bool TMask_movmag::codgrp_handler(TMask_field& f, KEY k)
if (!livelli_giacenza().enabled()) if (!livelli_giacenza().enabled())
{ {
f.error_box(TR("Livelli del codice non abilitati")); f.error_box(TR("Livelli del codice non abilitati"));
return FALSE; return false;
} }
const int levnum=1+f.dlg()-F_LIV1; const int levnum=1+f.dlg()-F_LIV1;
return livelli_giacenza().autoinsert(levnum,f); return livelli_giacenza().autoinsert(levnum,f);
@ -74,11 +80,33 @@ bool TMask_movmag::codgrp_handler(TMask_field& f, KEY k)
return true; return true;
} }
bool TMask_movmag::on_key(KEY key)
{
if (key == K_SHIFT+K_F12 && edit_mode())
{
if (!field(DLG_SAVEREC).active()) // Riabilita bottoni spenti dalla protected_mode
{
enable(DLG_SAVEREC);
enable(DLG_DELREC);
}
TSheet_field& ss = sfield(F_RIGHE);
FOR_EACH_SHEET_ROW(ss, i, row)
{
const char tipo = row->get_char(0);
if (tipo > ' ')
ss.enable_row(i);
}
ss.force_update();
return true;
}
return TMask::on_key(key);
}
// costruttore della maschera anagrafica di magazzino // costruttore della maschera anagrafica di magazzino
//TMask_movmag::TMask_movmag() : //TMask_movmag::TMask_movmag() :
TMask_movmag::TMask_movmag(TMov_mag * m_m) TMask_movmag::TMask_movmag(TMov_mag * m_m) : TMask("mg1100")
: TMask("mg1100")
{ {
_mov_mag = m_m; _mov_mag = m_m;
// setta handler e notify // setta handler e notify
@ -124,7 +152,6 @@ TMask_movmag::TMask_movmag(TMov_mag * m_m)
ss.enable_column(ss.cid2index(F_CODDEP),gd); ss.enable_column(ss.cid2index(F_CODDEP),gd);
_autorows = prassid.get_int("AUTOROWS", "mg"); _autorows = prassid.get_int("AUTOROWS", "mg");
_check_giac = prassid.get_bool("CHECK_GIAC", "mg"); _check_giac = prassid.get_bool("CHECK_GIAC", "mg");
} }
@ -136,8 +163,9 @@ TMask_movmag::~TMask_movmag()
void TMask_movmag::sheetrighe_get(TSheet_field &fld_righe, int item) void TMask_movmag::sheetrighe_get(TSheet_field &fld_righe, int item)
{ {
// prende il record della riga corrente dal record array // prende il record della riga corrente dal record array
TRectype &rec= fld_righe.record()->row(item, TRUE); TRectype& rec = fld_righe.record()->row(item, true);
TToken_string &row= fld_righe.row(item-1); TToken_string& row = fld_righe.row(item-1);
// codici di livello // codici di livello
row.add( livelli_giacenza().unpack_grpcode(rec.get("LIVGIAC") ,1),fld_righe.cid2index(F_LIV1) ); row.add( livelli_giacenza().unpack_grpcode(rec.get("LIVGIAC") ,1),fld_righe.cid2index(F_LIV1) );
row.add( livelli_giacenza().unpack_grpcode(rec.get("LIVGIAC") ,2),fld_righe.cid2index(F_LIV2) ); row.add( livelli_giacenza().unpack_grpcode(rec.get("LIVGIAC") ,2),fld_righe.cid2index(F_LIV2) );
@ -150,7 +178,7 @@ void TMask_movmag::sheetrighe_put(TSheet_field &fld_righe, int item)
{ {
TToken_string &row= fld_righe.row(item-1); TToken_string &row= fld_righe.row(item-1);
TRectype &recrighe= fld_righe.record()->row(item, TRUE); TRectype &recrighe= fld_righe.record()->row(item, true);
// codici livello // codici livello
if (livelli_giacenza().enabled()) if (livelli_giacenza().enabled())
{ {
@ -186,7 +214,7 @@ bool TMask_movmag::handle_righe(TMask_field &f, KEY k)
} }
} }
} }
return TRUE; return true;
} }
void TMask_movmag::update_tot() void TMask_movmag::update_tot()
@ -233,7 +261,7 @@ bool TMask_movmag::notify_righe(TSheet_field& ss, int r, KEY key)
if ( key == K_DEL ) // Cancellazione if ( key == K_DEL ) // Cancellazione
{ {
if (*ss.cell(r,ss.cid2index( F_AUTOMATICA))==riga_automatica) if (*ss.cell(r,ss.cid2index( F_AUTOMATICA))==riga_automatica)
return FALSE; // can't remove auto lines directly return false; // can't remove auto lines directly
while (r < ss.items()-1 && *ss.cell(r+1,ss.cid2index( F_AUTOMATICA))==riga_automatica) while (r < ss.items()-1 && *ss.cell(r+1,ss.cid2index( F_AUTOMATICA))==riga_automatica)
{ {
// autoremove automatic lines along with the original one // autoremove automatic lines along with the original one
@ -247,7 +275,7 @@ bool TMask_movmag::notify_righe(TSheet_field& ss, int r, KEY key)
m.update_tot(); m.update_tot();
} else if (key == K_INS) { // Inserimento } else if (key == K_INS) { // Inserimento
if (r < ss.items() && *ss.cell(r,ss.cid2index( F_AUTOMATICA))==riga_automatica) if (r < ss.items() && *ss.cell(r,ss.cid2index( F_AUTOMATICA))==riga_automatica)
return FALSE; // cannot insert between a row and its generated one return false; // cannot insert between a row and its generated one
} else } else
if (key == K_CTRL + K_INS) { // Inserimento accordato if (key == K_CTRL + K_INS) { // Inserimento accordato
@ -374,7 +402,7 @@ bool TMask_movmag::handle_righeprezzo1(TMask_field &f, KEY k)
{ {
if (f.mask().get(F_PREZZO).blank()) if (f.mask().get(F_PREZZO).blank())
return handle_righeprezzo2(f, k); return handle_righeprezzo2(f, k);
return TRUE; return true;
} }
// proposta hard: propone il prezzo in ogni caso // proposta hard: propone il prezzo in ogni caso
@ -396,7 +424,7 @@ bool TMask_movmag::handle_righeprezzo2(TMask_field &f, KEY k)
} }
mmm._price_codart = codart; mmm._price_codart = codart;
} }
return TRUE; return true;
} }
bool TMask_movmag::handle_checksosp(TMask_field &f, KEY k) bool TMask_movmag::handle_checksosp(TMask_field &f, KEY k)
@ -421,7 +449,7 @@ bool TMask_movmag::handle_checksosp(TMask_field &f, KEY k)
return error_box(FR("Articolo %s sospeso, quindi non movimentabile"), (const char *)f.get()); return error_box(FR("Articolo %s sospeso, quindi non movimentabile"), (const char *)f.get());
} }
} }
return TRUE; return true;
} }
bool TMask_movmag::handle_codarticolo(TMask_field &f, KEY k) bool TMask_movmag::handle_codarticolo(TMask_field &f, KEY k)
@ -475,11 +503,11 @@ bool TMask_movmag::handle_causrig(TMask_field &f, KEY k)
if (k==K_TAB && f.focusdirty()) if (k==K_TAB && f.focusdirty())
{ {
if (!handle_checksosp(f, k)) if (!handle_checksosp(f, k))
return FALSE; return false;
handle_righeprezzo1(f, k); handle_righeprezzo1(f, k);
} }
return TRUE; return true;
} }
// proposta hard: propone il prezzo in ogni caso // proposta hard: propone il prezzo in ogni caso
@ -504,13 +532,13 @@ bool TMask_movmag::handle_giacattuale(TMask_field &f, KEY k)
if (um.not_empty()) if (um.not_empty())
{ {
TArticolo_giacenza & art = cached_article_balances(maskrighe.get(F_CODART)); TArticolo_giacenza & art = cached_article_balances(maskrighe.get(F_CODART));
real disp = art.disponibilita(maskmov.get(F_ANNOES),codmag,codliv,TRUE); real disp = art.disponibilita(maskmov.get(F_ANNOES),codmag,codliv,true);
disp = art.convert_to_um(disp, um, NULL, false); disp = art.convert_to_um(disp, um, NULL, false);
f.set(disp.string()); f.set(disp.string());
} }
} }
return TRUE; return true;
} }
@ -525,8 +553,8 @@ bool TMask_movmag::update_rigamov (int r, const char * old_codcaus, const char *
bool TMask_movmag::add_autorows (int r, const char * old_codcaus, const char * old_codart, const real & old_quant) bool TMask_movmag::add_autorows (int r, const char * old_codcaus, const char * old_codart, const real & old_quant)
{ {
bool added_some=FALSE; bool added_some=false;
TSheet_field & ss=(TSheet_field & )field(F_RIGHE); TSheet_field & ss= sfield(F_RIGHE);
real new_factor(ss.cell(r,ss.cid2index(F_QUANT))); real new_factor(ss.cell(r,ss.cid2index(F_QUANT)));
new_factor = old_quant.is_zero() ? ZERO : new_factor / old_quant; new_factor = old_quant.is_zero() ? ZERO : new_factor / old_quant;
TString8 new_codcaus(ss.cell(r,ss.cid2index(F_CAUSRIG))); TString8 new_codcaus(ss.cell(r,ss.cid2index(F_CAUSRIG)));
@ -535,7 +563,7 @@ bool TMask_movmag::add_autorows (int r, const char * old_codcaus, const char * o
const TCausale_magazzino oldcau(old_codcaus); const TCausale_magazzino oldcau(old_codcaus);
const TCausale_magazzino cau(new_codcaus); const TCausale_magazzino cau(new_codcaus);
bool rimuovi_righe_coll=FALSE; bool rimuovi_righe_coll=false;
bool inserisci_righe_coll= *cau.caus_collegata()!='\0' && *ss.cell(r,ss.cid2index(F_ESPLOSA)) == ' '; bool inserisci_righe_coll= *cau.caus_collegata()!='\0' && *ss.cell(r,ss.cid2index(F_ESPLOSA)) == ' ';
if (inserisci_righe_coll) if (inserisci_righe_coll)
{ {
@ -545,7 +573,7 @@ bool TMask_movmag::add_autorows (int r, const char * old_codcaus, const char * o
if (old_codcaus != new_codcaus) if (old_codcaus != new_codcaus)
{ {
rimuovi_righe_coll = TRUE; rimuovi_righe_coll = true;
} }
else else
if ((r < ss.items()-1 && *ss.cell(r+1,ss.cid2index( F_AUTOMATICA)) == riga_automatica) if ((r < ss.items()-1 && *ss.cell(r+1,ss.cid2index( F_AUTOMATICA)) == riga_automatica)
@ -553,14 +581,14 @@ bool TMask_movmag::add_autorows (int r, const char * old_codcaus, const char * o
{ {
if (strcmp(old_codart,ss.cell(r,ss.cid2index( F_CODART)))!=0 ) if (strcmp(old_codart,ss.cell(r,ss.cid2index( F_CODART)))!=0 )
// ho cambiato il codice articolo del finito: rimuovo le righe automatiche esplose // ho cambiato il codice articolo del finito: rimuovo le righe automatiche esplose
rimuovi_righe_coll = TRUE; rimuovi_righe_coll = true;
else else
inserisci_righe_coll=FALSE; inserisci_righe_coll=false;
} }
} }
else else
if (*oldcau.caus_collegata()!='\0') // ho cambiato causale, passando ad una che non ha collegamenti if (*oldcau.caus_collegata()!='\0') // ho cambiato causale, passando ad una che non ha collegamenti
rimuovi_righe_coll=TRUE; rimuovi_righe_coll=true;
// ****************** // ******************
if (rimuovi_righe_coll) if (rimuovi_righe_coll)
{ {
@ -591,7 +619,7 @@ bool TMask_movmag::add_autorows (int r, const char * old_codcaus, const char * o
if (cau_coll.has_default_dep()) if (cau_coll.has_default_dep())
newrow.add(dep,ss.cid2index(F_CODDEP)); newrow.add(dep,ss.cid2index(F_CODDEP));
COPIA_SU_AUTO(F_PREZZO); COPIA_SU_AUTO(F_PREZZO);
added_some= TRUE; added_some= true;
} }
while (r+offset < ss.items() && *ss.cell(r+offset,ss.cid2index( F_AUTOMATICA))==riga_automatica) while (r+offset < ss.items() && *ss.cell(r+offset,ss.cid2index( F_AUTOMATICA))==riga_automatica)
{ {
@ -632,7 +660,7 @@ bool TMask_movmag::add_explrows(int r)
if (new_codcaus.blank()) if (new_codcaus.blank())
new_codcaus=get(F_CODCAUS); new_codcaus=get(F_CODCAUS);
bool added_some=FALSE; bool added_some=false;
const TCausale_magazzino cau(new_codcaus); const TCausale_magazzino cau(new_codcaus);
TArticolo articolo; TArticolo articolo;
@ -646,7 +674,7 @@ bool TMask_movmag::add_explrows(int r)
// c'e' una riga di movimento esplodente non ancora esplosa: // c'e' una riga di movimento esplodente non ancora esplosa:
// va sostituita con n righe esplose // va sostituita con n righe esplose
real prezzo,quant; real prezzo,quant;
const char tipo_costo = cau.get("S11")[0]; const char tipo_costo = cau.get_char("S11");
const int livello = cau.get_int("I0"); const int livello = cau.get_int("I0");
const TString codart = sheet.cell(r,sheet.cid2index(F_CODART)); const TString codart = sheet.cell(r,sheet.cid2index(F_CODART));
bool ok = distinta.set_root(codart); bool ok = distinta.set_root(codart);
@ -654,7 +682,7 @@ bool TMask_movmag::add_explrows(int r)
const bool is_coll = rigaprec >= 0 && *sheet.cell(r, sheet.cid2index(F_AUTOMATICA)) == riga_automatica; const bool is_coll = rigaprec >= 0 && *sheet.cell(r, sheet.cid2index(F_AUTOMATICA)) == riga_automatica;
if (ok) if (ok)
{ {
distinta.explode(boom, TRUE, RAGGR_EXP_NONE, livello, "A"); distinta.explode(boom, true, RAGGR_EXP_NONE, livello, "A");
for (int newrow=0; newrow < boom.items() ; newrow++) for (int newrow=0; newrow < boom.items() ; newrow++)
{ {
TRiga_esplosione & riga_esp=(TRiga_esplosione & )(boom[newrow]); TRiga_esplosione & riga_esp=(TRiga_esplosione & )(boom[newrow]);
@ -707,7 +735,7 @@ bool TMask_movmag::add_explrows(int r)
sheet.check_row(r+1+newrow); sheet.check_row(r+1+newrow);
sheet.force_update(r+1+newrow); sheet.force_update(r+1+newrow);
added_some=TRUE; added_some=true;
} }
// elimino la riga "padre" // elimino la riga "padre"
if (boom.items() > 0) if (boom.items() > 0)
@ -725,8 +753,7 @@ bool TMask_movmag::add_explrows(int r)
return added_some; return added_some;
} }
real TMask_movmag::proposed_price(const char *codart, real TMask_movmag::proposed_price(const char *codart, real quant, const char *causrig)
real quant, const char *causrig)
{ {
real rv; real rv;
@ -776,7 +803,7 @@ bool TMask_movmag::handle_codcaus(TMask_field &fld, KEY k)
// aggiorna le righe di sheet // aggiorna le righe di sheet
TMask_movmag &m=(TMask_movmag &)fld.mask(); TMask_movmag &m=(TMask_movmag &)fld.mask();
TSheet_field & ss=(TSheet_field & )m.field(F_RIGHE); TSheet_field & ss=(TSheet_field & )m.field(F_RIGHE);
bool added_some = FALSE; bool added_some = false;
// aggiorna le righe che dipendono dalla causale movimento // aggiorna le righe che dipendono dalla causale movimento
for (int i=0; i< ss.items(); i++) for (int i=0; i< ss.items(); i++)
@ -792,7 +819,7 @@ bool TMask_movmag::handle_codcaus(TMask_field &fld, KEY k)
} }
if (k == K_TAB) if (k == K_TAB)
old_codcaus=fld.get(); old_codcaus=fld.get();
return TRUE; return true;
} }
bool TMask_movmag::handle_datacomp(TMask_field &fld, KEY k) bool TMask_movmag::handle_datacomp(TMask_field &fld, KEY k)
@ -809,7 +836,7 @@ bool TMask_movmag::handle_datacomp(TMask_field &fld, KEY k)
else else
return fld.error_box(TR("La data indicata non appartiene a nessuno degli esercizi contabili inseriti ")) ; return fld.error_box(TR("La data indicata non appartiene a nessuno degli esercizi contabili inseriti ")) ;
} }
return TRUE; return true;
} }
class TApp_movmag: public TRelation_application class TApp_movmag: public TRelation_application
@ -817,31 +844,27 @@ class TApp_movmag: public TRelation_application
TMask_movmag *_msk; // maschera principale TMask_movmag *_msk; // maschera principale
TRelation * _rel; // relazione contenente il file movimenti TRelation * _rel; // relazione contenente il file movimenti
protected:
virtual bool user_create(); virtual bool user_create();
virtual bool user_destroy(); virtual bool user_destroy();
virtual TMask *get_mask(int) { return _msk; } virtual TMask *get_mask(int) { return _msk; }
virtual void init_query_mode(TMask&) ; virtual void init_query_mode(TMask&) ;
virtual void init_insert_mode(TMask&) ; virtual void init_insert_mode(TMask&) ;
virtual void init_modify_mode(TMask&) ; virtual void init_modify_mode(TMask&) ;
virtual bool changing_mask(int) { return FALSE; } virtual bool changing_mask(int) { return false; }
virtual TRelation *get_relation() const { return _rel; } virtual TRelation *get_relation() const { return _rel; }
virtual const char *get_next_key(); virtual bool get_next_key(TToken_string& key);
virtual int read(TMask& m); virtual int read(TMask& m);
TString16 _nextcod; virtual bool protected_record(TRectype& rec);
public:
TApp_movmag() {};
virtual ~TApp_movmag() {};
}; };
inline TApp_movmag& app() { return (TApp_movmag&) main_app(); } inline TApp_movmag& app() { return (TApp_movmag&) main_app(); }
int TApp_movmag::read(TMask& m) int TApp_movmag::read(TMask& m)
{ {
const int err = TRelation_application::read(m); const int err = TRelation_application::read(m);
if (err == NOERR) if (err == NOERR)
((TMask_movmag &)m).update_tot(); ((TMask_movmag&)m).update_tot();
return err; return err;
} }
@ -855,9 +878,15 @@ void TApp_movmag::init_modify_mode(TMask& m)
{ {
m.disable(F_INVENTORYMODE); m.disable(F_INVENTORYMODE);
const bool inventory = m.get_bool(F_INVENTORYMODE); const bool inventory = m.get_bool(F_INVENTORYMODE);
TSheet_field & ss = m.sfield(F_RIGHE); TSheet_field& ss = m.sfield(F_RIGHE);
ss.sheet_mask().field(F_QUANT).check_type(inventory ? CHECK_NONE : CHECK_REQUIRED); ss.sheet_mask().field(F_QUANT).check_type(inventory ? CHECK_NONE : CHECK_REQUIRED);
TRelation_application::init_modify_mode(m); TRelation_application::init_modify_mode(m);
FOR_EACH_SHEET_ROW(ss, i, row)
{
if (*row > ' ') // Tipo riga automatico
ss.disable_row(i);
}
} }
void TApp_movmag::init_insert_mode(TMask& m) void TApp_movmag::init_insert_mode(TMask& m)
@ -866,9 +895,9 @@ void TApp_movmag::init_insert_mode(TMask& m)
const bool inventory = m.get_bool(F_INVENTORYMODE); const bool inventory = m.get_bool(F_INVENTORYMODE);
TSheet_field& ss = m.sfield(F_RIGHE); TSheet_field& ss = m.sfield(F_RIGHE);
ss.sheet_mask().field(F_QUANT).check_type(inventory ? CHECK_NONE : CHECK_REQUIRED); ss.sheet_mask().field(F_QUANT).check_type(inventory ? CHECK_NONE : CHECK_REQUIRED);
((TMask_movmag &)m).old_qta().destroy(); ((TMask_movmag&)m).old_qta().destroy();
for (int i = 0; i < ((TMask_movmag &)m).autorows(); i++) for (int i = ((TMask_movmag&)m).autorows(); i > 0; i--)
ss.insert(-1, false, true); ss.insert(-1, false, true);
TRelation_application::init_insert_mode(m); TRelation_application::init_insert_mode(m);
@ -876,9 +905,9 @@ void TApp_movmag::init_insert_mode(TMask& m)
bool TApp_movmag::user_create() bool TApp_movmag::user_create()
{ {
open_files(LF_ANAMAG, LF_UMART, LF_CODCORR, LF_DESLIN, LF_MOVMAG,LF_RMOVMAG, LF_MAG, LF_STOMAG, LF_TABCOM,0); open_files(LF_ANAMAG, LF_UMART, LF_CODCORR, LF_DESLIN, LF_MOVMAG,LF_RMOVMAG, LF_MAG, LF_STOMAG, LF_TABCOM, 0);
TMov_mag * m_m= new TMov_mag(); // record del movimento di magazzino TMov_mag* m_m = new TMov_mag(); // record del movimento di magazzino
m_m->enable_autoload(LF_RMOVMAG); m_m->enable_autoload(LF_RMOVMAG);
// maschera specifica con gli handler dei movimenti // maschera specifica con gli handler dei movimenti
@ -887,29 +916,39 @@ bool TApp_movmag::user_create()
_rel= new TRelation(LF_MOVMAG); _rel= new TRelation(LF_MOVMAG);
_rel->lfile().set_curr(m_m); _rel->lfile().set_curr(m_m);
return TRUE; return true;
} }
bool TApp_movmag::user_destroy() bool TApp_movmag::user_destroy()
{ {
delete _rel; delete _rel;
delete _msk; delete _msk;
return true;
return TRUE;
} }
// autonumerazione // autonumerazione
const char *TApp_movmag::get_next_key() bool TApp_movmag::get_next_key(TToken_string& nextcod)
{ {
const char* nk = ((TMov_mag &)_rel->curr()).get_next_key(); const char* nk = ((TMov_mag &)_rel->curr()).get_next_key();
return _nextcod.format("%d|%s",F_NUMREG, nk); nextcod.format("%d|%s", F_NUMREG, nk);
return true;
}
bool TApp_movmag::protected_record(TRectype& rec)
{
bool prot = false;
TLocalisamfile rmov(LF_RMOVMAG);
rmov.put(RMOVMAG_NUMREG, rec.get(RMOVMAG_NUMREG));
rmov.put(RMOVMAG_NRIG, 1);
if (rmov.read() == NOERR)
prot = rmov.get_char(RMOVMAG_TIPORIGA) == riga_dadocumento;
return prot;
} }
int mg1100(int argc, char* argv[]) int mg1100(int argc, char* argv[])
{ {
TApp_movmag a; TApp_movmag a;
a.run(argc, argv, TR("Movimenti di magazzino")); a.run(argc, argv, TR("Movimenti di magazzino"));
exit(0);
return 0; return 0;
} }

View File

@ -28,5 +28,4 @@
// #define F_VALORE 156 // #define F_VALORE 156
#define F_DESCAUSRIG 157 #define F_DESCAUSRIG 157
#define G_NOAUTO 1
#define ALIAS_FCG 500 #define ALIAS_FCG 500

View File

@ -23,9 +23,7 @@ STRING F_AUTOMATICA 1
BEGIN BEGIN
PROMPT 2 1 "Tipo riga " PROMPT 2 1 "Tipo riga "
FIELD AUTOMATICA FIELD AUTOMATICA
FLAGS "DG" FLAGS "D"
MESSAGE EMPTY ENABLE,G_NOAUTO@
MESSAGE DISABLE,G_NOAUTO@
END END
STRING F_CODART 20 STRING F_CODART 20
@ -42,7 +40,6 @@ BEGIN
OUTPUT F_DESART DESCR OUTPUT F_DESART DESCR
OUTPUT F_UM LF_UMART->UM OUTPUT F_UM LF_UMART->UM
CHECKTYPE SEARCH CHECKTYPE SEARCH
GROUP G_NOAUTO
ADD RUN ve2 -3 ADD RUN ve2 -3
MESSAGE CHECK,F_GIAC MESSAGE CHECK,F_GIAC
END END
@ -58,7 +55,6 @@ BEGIN
DISPLAY "Codice@20" CODART DISPLAY "Codice@20" CODART
COPY OUTPUT F_CODART COPY OUTPUT F_CODART
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP G_NOAUTO
ADD RUN ve2 -3 ADD RUN ve2 -3
END END
@ -161,7 +157,6 @@ BEGIN
OUTPUT F_LIV1 CODTAB[2,16] OUTPUT F_LIV1 CODTAB[2,16]
CHECKTYPE NORMAL CHECKTYPE NORMAL
MESSAGE EMPTY CHECK,F_GIAC|CLEAR,F_LIV2|CHECK,F_LIV2 MESSAGE EMPTY CHECK,F_GIAC|CLEAR,F_LIV2|CHECK,F_LIV2
GROUP G_NOAUTO
MESSAGE CHECK,F_GIAC|ENABLE,F_LIV2 MESSAGE CHECK,F_GIAC|ENABLE,F_LIV2
END END
@ -176,7 +171,6 @@ BEGIN
COPY DISPLAY F_LIV1 COPY DISPLAY F_LIV1
OUTPUT F_LIV2 CODTAB[2,16] OUTPUT F_LIV2 CODTAB[2,16]
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP G_NOAUTO
MESSAGE EMPTY CHECK,F_GIAC|CLEAR,F_LIV3|CHECK,F_LIV3 MESSAGE EMPTY CHECK,F_GIAC|CLEAR,F_LIV3|CHECK,F_LIV3
MESSAGE CHECK,F_GIAC|ENABLE,F_LIV3 MESSAGE CHECK,F_GIAC|ENABLE,F_LIV3
END END
@ -191,7 +185,6 @@ BEGIN
COPY DISPLAY F_LIV1 COPY DISPLAY F_LIV1
OUTPUT F_LIV3 CODTAB[2,16] OUTPUT F_LIV3 CODTAB[2,16]
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP G_NOAUTO
MESSAGE EMPTY CHECK,F_GIAC|CLEAR,F_LIV4|CHECK,F_LIV4 MESSAGE EMPTY CHECK,F_GIAC|CLEAR,F_LIV4|CHECK,F_LIV4
MESSAGE CHECK,F_GIAC|ENABLE,F_LIV4 MESSAGE CHECK,F_GIAC|ENABLE,F_LIV4
END END
@ -206,7 +199,6 @@ BEGIN
COPY DISPLAY F_LIV1 COPY DISPLAY F_LIV1
OUTPUT F_LIV4 CODTAB[2,16] OUTPUT F_LIV4 CODTAB[2,16]
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP G_NOAUTO
MESSAGE CHECK,F_GIAC MESSAGE CHECK,F_GIAC
END END
@ -225,7 +217,6 @@ BEGIN
OUTPUT F_UM UM OUTPUT F_UM UM
OUTPUT F_UMFC FC OUTPUT F_UMFC FC
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
GROUP G_NOAUTO
END END
NUMBER F_QUANT 15 5 NUMBER F_QUANT 15 5
@ -234,7 +225,6 @@ BEGIN
FIELD QUANT FIELD QUANT
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
WARNING "Indicare la quantità" WARNING "Indicare la quantità"
GROUP G_NOAUTO
MESSAGE CHECK,F_VALORE MESSAGE CHECK,F_VALORE
END END
@ -266,7 +256,6 @@ BEGIN
OUTPUT F_DESCAUSRIG S0 OUTPUT F_DESCAUSRIG S0
MESSAGE EMPTY RESET,F_DESCAUSRIG MESSAGE EMPTY RESET,F_DESCAUSRIG
ADD RUN MG0 -0 %CAU ADD RUN MG0 -0 %CAU
GROUP G_NOAUTO
END END
STRING F_DESCAUSRIG 50 30 STRING F_DESCAUSRIG 50 30

View File

@ -49,12 +49,11 @@
#endif #endif
// campi comuni alla maschere di magazzino // campi comuni alla maschere di magazzino
typedef enum
{
typedef enum { riga_dadocumento = 'D', // derivata da documento
riga_dadocumento='D', // derivata da documento riga_automatica = 'A', // generata da causale collegata
riga_automatica='A', // generata da causale collegata riga_nongenerata = ' ' // immissione diretta del mov.
riga_nongenerata=' ' // immissione direttta del mov.
} TTipo_rigamovmag; } TTipo_rigamovmag;
typedef enum { typedef enum {

View File

@ -1,6 +1,6 @@
// oggetto TCausale_magazzino // oggetto TCausale_magazzino
// oggetto TMov_Mag , multirecord del movimento di magazzino // oggetto TMov_Mag , multirecord del movimento di magazzino
// funzione di ricostruzione saldi // funzione di ricostruzione saldi
#include <diction.h> #include <diction.h>
#include <progind.h> #include <progind.h>
@ -10,7 +10,6 @@
#include "clifogiac.h" #include "clifogiac.h"
#include "mglib.h" #include "mglib.h"
#include "movmag.h" #include "movmag.h"
#include "rmovmag.h"
#include <cfven.h> #include <cfven.h>
#ifndef __CGLIB01_H #ifndef __CGLIB01_H
@ -20,7 +19,6 @@
#include "../db/dblib.h" #include "../db/dblib.h"
#endif #endif
class TSaldo_mag : public TObject class TSaldo_mag : public TObject
{ {
int _codes; int _codes;