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:
parent
b50b89232f
commit
b3a42fe53d
159
mg/mg1100.cpp
159
mg/mg1100.cpp
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
11
mg/mglib.h
11
mg/mglib.h
@ -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 {
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user