Patch level : 10.0 332
Files correlati : lv0, lv0400a.msk Ricompilazione Demo : [ ] Commento : Contratti - Testata Tipo canone È un listbox con valori: 0|Nessuno 1|Importo fisso 2|% su valore convenzionale per cliente Se viene selezionata lopzione Importo fisso, devo attivare un listbox con valori: 0|Nessuno 1|Elenco articoli con quantità 2| Elenco articoli senza quantità Se viene selezionata lopzione % su valore convenzionale per cliente, allora fisso su tutte le righe del contratto questo valore La voce % su valore convenzionale per articolo va eliminata dalle testate La voce Raggruppato su unico articolo diventa un checkbox, cliccabile solo se Tipo canone vale Nessuno Tipo forfait Il campo Tipo forfait e i campi a lui associati vanno eliminati delle testate dei contratti Note: in fatturazione vanno gestiti Elenco articoli senza quantità il raggruppamento su unico articolo come checkbox; va gestito inoltre Importo minimo fatturabile [imponibile] Flag vari - Il flag stampa riepilogo consegne è sempre attivo - I flags riferimenti bolle e stampa come da elenco consegne sono esclusivi Varie Eliminare la causale di default dalle testate Aggiungere la voce Misto tra le voci del Tipo imballo Eliminare i campi Num. Utente e Num. Etichette Se Ritiro automatico dotazione temporanea non è flaggato in testata e cerco di flaggarlo su una riga, emettere un warning Contratti - Righe Prezzo Il campo prezzo è sempre abilitato ma non obbligatorio Proposta prezzo: Quando carico un articolo su un contratto controllo il listino del cliente (CFVEN), poi cerco larticolo su RCONDV in base al codice listino Se qui trovo il prezzo lo prendo e lo propongo sul contratto; altrimenti scrivo sul contratto quello salvato in anagrafica articoli, segnalando con un warning; se larticolo non appartiene a nessun listino, allora prendo il prezzo dallanagrafica articoli senza segnalare niente. Valore convenzionale Il campo valore convenzionale è sempre imputabile e varrà salvato nel costo standard in anagrafica (campo che cambierà nome per le lavanderie) Pezzi per confezione Il campo Pezzi per confezione diventa Pezzi per pacco Tipo forfait Il campo Tipo forfait rimane solo sulle righe e: - Nessuno: nessun comportamento particolare - Valore fisso: Importo fisso obbligatorio - Nolo: Prezzo nolo obbligatorio - Ciclaggio: nessun comportamento particolare - % su valore convenzionale per articolo: nessun comportamento particolare - Fisso su dotazione iniziale: importo fisso obbligatorio Modifica dotazioni In realtà sono sempre modificabili, ma quando li modifico manualmente devo emettere un warning Non lamentarti se poi i conti non tornano git-svn-id: svn://10.65.10.50/trunk@19010 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5508c0a2a1
commit
3c2ccd846c
140
lv/lv0400.cpp
140
lv/lv0400.cpp
@ -2,11 +2,11 @@
|
||||
#include <defmask.h>
|
||||
#include <execp.h>
|
||||
#include <progind.h>
|
||||
#include <relapp.h>
|
||||
|
||||
#include "lvlib.h"
|
||||
#include "../cg/cglib01.h"
|
||||
#include "../mg/clifogiac.h"
|
||||
#include "../ve/rcondv.h"
|
||||
|
||||
#include "lv0400.h"
|
||||
|
||||
@ -269,55 +269,45 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case F_TIPOFORFTE:
|
||||
case F_NOLCICTE:
|
||||
case F_VCARTCLITE:
|
||||
case F_TIPOCAN:
|
||||
{
|
||||
//copio il valore dei campi in questione della testata su tutte le righe se F_TIPOFORFTE è diverso da NESSUNO,
|
||||
//altrimente lascio quello che c'è
|
||||
const int tipoforfte = atoi(get(F_TIPOFORFTE));
|
||||
//copio il valore del campo in questione della testata su tutte le righe se F_TIPOCAN vale
|
||||
//% su valore convenzionale per cliente, altrimente lascio quello che c'è
|
||||
const int tipocan = atoi(get(F_TIPOCAN));
|
||||
if (e == fe_modify || e == fe_init)
|
||||
{
|
||||
TSheet_field& ss = sfield(F_RIGHE);
|
||||
|
||||
//recupero le posizioni dei campi che devo modificare
|
||||
const int pos_tipoforf = ss.cid2index(S_TIPOFORF);
|
||||
const int pos_nolcic = ss.cid2index(S_NOLCIC);
|
||||
const int pos_tipoforf = ss.cid2index(S_TIPOFORF);
|
||||
const int pos_vcartcli = ss.cid2index(S_VCARTCLI);
|
||||
|
||||
if (tipoforfte > 0)
|
||||
if (tipocan == 2)
|
||||
{
|
||||
//recupero i valori che devo copiare
|
||||
const char nolcic = get(F_NOLCICTE)[0];
|
||||
const char vcartcli = get(F_VCARTCLITE)[0];
|
||||
|
||||
FOR_EACH_SHEET_ROW(ss, r, row)
|
||||
{
|
||||
TToken_string& riga = ss.row(r);
|
||||
//scrivo i valori alle posizioni corrette
|
||||
riga.add(tipoforfte, pos_tipoforf);
|
||||
riga.add(nolcic, pos_nolcic);
|
||||
riga.add(vcartcli, pos_vcartcli);
|
||||
riga.add(4, pos_tipoforf);
|
||||
riga.add('C', pos_vcartcli);
|
||||
//disabilito le celle interessate
|
||||
ss.disable_cell(r, pos_tipoforf);
|
||||
ss.disable_cell(r, pos_nolcic);
|
||||
ss.disable_cell(r, pos_vcartcli);
|
||||
}
|
||||
field(F_TIPOFORF).disable();
|
||||
field(F_NOLCIC).disable();
|
||||
field(F_VCARTCLI).disable();
|
||||
}
|
||||
else
|
||||
{
|
||||
FOR_EACH_SHEET_ROW(ss, r, row)
|
||||
{
|
||||
TToken_string& riga = ss.row(r);
|
||||
ss.enable_cell(r, pos_tipoforf);
|
||||
ss.enable_cell(r, pos_nolcic);
|
||||
TToken_string& riga = ss.row(r);
|
||||
//scrivo i valori alle posizioni corrette
|
||||
riga.add(0, pos_tipoforf);
|
||||
ss.enable_cell(r, pos_tipoforf);
|
||||
ss.enable_cell(r, pos_vcartcli);
|
||||
}
|
||||
field(F_TIPOFORF).enable();
|
||||
field(F_NOLCIC).enable();
|
||||
field(F_TIPOFORF).enable();
|
||||
field(F_VCARTCLI).enable();
|
||||
}
|
||||
ss.force_update();
|
||||
@ -326,6 +316,39 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_TIPOFORF:
|
||||
{
|
||||
//se questo campo risulta modificato, lo copio in alto e forzo l'update
|
||||
if (e == fe_modify || e == fe_init)
|
||||
{
|
||||
TSheet_field& ss = sfield(F_RIGHE);
|
||||
TToken_string& riga = ss.row(ss.selected());
|
||||
riga.add(o.get(), ss.cid2index(S_TIPOFORF));
|
||||
if (ss.mask().get_int(F_TIPOCAN) != 2)
|
||||
{
|
||||
riga.add('A', ss.cid2index(S_VCARTCLI));
|
||||
ss.disable_cell(ss.selected(), ss.cid2index(S_VCARTCLI));
|
||||
}
|
||||
ss.force_update();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_RITAUDTTMPRIG:
|
||||
{
|
||||
//obbligo a settare il flag prima in testata, altrimenti non lo lascio settare per le righe
|
||||
if (e == fe_modify || e == fe_init)
|
||||
{
|
||||
if (o.get()[0] == 'X')
|
||||
{
|
||||
if (field(F_RITAUDTTMP).get()[0] != 'X')
|
||||
{
|
||||
warning_box("E' necessario prima attivare il ritiro automatico della dotazione temporanea in testata");
|
||||
o.set("");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case S_CODART:
|
||||
if (!o.empty()) //se il campo risulta pieno
|
||||
{
|
||||
@ -335,6 +358,59 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
|
||||
TSheet_field& ss = sfield(F_RIGHE);
|
||||
TMask& m = o.mask(); // maschera di riga!
|
||||
|
||||
//PROPONI PREZZO
|
||||
TToken_string key;
|
||||
key.add('C');
|
||||
key.add(field(F_CODCF).get());
|
||||
const TRectype& cfven = cache().get(LF_CFVEN, key);
|
||||
|
||||
bool trvlst = false;
|
||||
|
||||
if (!cfven.empty())
|
||||
{
|
||||
//se è settata la categoria merceologica, leggo sia il listino che la cat merc, altrimenti solo il listino
|
||||
TString8 codlis = cfven.get(CFV_CODLIST);
|
||||
TString8 catven;
|
||||
TConfig* configve = new TConfig(CONFIG_DITTA,"ve");
|
||||
const char gesliscv = configve->get_char("GESLISCV");
|
||||
if (gesliscv != 'X')
|
||||
catven = "";
|
||||
else
|
||||
catven = cfven.get(CFV_CATVEN);
|
||||
|
||||
//cerco il prezzo sul listino
|
||||
key.cut(0);
|
||||
key.add('L'); //tipo
|
||||
key.add(catven); //catven
|
||||
key.add(""); //tipocf
|
||||
key.add(""); //codcf
|
||||
key.add(codlis); //codlis
|
||||
key.add('A'); //tiporiga
|
||||
key.add(codart); //codriga
|
||||
key.add(""); //um
|
||||
key.add(""); //nscagl
|
||||
const TRectype& rcondv = cache().get(LF_RCONDV, key);
|
||||
|
||||
if (!rcondv.empty())
|
||||
{
|
||||
m.set(S_PREZZOST, rcondv.get_real(RCONDV_PREZZO));
|
||||
trvlst = true;
|
||||
}
|
||||
else
|
||||
warning_box("Non esiste questo articolo sul listino; "
|
||||
"come prezzo verrà proposto il valore convenzionale dell'articolo");
|
||||
}
|
||||
else
|
||||
trvlst = false; //probabilmente istruzione inutile
|
||||
|
||||
//se non ho trovato un listino, o se non c'è un listino impostato
|
||||
//propongo come prezzo il valore convenzionale
|
||||
if (!trvlst)
|
||||
{
|
||||
const TRectype& anamag = cache().get(LF_ANAMAG, codart);
|
||||
m.set(S_PREZZOST, anamag.get_real(ANAMAG_COSTSTD));
|
||||
}
|
||||
|
||||
//se ho scritto un articolo diverso da quello che esisteva prima
|
||||
//e se si desidera veramente modificarlo, allora permetto la modifica
|
||||
//e forzo l'updatre della riga, altrimenti riscrivo l'articolo che c'era prima
|
||||
@ -344,7 +420,7 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
|
||||
if (!yesno_box("Si desidera veramente modificare l'articolo %s",(const char*) _artrig))
|
||||
{
|
||||
m.set(S_CODART,_artrig);
|
||||
TToken_string& row=ss.row(ss.selected());
|
||||
TToken_string& row = ss.row(ss.selected());
|
||||
row.add(_artrig, 0);
|
||||
ss.force_update(ss.selected());
|
||||
}
|
||||
@ -362,6 +438,20 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
|
||||
on_art_select();
|
||||
}
|
||||
break;
|
||||
case S_CONG:
|
||||
case S_DOTIN:
|
||||
case S_DOTOD:
|
||||
case S_DOTTMP:
|
||||
{
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TString str;
|
||||
str << "ATTENZIONE: Una quantità risulta modificata a mano; dopo questa operazione i totali dei movimenti"
|
||||
<< "di magazzino potrebbero non corrispondere ai numeri qui salvati";
|
||||
warning_box(str);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DLG_PLANNING:
|
||||
//se viene premuto il bottone "Giri", lancia lv0500 (generatore automatico dei giri)
|
||||
if (e == fe_button && edit_mode())
|
||||
|
@ -181,11 +181,11 @@ BEGIN
|
||||
ITEM "1|A valore fisso"
|
||||
MESSAGE HIDE,1@|SHOW,F_IMPFISART|ENABLE,F_IMPFISART|DISABLE,3@|HIDE,F_MINCIC|HIDE,F_PREZNOL
|
||||
ITEM "2|Nolo"
|
||||
MESSAGE SHOW,F_NOLCIC|HIDE,F_VCARTCLI|DISABLE,F_IMPFISART|HIDE,F_IMPFISART|DISABLE,3@|HIDE,F_MINCIC|SHOW,F_PREZNOL
|
||||
MESSAGE SHOW,F_NOLCIC|DISABLE,F_IMPFISART|HIDE,F_IMPFISART|DISABLE,3@|HIDE,F_MINCIC|SHOW,F_PREZNOL
|
||||
ITEM "3|Ciclaggio"
|
||||
MESSAGE SHOW,F_NOLCIC|HIDE,F_VCARTCLI|SHOW,F_IMPFISART|DISABLE,F_IMPFISART|DISABLE,3@|SHOW,F_MINCIC|HIDE,F_PREZNOL
|
||||
MESSAGE SHOW,F_NOLCIC|SHOW,F_IMPFISART|DISABLE,F_IMPFISART|DISABLE,3@|SHOW,F_MINCIC|HIDE,F_PREZNOL
|
||||
ITEM "4|% sul val. convenz."
|
||||
MESSAGE SHOW,F_NOLCIC|SHOW,F_VCARTCLI|SHOW,F_IMPFISART|DISABLE,F_IMPFISART|ENABLE,3@|HIDE,F_MINCIC|HIDE,F_PREZNOL
|
||||
MESSAGE SHOW,F_NOLCIC|SHOW,F_IMPFISART|DISABLE,F_IMPFISART|ENABLE,3@|HIDE,F_MINCIC|HIDE,F_PREZNOL
|
||||
ITEM "5|Fisso su dot. iniziale"
|
||||
MESSAGE HIDE,1@|SHOW,F_IMPFISART|ENABLE,F_IMPFISART|DISABLE,3@|HIDE,F_MINCIC|HIDE,F_PREZNOL
|
||||
END
|
||||
@ -204,17 +204,20 @@ BEGIN
|
||||
ITEM "A|Articolo"
|
||||
ITEM "C|Cliente"
|
||||
GROUP 1
|
||||
FLAGS "G"
|
||||
END
|
||||
|
||||
CURRENCY F_IMPFISART 15
|
||||
BEGIN
|
||||
PROMPT 1 15 "Imp.fisso "
|
||||
CHECTYPE REQUIRED
|
||||
END
|
||||
|
||||
CURRENCY F_PREZNOL 15
|
||||
BEGIN
|
||||
PROMPT 1 15 "Prz. Nolo "
|
||||
FLAGS "U"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
CURRENCY F_VALCONV 15
|
||||
@ -344,6 +347,7 @@ CURRENCY F_IMPFIX 10
|
||||
BEGIN
|
||||
PROMPT 49 2 "Importo fisso "
|
||||
FIELD IMPFIX
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
BOOLEAN F_FORFNOCONS
|
||||
@ -444,42 +448,6 @@ BEGIN
|
||||
FIELD TIPOLIS
|
||||
END
|
||||
|
||||
LISTBOX F_TIPOFORFTE 1 25
|
||||
BEGIN
|
||||
PROMPT 2 9 "Forfait "
|
||||
ITEM "0|Nessuno"
|
||||
MESSAGE HIDE,F_NOLCICTE|HIDE,F_VCARTCLITE
|
||||
ITEM "1|A valore fisso"
|
||||
MESSAGE HIDE,F_NOLCICTE|HIDE,F_VCARTCLITE
|
||||
ITEM "2|Nolo"
|
||||
MESSAGE SHOW,F_NOLCICTE|HIDE,F_VCARTCLITE
|
||||
ITEM "3|Ciclaggio"
|
||||
MESSAGE SHOW,F_NOLCICTE|HIDE,F_VCARTCLITE
|
||||
ITEM "4|% sul val. convenz."
|
||||
MESSAGE SHOW,F_NOLCICTE|SHOW,F_VCARTCLITE
|
||||
ITEM "5|Fisso su dot. iniziale"
|
||||
MESSAGE HIDE,F_NOLCICTE|HIDE,F_VCARTCLITE
|
||||
FLAGS "G"
|
||||
END
|
||||
|
||||
LISTBOX F_NOLCICTE 1 20
|
||||
BEGIN
|
||||
PROMPT 43 9 "In base a "
|
||||
ITEM "I|Dot. iniziale"
|
||||
ITEM "O|Dot. odierna"
|
||||
FIELD NOLCIC
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
LISTBOX F_VCARTCLITE 1 20
|
||||
BEGIN
|
||||
PROMPT 2 10 "Per "
|
||||
ITEM "A|Articolo"
|
||||
ITEM "C|Cliente"
|
||||
FIELD VCARTCLI
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 79 11
|
||||
BEGIN
|
||||
PROMPT 1 12 ""
|
||||
@ -657,7 +625,7 @@ BEGIN
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT S_CODART CODART
|
||||
OUTPUT S_DESCR DESCR
|
||||
OUTPUT S_PREZZOST COSTSTD
|
||||
OUTPUT S_VALCONV COSTSTD
|
||||
OUTPUT S_PPCONF PPCONF
|
||||
FIELD CODART
|
||||
CHECKTYPE REQUIRED
|
||||
@ -751,6 +719,7 @@ BEGIN
|
||||
ITEM "A|Articolo"
|
||||
ITEM "C|Cliente"
|
||||
FIELD VCARTCLI
|
||||
FLAGS "D"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
@ -794,12 +763,14 @@ BEGIN
|
||||
PROMPT 50 10 "Prezzo nolo"
|
||||
FLAGS "U"
|
||||
FIELD PREZNOL
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
CURRENCY S_IMPFISART 15
|
||||
BEGIN
|
||||
PROMPT 2 11 "Imp.fisso "
|
||||
FIELD IMPFISART
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
CURRENCY S_VALCONV 15
|
||||
@ -921,7 +892,7 @@ END
|
||||
|
||||
NUMBER S_PPCONF 15 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Pezzi per Confezione "
|
||||
PROMPT 2 1 "Pezzi per Pacco "
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user