Patch level :10.0 450

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
aggiunto il file VETABMOD.TXT con la prima tabella di modulo delle vendite (SCC); viene aggiunto al modulo VE e andrà gestito in installazione (vedere il bainst delle vendite)
rimosso VETBMOD.TXT causa nome errato
Iniziato il lavoro allucinante per il ricarico listini


git-svn-id: svn://10.65.10.50/trunk@19317 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2009-09-21 14:57:03 +00:00
parent f80d1f31a6
commit fe29882521
7 changed files with 257 additions and 72 deletions

View File

@ -3,14 +3,17 @@
#include <printer.h>
#include <tabapp.h>
#include "vetbnum.h"
#include "velib.h"
#include "../ca/calib01.h"
#include "vetbspp.h"
#include "vetbatr.h"
#include "vetbgmc.h"
#include "vetbnum.h"
#include "vetbprs.h"
#include "vetbrss.h"
#include "vetbatr.h"
#include "vetbspp.h"
#define TAB_GRMERC "GMC"
///////////////////////////////////////////////////////////
// TVendite_mask
@ -128,6 +131,9 @@ protected:
virtual int read(TMask& m);
virtual int write(const TMask& m);
virtual int rewrite(const TMask& m);
virtual bool user_create();
void write_gmc(const TMask& m, TRectype& curr);
static bool codgmc_handler(TMask_field& f, KEY k);
bool is_table(const char* tab) const { return get_tabname() == tab; }
@ -255,6 +261,7 @@ int TVendite_tabapp::read(TMask& m)
if (err == NOERR)
{
const TRectype& curr = get_relation()->curr();
if (curr.get_real("R10").is_zero())
{
const TString& r0 = curr.get("R0");
@ -267,14 +274,86 @@ int TVendite_tabapp::read(TMask& m)
if (is_table("ATR"))
m.set(ATR_PREZZO, r0);
}
//in caso dei grmerc sono cazzi, perchè lo sheet va riempito usando il contenuto di S1 ed S2, che sono tokenstring..
//..di tokenstrings!
if (is_table("GMC"))
{
//intanto deve controllare da configurazione se enablare o meno la colonna CATVEN
TSheet_field& listini = m.sfield(F_RIGHE_LIS);
listini.enable_column(S_CATVEN, ini_get_bool(CONFIG_DITTA, "ve", "GESLISCV"));
TToken_string stringona(140, ';');
TString s = curr.get("S1");
if (s.full())
{
stringona.add(s);
s = curr.get("S2");
if (s.full())
stringona.add(s);
}
listini.destroy();
FOR_EACH_TOKEN(stringona, str)
{
listini.row(-1) = str;
listini.check_row(listini.items() - 1);
}
listini.force_update();
}
}
return err;
}
bool TVendite_tabapp::codgmc_handler(TMask_field& f, KEY k)
{
TMask& m = f.mask();
if (m.query_mode() && k == K_ENTER)
{
const TString& codice = m.get(f.dlg()); //stringa immessa nella maschera
const TString& codtab = cache().get("GMC", codice, "CODTAB"); //stringa cercata nella tabella
if (codtab.empty()) //se non trovi la stringa in tabella (in codice magazzino non esiste->se in insert mode)
{
const int lungh = codice.len();
if (lungh > 0 && lungh < 3)
return f.error_box("Il codice del gruppo merceologico deve avere obbligatoriamente lunghezza 3");
}
}
return true;
}
void TVendite_tabapp::write_gmc(const TMask& m, TRectype& curr)
{
//la tabella gmc è + incasinata causa la presenza di uno sheet che va salvato come tokenstring(;separated)..
//di tokenstrings(|separated) in uno o due campi alfanumerici
TSheet_field& listini = m.sfield(F_RIGHE_LIS);
TToken_string s1(70, ';'), s2(70, ';');
FOR_EACH_SHEET_ROW (listini, r, riga)
{
TToken_string mini_string(12, '|');
mini_string.add(riga->get(0)); //catven
mini_string.add(riga->get()); //codlis
mini_string.add(riga->get()); //ricarico
mini_string.trim();
if (!mini_string.empty_items())
{
if (s1.len() + mini_string.len() < 70)
s1.add(mini_string);
else
{
if (s2.len() + mini_string.len() < 70)
s2.add(mini_string);
}
}
}
curr.put("S1", s1);
curr.put("S2", s2);
}
int TVendite_tabapp::write(const TMask& m)
{
const TString& table_name = get_tabname();
TRectype& curr = get_relation()->curr();
if (is_table("SPP"))
curr.put("R0", m.get(SPP_PREZZO)); else
@ -284,14 +363,16 @@ int TVendite_tabapp::write(const TMask& m)
curr.put("R0", m.get(RSS_PREZZO)); else
if (is_table("ATR"))
curr.put("R0", m.get(ATR_PREZZO));
if (is_table("GMC"))
write_gmc(m ,curr);
return Tab_application::write(m);
}
int TVendite_tabapp::rewrite(const TMask& m)
{
const TString& table_name = get_tabname();
TRectype& curr = get_relation()->curr();
if (is_table("SPP"))
curr.put("R0", m.get(SPP_PREZZO)); else
if (is_table("PRS"))
@ -300,10 +381,28 @@ int TVendite_tabapp::rewrite(const TMask& m)
curr.put("R0", m.get(RSS_PREZZO)); else
if (is_table("ATR"))
curr.put("R0", m.get(ATR_PREZZO));
if (is_table("GMC"))
write_gmc(m ,curr);
return Tab_application::rewrite(m);
}
bool TVendite_tabapp::user_create()
{
bool ok = TTable_application::user_create();
if (ok)
{
const TString& name = get_tabname();
TMask& mask = *get_mask();
if (name == TAB_GRMERC)
mask.set_handler(201, codgmc_handler);
}
return ok;
}
int ve0400(int argc, char* argv[])
{
TVendite_tabapp vta;

View File

@ -1,10 +1,5 @@
#include <xvt.h>
extern int ve2100(int argc, char* argv[]); // tabelle sconti (di riga/di documento/incondizionati)
extern int ve2200(int argc, char* argv[]); // testate listini/contratti/offerte
extern int ve2300(int argc, char* argv[]); // righe listini/contratti/offerte
extern int ve2400(int argc, char* argv[]); // anagrafica di magazzino
extern int ve2600(int argc, char* argv[]); // relazioni articoli livelli di giacenza
#include "ve2.h"
int main( int argc, char** argv)
{

View File

@ -1,17 +1,11 @@
#ifndef __VE2_H
#define __VE2_H
#ifdef MAIN
#define extern
#endif
int ve2100(int argc, char* argv[]); // Tabella testate listini e righe listini
int ve2200(int argc, char* argv[]); // Archivio contratti e righe contratti
int ve2300(int argc, char* argv[]); // Archivio indirizzo clienti
#ifdef MAIN
#undef extern
#endif
int ve2100(int argc, char* argv[]); // tabelle sconti (di riga/di documento/incondizionati)
int ve2200(int argc, char* argv[]); // testate listini/contratti/offerte
int ve2300(int argc, char* argv[]); // righe listini/contratti/offerte
int ve2400(int argc, char* argv[]); // anagrafica di magazzino
int ve2600(int argc, char* argv[]); // relazioni articoli livelli di giacenza
#endif

View File

@ -85,11 +85,11 @@ Caption = "Tabelle magazzino"
Picture = <ve00>
Module = 0
Flags = ""
Item_01 = "Gruppi merceologici", "ba3 -0 GMC", "F"
Item_02 = "Magazzini e depositi", "ba3 -0 MAG", "F"
Item_01 = "Gruppi merceologici", "ve0 -4 GMC", "F"
Item_02 = "Magazzini e depositi", "mg0 -0 MAG", "F"
Item_03 = "Unita' di misura", "ve0 -4 %UMS", ""
Item_04 = "Province d'origine", "ve0 -4 %PRV", ""
Item_05 = "Classi fiscali articoli", "ba3 -0 ASF", "F"
Item_05 = "Classi fiscali articoli", "ve0 -4 ASF", "F"
Item_06 = "Categorie ricavi articoli", "ve0 -4 CRA", "F"
Item_07 = "Categorie acquisti articoli", "ve0 -4 CAA", "F"
Item_08 = "Raggrupp. fiscali articoli", "ve0 -4 RFA", "F"
@ -99,7 +99,7 @@ Item_11 = "Causali magazzino", "mg0 -0 %CAU", ""
Item_12 = "Gruppi codice articoli", "mg0 -0 GCA", "F"
Item_13 = "Gruppi codice giacenze", "mg0 -0 GCG", "F"
Item_14 = "Gruppi cod. art. avanzati", "mg0 -0 GSA", "F"
Item_15 = "Ubicazioni", "ba3 -0 UBI", "F"
Item_15 = "Ubicazioni", "mg0 -0 UBI", "F"
[ACQVEN_007]
Caption = "Stampa tabelle"

View File

@ -1,19 +1,29 @@
#define F_CODGRU 101
#define F_DESGRU 102
#define F_CODSGR 103
#define F_DESSGR 104
#define H_CODGRU 105
#define H_DESGRU 106
#define F_CODIVARIF 107
#define F_CODIVARIF1 108
#define F_GRUPPOA 109
#define F_CONTOA 110
#define F_SOTTOCA 111
#define F_DESCRA 112
#define F_GRUPPOV 113
#define F_CONTOV 114
#define F_SOTTOCV 115
#define F_DESCRV 116
#define F_SCONTO 117
#define F_RICARICO 118
#define F_CODGRU 201
#define F_DESGRU 202
#define F_CODSGR 203
#define F_DESSGR 204
#define H_CODGRU 205
#define H_DESGRU 206
#define F_CODIVARIF 207
#define F_CODIVARIF1 208
#define F_GRUPPOA 209
#define F_CONTOA 210
#define F_SOTTOCA 211
#define F_DESCRA 212
#define F_GRUPPOV 213
#define F_CONTOV 214
#define F_SOTTOCV 215
#define F_DESCRV 216
#define F_SCONTO 217
#define F_RICARICO 218
#define F_RIGHE_LIS 219
//righe sheet
#define S_CATVEN 101
#define S_CODLIS 102
#define S_RICARICO 103
#define S_DESLIS 104
#define S_DESCAT 110

View File

@ -1,14 +1,12 @@
#include "vetbgmc.h"
TOOLBAR "Toolbar" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Gruppi merceologici " 0 0 0 0
PAGE "Gruppi merceologici " 0 2 0 0
GROUPBOX DLG_NULL 78 7
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 0 ""
FLAGS "R"
@ -16,7 +14,7 @@ END
STRING F_CODGRU 3
BEGIN
PROMPT 2 2 "Codice gruppo "
PROMPT 2 1 "Gruppo "
FLAG "U"
FIELD CODTAB[1,3]
KEY 1
@ -32,7 +30,7 @@ END
STRING F_CODSGR 2
BEGIN
PROMPT 35 2 "Codice sottogruppo "
PROMPT 2 2 "Sottogruppo "
FIELD CODTAB[4,5]
FLAGS "U"
KEY 1
@ -56,7 +54,7 @@ END
STRING H_CODGRU 3
BEGIN
PROMPT 2 1 "Codice gruppo "
PROMPT 2 1 "Gruppo "
FLAG "U"
FLAGS "H"
COPY USE F_CODGRU
@ -68,13 +66,13 @@ END
STRING F_DESGRU 50
BEGIN
PROMPT 2 4 "Descrizione gruppo "
PROMPT 20 1 ""
FLAGS "D"
END
STRING F_DESSGR 50
BEGIN
PROMPT 2 5 "Descrizione sottogruppo "
PROMPT 20 2 ""
FIELD S0
USE GMC KEY 2
KEY 2
@ -90,7 +88,7 @@ END
STRING H_DESGRU 50
BEGIN
PROMPT 2 4 "Descrizione gruppo "
PROMPT 20 1 ""
FIELD S0
KEY 2
USE GMC KEY 2
@ -107,7 +105,7 @@ END
STRING F_CODIVARIF 4
BEGIN
PROMPT 2 8 "Codice IVA "
PROMPT 2 5 "Codice IVA "
FIELD S7
USE %IVA
INPUT CODTAB F_CODIVARIF
@ -120,7 +118,7 @@ END
STRING F_CODIVARIF1 50
BEGIN
PROMPT 25 8 ""
PROMPT 25 5 ""
USE %IVA KEY 2
INPUT S0 F_CODIVARIF1
DISPLAY "Descrizione@50" S0
@ -132,17 +130,17 @@ END
NUMBER F_GRUPPOV 3
BEGIN
PROMPT 2 10 "Conto vendita "
FIELD I3
PROMPT 2 7 "Conto vendita "
FIELD I3
END
NUMBER F_CONTOV 3
BEGIN
PROMPT 22 10 ""
PROMPT 22 7 ""
FIELD I4
USE LF_PCON SELECT INDBIL=="4"
INPUT GRUPPO F_GRUPPOV
INPUT CONTO F_CONTOV
INPUT GRUPPO F_GRUPPOV
INPUT CONTO F_CONTOV
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
@ -155,7 +153,7 @@ END
NUMBER F_SOTTOCV 6
BEGIN
PROMPT 30 10 ""
PROMPT 30 7 ""
FIELD I5
USE LF_PCON SELECT (SOTTOCONTO!="") && (500@->INDBIL=="4")
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
@ -177,7 +175,7 @@ END
STRING F_DESCRV 50
BEGIN
PROMPT 17 11 ""
PROMPT 17 8 ""
FLAG "U"
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") && (500@->INDBIL=="4")
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
@ -197,13 +195,13 @@ END
NUMBER F_GRUPPOA 3
BEGIN
PROMPT 2 13 "Conto acquisti "
PROMPT 2 10 "Conto acquisti "
FIELD I0
END
NUMBER F_CONTOA 3
BEGIN
PROMPT 22 13 ""
PROMPT 22 10 ""
FIELD I1
USE LF_PCON SELECT INDBIL=="3"
INPUT GRUPPO F_GRUPPOA
@ -220,7 +218,7 @@ END
NUMBER F_SOTTOCA 6
BEGIN
PROMPT 30 13 ""
PROMPT 30 10 ""
FIELD I2
USE LF_PCON SELECT (SOTTOCONTO!="") && (500@->INDBIL=="3")
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
@ -242,7 +240,7 @@ END
STRING F_DESCRA 50
BEGIN
PROMPT 17 14 ""
PROMPT 17 11 ""
FLAG "U"
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") && (500@->INDBIL=="3")
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
@ -262,17 +260,106 @@ END
STRING F_SCONTO 25
BEGIN
PROMPT 2 15 "Sconto "
FIELD S1
PROMPT 2 13 "Sconto "
FIELD S4
END
STRING F_RICARICO 25
BEGIN
PROMPT 2 16 "Ricarico "
FIELD S2
PROMPT 38 13 "Ricarico "
FIELD S5
END
TEXT -1
BEGIN
PROMPT 1 15 "@bRicarichi per listino"
END
SPREADSHEET F_RIGHE_LIS 78 7
BEGIN
PROMPT 1 16 ""
ITEM "Cat."
ITEM "Listino"
ITEM "Ricarico"
ITEM "Descrizione@50"
END
ENDPAGE
ENDMASK
//maschera di riga dello sheet
PAGE "Riga ricarico listino" -1 -1 78 8
STRING S_CATVEN 2
BEGIN
PROMPT 1 1 "Cat. vendita "
USE CVE
INPUT CODTAB S_CATVEN
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT S_CATVEN CODTAB
OUTPUT S_DESCAT S0
CHECKTYPE REQUIRED
WARNING "La categoria di vendita è assente!"
FLAGS "UD"
END
STRING S_DESCAT 50
BEGIN
PROMPT 23 1 ""
FLAGS "D"
END
STRING S_CODLIS 3
BEGIN
PROMPT 1 2 "Codice listino "
USE LF_CONDV
INPUT TIPO "L"
INPUT CATVEN S_CATVEN SELECT
INPUT COD S_CODLIS
DISPLAY "Cat." CATVEN
DISPLAY "Codice" COD
DISPLAY "Descrizione@50" DESCR
OUTPUT S_CODLIS COD
OUTPUT S_DESLIS DESCR
CHECKTYPE REQUIRED
WARNING "Il codice listino è assente!"
FLAGS "UZ"
END
STRING S_DESLIS 50
BEGIN
PROMPT 23 2 ""
FLAGS "D"
END
STRING S_RICARICO 5
BEGIN
PROMPT 1 3 "Ricarico "
CHECKTYPE REQUIRED
WARNING "Il ricarico è nullo!"
END
ENDPAGE
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK