Patch level : 10.0 patch 488
Files correlati : lv3 Ricompilazione Demo : [ ] Commento : Prima vesrione funzionante evasione buoni di prelievo git-svn-id: svn://10.65.10.50/trunk@19538 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
e18191514b
commit
0956622dec
234
lv/lv3200.cpp
234
lv/lv3200.cpp
@ -9,6 +9,7 @@
|
|||||||
#include "../mg/clifogiac.h"
|
#include "../mg/clifogiac.h"
|
||||||
#include "../ve/velib.h"
|
#include "../ve/velib.h"
|
||||||
|
|
||||||
|
#include "clifo.h"
|
||||||
#include "lvcondv.h"
|
#include "lvcondv.h"
|
||||||
#include "lvrcondv.h"
|
#include "lvrcondv.h"
|
||||||
#include "lvrconsplan.h"
|
#include "lvrconsplan.h"
|
||||||
@ -74,6 +75,7 @@ protected:
|
|||||||
|
|
||||||
void sistema_quantita();
|
void sistema_quantita();
|
||||||
void sistema_pacchi();
|
void sistema_pacchi();
|
||||||
|
|
||||||
void evadi_da_barcode();
|
void evadi_da_barcode();
|
||||||
|
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
@ -95,6 +97,13 @@ static int sort_by_qta_evasa(TSheet_field& sheet, int r1, int r2)
|
|||||||
|
|
||||||
int dif = qta1 - qta2;
|
int dif = qta1 - qta2;
|
||||||
|
|
||||||
|
if (dif == 0)
|
||||||
|
{
|
||||||
|
const TString& codart1 = row1.get(1);
|
||||||
|
const TString& codart2 = row2.get(1);
|
||||||
|
|
||||||
|
dif = codart1.compare(codart2);
|
||||||
|
}
|
||||||
return dif;
|
return dif;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,14 +114,20 @@ static int sort_by_codart(TSheet_field& sheet, int r1, int r2)
|
|||||||
TToken_string& row1 = sheet.row(r1);
|
TToken_string& row1 = sheet.row(r1);
|
||||||
TToken_string& row2 = sheet.row(r2);
|
TToken_string& row2 = sheet.row(r2);
|
||||||
|
|
||||||
/*const int qta1 = row1.get_int(6);
|
const TString& codart1 = row1.get(1);
|
||||||
|
const TString& codart2 = row2.get(1);
|
||||||
|
|
||||||
|
int dif = codart1.compare(codart2);
|
||||||
|
|
||||||
|
if (dif == 0)
|
||||||
|
{
|
||||||
|
const int qta1 = row1.get_int(6);
|
||||||
const int qta2 = row2.get_int(6);
|
const int qta2 = row2.get_int(6);
|
||||||
|
|
||||||
int dif = qta1 - qta2;
|
dif = qta2 - qta1;
|
||||||
|
}
|
||||||
|
|
||||||
return dif;*/
|
return dif;
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//SETTA_CAMPI_DATA: metodo che compila tutti i campi legati alla data
|
//SETTA_CAMPI_DATA: metodo che compila tutti i campi legati alla data
|
||||||
@ -137,8 +152,17 @@ void TEvasione_msk::setta_campi_data()
|
|||||||
settimana << tmp;
|
settimana << tmp;
|
||||||
set(F_SETTIMANA, settimana);
|
set(F_SETTIMANA, settimana);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString8 str = data.string();
|
||||||
|
if (str.empty())
|
||||||
|
{
|
||||||
|
reset(F_GIORNO);
|
||||||
|
reset(F_SETTIMANA);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
warning_box(TR("Data non valida!"));
|
warning_box(TR("Data non valida!"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//SETTA_CAMPI_CLIENTE: metodo che compila tutti i campi legati al cliente
|
//SETTA_CAMPI_CLIENTE: metodo che compila tutti i campi legati al cliente
|
||||||
@ -176,6 +200,16 @@ void TEvasione_msk::setta_campi_cliente()
|
|||||||
reset(F_DATAPRCO);
|
reset(F_DATAPRCO);
|
||||||
reset(F_CODITI);
|
reset(F_CODITI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (get(F_RAGSOC).empty())
|
||||||
|
{
|
||||||
|
TToken_string key;
|
||||||
|
key.add('C');
|
||||||
|
key.add(codcf);
|
||||||
|
const TRectype& clifo = cache().get(LF_CLIFO, key);
|
||||||
|
set(F_RAGSOC, clifo.get(CLI_RAGSOC));
|
||||||
|
set(F_RICALT, clifo.get(CLI_RICALT));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -190,6 +224,8 @@ void TEvasione_msk::setta_campi_cliente()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
reset(F_RICALT);
|
||||||
|
reset(F_RAGSOC);
|
||||||
reset(F_CODCONT);
|
reset(F_CODCONT);
|
||||||
reset(F_DATAPRCO);
|
reset(F_DATAPRCO);
|
||||||
reset(F_CODITI);
|
reset(F_CODITI);
|
||||||
@ -202,9 +238,30 @@ void TEvasione_msk::carica_righe()
|
|||||||
TDoc_key kdoc(get_int(F_ANNO), get(F_CODNUM), get_long(F_NDOC));
|
TDoc_key kdoc(get_int(F_ANNO), get(F_CODNUM), get_long(F_NDOC));
|
||||||
TBuono_prelievo doc(kdoc);
|
TBuono_prelievo doc(kdoc);
|
||||||
|
|
||||||
|
const TString4 stato = doc.get(DOC_STATO);
|
||||||
|
|
||||||
|
set(F_STATO, stato);
|
||||||
|
disable(F_STATO);
|
||||||
|
|
||||||
|
set(F_DATADOC, doc.get_date(DOC_DATADOC)); setta_campi_data();
|
||||||
|
set(F_CODCF, doc.get_long(DOC_CODCF)); setta_campi_cliente(); field(F_CODCF).set_dirty();
|
||||||
|
|
||||||
_buonori = doc;
|
_buonori = doc;
|
||||||
|
|
||||||
TSheet_field sheet = sfield(F_RIGHE);
|
if(doc.rows() > 0)
|
||||||
|
{
|
||||||
|
enable(DLG_SELECT);
|
||||||
|
enable(DLG_PREVIEW);
|
||||||
|
|
||||||
|
if(stato == "1")
|
||||||
|
enable(DLG_ELABORA);
|
||||||
|
|
||||||
|
enable(DLG_SAVEREC);
|
||||||
|
enable(DLG_CANCEL);
|
||||||
|
show(F_RIGHE);
|
||||||
|
}
|
||||||
|
|
||||||
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
sheet.row(-1);
|
sheet.row(-1);
|
||||||
//preparo l'array delle posizioni dei campi nello sheet
|
//preparo l'array delle posizioni dei campi nello sheet
|
||||||
_posizioni.aggiungi("evaso", sheet.cid2index(S_EVASO));
|
_posizioni.aggiungi("evaso", sheet.cid2index(S_EVASO));
|
||||||
@ -227,7 +284,7 @@ void TEvasione_msk::carica_righe()
|
|||||||
TBuono_prelievo_row rdoc(row);
|
TBuono_prelievo_row rdoc(row);
|
||||||
|
|
||||||
TToken_string& riga = sheet.row(-1);
|
TToken_string& riga = sheet.row(-1);
|
||||||
riga.add(rdoc.evaso(), _posizioni.posizione("evaso"));
|
riga.add(rdoc.evaso() ? "X" : "", _posizioni.posizione("evaso"));
|
||||||
riga.add(rdoc.codart(), _posizioni.posizione("codart"));
|
riga.add(rdoc.codart(), _posizioni.posizione("codart"));
|
||||||
riga.add(rdoc.desart(), _posizioni.posizione("artdescr"));
|
riga.add(rdoc.desart(), _posizioni.posizione("artdescr"));
|
||||||
riga.add(rdoc.causale(), _posizioni.posizione("causale"));
|
riga.add(rdoc.causale(), _posizioni.posizione("causale"));
|
||||||
@ -238,8 +295,6 @@ void TEvasione_msk::carica_righe()
|
|||||||
const TRectype& anamag = cache().get(LF_ANAMAG, rdoc.codart());
|
const TRectype& anamag = cache().get(LF_ANAMAG, rdoc.codart());
|
||||||
//recupero i dati di interesse dall'anagrafica di magazzino
|
//recupero i dati di interesse dall'anagrafica di magazzino
|
||||||
const long ppconf = anamag.get_long(ANAMAG_PPCONF);
|
const long ppconf = anamag.get_long(ANAMAG_PPCONF);
|
||||||
|
|
||||||
|
|
||||||
if (ppconf > 0)
|
if (ppconf > 0)
|
||||||
riga.add(rdoc.num_pacchi(), _posizioni.posizione("pacchi"));
|
riga.add(rdoc.num_pacchi(), _posizioni.posizione("pacchi"));
|
||||||
else
|
else
|
||||||
@ -253,13 +308,14 @@ void TEvasione_msk::carica_righe()
|
|||||||
riga.add(rdoc.rifbcon(), _posizioni.posizione("rifbcon"));
|
riga.add(rdoc.rifbcon(), _posizioni.posizione("rifbcon"));
|
||||||
riga.add(rdoc.rifbrit(), _posizioni.posizione("rifbrit"));
|
riga.add(rdoc.rifbrit(), _posizioni.posizione("rifbrit"));
|
||||||
}
|
}
|
||||||
|
sheet.sort(sort_by_codart);
|
||||||
sheet.force_update();
|
sheet.force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
//RIORDINA_RIGHE: metodo che riordina le righe dello sheet in base alle quota di evasione
|
//RIORDINA_RIGHE: metodo che riordina le righe dello sheet in base alle quota di evasione
|
||||||
void TEvasione_msk::riordina_righe()
|
void TEvasione_msk::riordina_righe()
|
||||||
{
|
{
|
||||||
TSheet_field sheet = sfield(F_RIGHE);
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
sheet.sort(sort_by_qta_evasa);
|
sheet.sort(sort_by_qta_evasa);
|
||||||
sheet.force_update();
|
sheet.force_update();
|
||||||
}
|
}
|
||||||
@ -351,7 +407,7 @@ void TEvasione_msk::genera_documento()
|
|||||||
long dottmp = magcli.get_long(CLIFOGIAC_DOTTM);
|
long dottmp = magcli.get_long(CLIFOGIAC_DOTTM);
|
||||||
long dotod = magcli.get_long(CLIFOGIAC_DOTOD);
|
long dotod = magcli.get_long(CLIFOGIAC_DOTOD);
|
||||||
|
|
||||||
TRiga_documento rdoc = doc.new_row("21");
|
TRiga_documento& rdoc = doc.new_row("21");
|
||||||
rdoc.put(RDOC_CODART, codart);
|
rdoc.put(RDOC_CODART, codart);
|
||||||
rdoc.put(RDOC_CODARTMAG,codart);
|
rdoc.put(RDOC_CODARTMAG,codart);
|
||||||
rdoc.put(RDOC_CHECKED,'X');
|
rdoc.put(RDOC_CHECKED,'X');
|
||||||
@ -395,7 +451,7 @@ void TEvasione_msk::genera_documento()
|
|||||||
prezzo = anamag.get_real(ANAMAG_COSTSTD);
|
prezzo = anamag.get_real(ANAMAG_COSTSTD);
|
||||||
|
|
||||||
rdoc.put(RDOC_PREZZO, prezzo);
|
rdoc.put(RDOC_PREZZO, prezzo);
|
||||||
rdoc.put(RDOC_SCONTO,rcont.get(LVRCONDV_SCONTPERC)); //sconto
|
rdoc.put(RDOC_SCONTO, rcont.get(LVRCONDV_SCONTPERC)); //sconto
|
||||||
}
|
}
|
||||||
|
|
||||||
//scrivo il magazzino
|
//scrivo il magazzino
|
||||||
@ -417,8 +473,10 @@ void TEvasione_msk::genera_documento()
|
|||||||
if (doc.rows() > 0)
|
if (doc.rows() > 0)
|
||||||
{
|
{
|
||||||
doc.write();
|
doc.write();
|
||||||
//bpre.set_stato("evaso");
|
const TString4 stato = cache().get("%TIP", ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_PRE", NULL, 0), "S2").mid(1,1);
|
||||||
|
bpre.put(DOC_STATO, stato);
|
||||||
bpre.write();
|
bpre.write();
|
||||||
|
set(F_STATO, stato);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -426,7 +484,7 @@ void TEvasione_msk::genera_documento()
|
|||||||
void TEvasione_msk::evadi_tutto()
|
void TEvasione_msk::evadi_tutto()
|
||||||
{
|
{
|
||||||
const int posevaso = _posizioni.posizione("evaso");
|
const int posevaso = _posizioni.posizione("evaso");
|
||||||
TSheet_field sheet = sfield(F_RIGHE);
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
|
|
||||||
FOR_EACH_SHEET_ROW(sheet, r, riga)
|
FOR_EACH_SHEET_ROW(sheet, r, riga)
|
||||||
{
|
{
|
||||||
@ -438,26 +496,28 @@ void TEvasione_msk::evadi_tutto()
|
|||||||
//SPEZZA_RIGA: metodo che spezza una riga del buono in due righe, una per la quota evasa e una per la quota da evadere
|
//SPEZZA_RIGA: metodo che spezza una riga del buono in due righe, una per la quota evasa e una per la quota da evadere
|
||||||
void TEvasione_msk::spezza_riga()
|
void TEvasione_msk::spezza_riga()
|
||||||
{
|
{
|
||||||
TDoc_key kdoc(get_int(F_ANNO), get(F_CODNUM), get_long(F_NDOC));
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
TBuono_prelievo bpre(kdoc);
|
|
||||||
|
|
||||||
for(int riga = 1; riga <= bpre.rows(); riga++)
|
FOR_EACH_SHEET_ROW_BACK(sheet, r, riga1)
|
||||||
{
|
{
|
||||||
TRiga_documento& row = bpre[riga];
|
char flgev = riga1->get_char(_posizioni.posizione("evaso"));
|
||||||
TBuono_prelievo_row rbpre1(row);
|
if (flgev != 'X')
|
||||||
|
{
|
||||||
|
TToken_string& riga2 = sheet.row(-1);
|
||||||
|
riga2 = *riga1;
|
||||||
|
|
||||||
if (rbpre1.evaso())
|
const int dacons2 = riga2.get_int(_posizioni.posizione("ritirato")) - riga2.get_int(_posizioni.posizione("consegnato"));
|
||||||
continue;
|
riga2.add(dacons2, _posizioni.posizione("dacons"));
|
||||||
|
riga2.add(0L, _posizioni.posizione("consegnato"));
|
||||||
|
riga2.add(0L, _posizioni.posizione("pacchi"));
|
||||||
|
|
||||||
TRiga_documento rdoc(row);
|
const int dacons1 = riga1->get_int(_posizioni.posizione("ritirato")) - riga1->get_int(_posizioni.posizione("consegnato"));
|
||||||
TBuono_prelievo_row rbpre2(rdoc);
|
riga1->add(dacons1, _posizioni.posizione("dacons"));
|
||||||
|
riga1->add("X", _posizioni.posizione("evaso"));
|
||||||
rbpre2.set_qta_dacons(rbpre2.qta_ritirata() - rbpre2.qta_consegnata());
|
|
||||||
rbpre2.set_qta_consegnata(0);
|
|
||||||
|
|
||||||
rbpre1.set_qta_dacons(rbpre1.qta_ritirata() - rbpre1.qta_consegnata());
|
|
||||||
rbpre1.set_evaso(true);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
sheet.sort(sort_by_codart);
|
||||||
|
sheet.force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
//SALVA: metodo che salva il buono di prelievo così com'è, senza compiere altre operazioni
|
//SALVA: metodo che salva il buono di prelievo così com'è, senza compiere altre operazioni
|
||||||
@ -469,7 +529,7 @@ void TEvasione_msk::salva()
|
|||||||
//nel caso avessi spezzato le righe, riscirvendole da capo mi vengono ordinate per codice
|
//nel caso avessi spezzato le righe, riscirvendole da capo mi vengono ordinate per codice
|
||||||
doc.destroy_rows();
|
doc.destroy_rows();
|
||||||
|
|
||||||
TSheet_field sheet = sfield(F_RIGHE);
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
//riordino lo sheet
|
//riordino lo sheet
|
||||||
sheet.sort(sort_by_codart);
|
sheet.sort(sort_by_codart);
|
||||||
sheet.force_update();
|
sheet.force_update();
|
||||||
@ -477,10 +537,17 @@ void TEvasione_msk::salva()
|
|||||||
//per ogni riga dello sheet genero una riga documento
|
//per ogni riga dello sheet genero una riga documento
|
||||||
FOR_EACH_SHEET_ROW(sheet, r, riga)
|
FOR_EACH_SHEET_ROW(sheet, r, riga)
|
||||||
{
|
{
|
||||||
TRiga_documento& row = doc.new_row();
|
TRiga_documento& row = doc.new_row("21");
|
||||||
TBuono_prelievo_row rdoc(row);
|
TBuono_prelievo_row rdoc(row);
|
||||||
|
|
||||||
rdoc.set_evaso(riga->get(_posizioni.posizione("evaso")) == "X" ? true: false);
|
const char flgev = riga->get(_posizioni.posizione("evaso"))[0];
|
||||||
|
bool flag;
|
||||||
|
if (flgev == 'X')
|
||||||
|
flag = true;
|
||||||
|
else
|
||||||
|
flag = false;
|
||||||
|
|
||||||
|
rdoc.set_evaso(flag);
|
||||||
rdoc.set_codart(riga->get(_posizioni.posizione("codart")));
|
rdoc.set_codart(riga->get(_posizioni.posizione("codart")));
|
||||||
rdoc.set_desart(riga->get(_posizioni.posizione("artdescr")));
|
rdoc.set_desart(riga->get(_posizioni.posizione("artdescr")));
|
||||||
rdoc.set_causale(riga->get(_posizioni.posizione("causale")));
|
rdoc.set_causale(riga->get(_posizioni.posizione("causale")));
|
||||||
@ -503,7 +570,7 @@ void TEvasione_msk::annulla_operazioni()
|
|||||||
//ANNULLA PACCHI
|
//ANNULLA PACCHI
|
||||||
|
|
||||||
//elimino lo sheet senza salvarlo
|
//elimino lo sheet senza salvarlo
|
||||||
TSheet_field sheet = sfield(F_RIGHE);
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
sheet.destroy();
|
sheet.destroy();
|
||||||
|
|
||||||
for(int i = 1; i <= _buonori.rows(); i++)
|
for(int i = 1; i <= _buonori.rows(); i++)
|
||||||
@ -512,14 +579,25 @@ void TEvasione_msk::annulla_operazioni()
|
|||||||
TBuono_prelievo_row rdoc(row);
|
TBuono_prelievo_row rdoc(row);
|
||||||
|
|
||||||
TToken_string& riga = sheet.row(-1);
|
TToken_string& riga = sheet.row(-1);
|
||||||
riga.add(rdoc.evaso(), _posizioni.posizione("evaso"));
|
riga.add(rdoc.evaso() ? "X" : "", _posizioni.posizione("evaso"));
|
||||||
riga.add(rdoc.codart(), _posizioni.posizione("codart"));
|
riga.add(rdoc.codart(), _posizioni.posizione("codart"));
|
||||||
riga.add(rdoc.desart(), _posizioni.posizione("artdescr"));
|
riga.add(rdoc.desart(), _posizioni.posizione("artdescr"));
|
||||||
riga.add(rdoc.causale(), _posizioni.posizione("causale"));
|
riga.add(rdoc.causale(), _posizioni.posizione("causale"));
|
||||||
riga.add(rdoc.qta_ritirata(), _posizioni.posizione("ritirato"));
|
riga.add(rdoc.qta_ritirata(), _posizioni.posizione("ritirato"));
|
||||||
riga.add(rdoc.qta_dacons(), _posizioni.posizione("dacons"));
|
riga.add(rdoc.qta_dacons(), _posizioni.posizione("dacons"));
|
||||||
riga.add(rdoc.qta_consegnata(), _posizioni.posizione("consegnato"));
|
riga.add(rdoc.qta_consegnata(), _posizioni.posizione("consegnato"));
|
||||||
|
|
||||||
|
const TRectype& anamag = cache().get(LF_ANAMAG, rdoc.codart());
|
||||||
|
//recupero i dati di interesse dall'anagrafica di magazzino
|
||||||
|
const long ppconf = anamag.get_long(ANAMAG_PPCONF);
|
||||||
|
if (ppconf > 0)
|
||||||
riga.add(rdoc.num_pacchi(), _posizioni.posizione("pacchi"));
|
riga.add(rdoc.num_pacchi(), _posizioni.posizione("pacchi"));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
riga.add(0, _posizioni.posizione("pacchi"));
|
||||||
|
sheet.disable_cell(i, _posizioni.posizione("pacchi"));
|
||||||
|
}
|
||||||
|
|
||||||
riga.add(rdoc.cong_pre(), _posizioni.posizione("congpre"));
|
riga.add(rdoc.cong_pre(), _posizioni.posizione("congpre"));
|
||||||
riga.add(rdoc.cong_att(), _posizioni.posizione("congatt"));
|
riga.add(rdoc.cong_att(), _posizioni.posizione("congatt"));
|
||||||
riga.add(rdoc.rifbcon(), _posizioni.posizione("rifbcon"));
|
riga.add(rdoc.rifbcon(), _posizioni.posizione("rifbcon"));
|
||||||
@ -531,13 +609,14 @@ void TEvasione_msk::annulla_operazioni()
|
|||||||
//CONTROLLA: metodo che controlla se tutte le righe sono evase
|
//CONTROLLA: metodo che controlla se tutte le righe sono evase
|
||||||
bool TEvasione_msk::controlla()
|
bool TEvasione_msk::controlla()
|
||||||
{
|
{
|
||||||
TSheet_field sheet = sfield(F_RIGHE);
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
|
|
||||||
bool evaso = true;
|
bool evaso = true;
|
||||||
|
|
||||||
FOR_EACH_SHEET_ROW(sheet, r, row)
|
FOR_EACH_SHEET_ROW(sheet, r, row)
|
||||||
{
|
{
|
||||||
if (row->get(_posizioni.posizione("evaso")) != "X")
|
const char flgev = row->get(_posizioni.posizione("evaso"))[0];
|
||||||
|
if (flgev != 'X')
|
||||||
evaso = false;
|
evaso = false;
|
||||||
}
|
}
|
||||||
return evaso;
|
return evaso;
|
||||||
@ -548,7 +627,8 @@ bool TEvasione_msk::controlla()
|
|||||||
//a mano ed è prevista una evasione a pacchi, allora aggiorno il numero dei pacchi
|
//a mano ed è prevista una evasione a pacchi, allora aggiorno il numero dei pacchi
|
||||||
void TEvasione_msk::sistema_quantita()
|
void TEvasione_msk::sistema_quantita()
|
||||||
{
|
{
|
||||||
TString80 codart = get(S_CODART);
|
TMask& msk = sfield(F_RIGHE).sheet_mask();
|
||||||
|
TString80 codart = msk.get(S_CODART);
|
||||||
|
|
||||||
const TRectype& anamag = cache().get(LF_ANAMAG,codart);
|
const TRectype& anamag = cache().get(LF_ANAMAG,codart);
|
||||||
//recupero i dati di interesse dall'anagrafica di magazzino
|
//recupero i dati di interesse dall'anagrafica di magazzino
|
||||||
@ -556,20 +636,17 @@ void TEvasione_msk::sistema_quantita()
|
|||||||
|
|
||||||
if (ppconf > 0)
|
if (ppconf > 0)
|
||||||
{
|
{
|
||||||
TSheet_field sheet = sfield(F_RIGHE);
|
int pacchi = msk.get_int(S_PACCHI);
|
||||||
TToken_string riga = sheet.row(sheet.selected());
|
|
||||||
|
|
||||||
int pacchi = get_int(S_PACCHI);
|
|
||||||
|
|
||||||
int qta_consegnata = pacchi * ppconf;
|
int qta_consegnata = pacchi * ppconf;
|
||||||
riga.add(qta_consegnata, _posizioni.posizione("consegnato"));
|
msk.set(S_CONSEGNATO, qta_consegnata);
|
||||||
sheet.force_update(sheet.selected());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TEvasione_msk::sistema_pacchi()
|
void TEvasione_msk::sistema_pacchi()
|
||||||
{
|
{
|
||||||
TString80 codart = get(S_CODART);
|
TMask& msk = sfield(F_RIGHE).sheet_mask();
|
||||||
|
TString80 codart = msk.get(S_CODART);
|
||||||
|
|
||||||
const TRectype& anamag = cache().get(LF_ANAMAG,codart);
|
const TRectype& anamag = cache().get(LF_ANAMAG,codart);
|
||||||
//recupero i dati di interesse dall'anagrafica di magazzino
|
//recupero i dati di interesse dall'anagrafica di magazzino
|
||||||
@ -577,14 +654,10 @@ void TEvasione_msk::sistema_pacchi()
|
|||||||
|
|
||||||
if (ppconf > 0)
|
if (ppconf > 0)
|
||||||
{
|
{
|
||||||
TSheet_field sheet = sfield(F_RIGHE);
|
int qta_consegnata = msk.get_int(S_CONSEGNATO);
|
||||||
TToken_string riga = sheet.row(sheet.selected());
|
|
||||||
|
|
||||||
int qta_consegnata = get_int(S_CONSEGNATO);
|
int pacchi = qta_consegnata / ppconf;
|
||||||
|
msk.set(S_PACCHI, pacchi);
|
||||||
int pacchi = qta_consegnata / ppconf + 1;
|
|
||||||
riga.add(pacchi, _posizioni.posizione("pacchi"));
|
|
||||||
sheet.force_update(sheet.selected());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -636,24 +709,37 @@ bool TEvasione_msk::on_field_event(TOperable_field& f, TField_event e, long joll
|
|||||||
break;
|
break;
|
||||||
case DLG_SAVEREC:
|
case DLG_SAVEREC:
|
||||||
{
|
{
|
||||||
|
if (e == fe_button)
|
||||||
salva();
|
salva();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DLG_CANCEL:
|
case DLG_CANCEL:
|
||||||
|
{
|
||||||
|
if (e == fe_button)
|
||||||
{
|
{
|
||||||
annulla_operazioni();
|
annulla_operazioni();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_NDOC:
|
case F_NDOC:
|
||||||
{
|
{
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
if (f.get_long() > 0)
|
if (f.get_long() > 0)
|
||||||
{
|
|
||||||
enable(F_RIGHE);
|
|
||||||
carica_righe();
|
carica_righe();
|
||||||
}
|
|
||||||
else
|
else
|
||||||
disable(F_RIGHE);
|
{
|
||||||
|
sfield(F_RIGHE).destroy();
|
||||||
|
disable(DLG_SELECT);
|
||||||
|
disable(DLG_PREVIEW);
|
||||||
|
disable(DLG_ELABORA);
|
||||||
|
disable(DLG_SAVEREC);
|
||||||
|
disable(DLG_CANCEL);
|
||||||
|
reset(F_STATO);
|
||||||
|
reset(F_DATADOC); setta_campi_data();
|
||||||
|
reset(F_CODCF); setta_campi_cliente();
|
||||||
|
hide(F_RIGHE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_DATADOC:
|
case F_DATADOC:
|
||||||
@ -668,42 +754,19 @@ bool TEvasione_msk::on_field_event(TOperable_field& f, TField_event e, long joll
|
|||||||
setta_campi_cliente();
|
setta_campi_cliente();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_RIGHE:
|
|
||||||
{
|
|
||||||
if (e == fe_modify)
|
|
||||||
{
|
|
||||||
TSheet_field sheet = sfield(F_RIGHE);
|
|
||||||
if (sheet.items() > 0)
|
|
||||||
{
|
|
||||||
enable(DLG_SELECT);
|
|
||||||
enable(DLG_PREVIEW);
|
|
||||||
enable(DLG_ELABORA);
|
|
||||||
enable(DLG_SAVEREC);
|
|
||||||
enable(DLG_CANCEL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
disable(DLG_SELECT);
|
|
||||||
disable(DLG_PREVIEW);
|
|
||||||
disable(DLG_ELABORA);
|
|
||||||
disable(DLG_SAVEREC);
|
|
||||||
disable(DLG_CANCEL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case S_CONSEGNATO:
|
case S_CONSEGNATO:
|
||||||
{
|
{
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
{
|
{
|
||||||
|
TMask& msk = sfield(F_RIGHE).sheet_mask();
|
||||||
//la riga risulta evasa se la quantità consegnata è maggiore o uguale alla quantità da consegnare
|
//la riga risulta evasa se la quantità consegnata è maggiore o uguale alla quantità da consegnare
|
||||||
if(f.get_long() > get_long(S_DACONS))
|
if(msk.get_long(S_CONSEGNATO) > msk.get_long(S_DACONS))
|
||||||
{
|
{
|
||||||
warning_box(TR("ATTENZIONE: stai consegnando un quantitativo maggiore al dovuto"));
|
warning_box(TR("ATTENZIONE: stai consegnando un quantitativo maggiore al dovuto"));
|
||||||
set(S_EVASO, "X");
|
msk.set(S_EVASO, "X");
|
||||||
}
|
}
|
||||||
else if (f.get_long() == get_long(S_DACONS))
|
else if (msk.get_long(S_CONSEGNATO) == msk.get_long(S_DACONS))
|
||||||
set(S_EVASO, "X");
|
msk.set(S_EVASO, "X");
|
||||||
sistema_pacchi();
|
sistema_pacchi();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -711,10 +774,8 @@ bool TEvasione_msk::on_field_event(TOperable_field& f, TField_event e, long joll
|
|||||||
case S_PACCHI:
|
case S_PACCHI:
|
||||||
{
|
{
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
{
|
|
||||||
sistema_quantita();
|
sistema_quantita();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:break;
|
default:break;
|
||||||
}
|
}
|
||||||
@ -737,7 +798,7 @@ TEvasione_msk::TEvasione_msk():TAutomask("lv3200a")
|
|||||||
int annoes = es.date2esc(data);
|
int annoes = es.date2esc(data);
|
||||||
set(F_ANNO, annoes);
|
set(F_ANNO, annoes);
|
||||||
|
|
||||||
disable(F_RIGHE);
|
hide(F_RIGHE);
|
||||||
disable(DLG_SELECT);
|
disable(DLG_SELECT);
|
||||||
disable(DLG_PREVIEW);
|
disable(DLG_PREVIEW);
|
||||||
disable(DLG_ELABORA);
|
disable(DLG_ELABORA);
|
||||||
@ -769,6 +830,7 @@ public:
|
|||||||
bool TEvasione_app::create()
|
bool TEvasione_app::create()
|
||||||
{
|
{
|
||||||
_msk = new TEvasione_msk();
|
_msk = new TEvasione_msk();
|
||||||
|
open_files(LF_DOC, LF_RIGHEDOC);
|
||||||
return TSkeleton_application::create();
|
return TSkeleton_application::create();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user