Patch level : 12.00 1348
Files correlati : ve0.exe ve0100o.msk ve1.exe Commento: Trasformazione clienti occasionali in normali
This commit is contained in:
parent
eef0f50876
commit
5d75fbb8ab
@ -30,5 +30,8 @@
|
|||||||
#define O_TEL2 125
|
#define O_TEL2 125
|
||||||
#define O_PTEL3 126
|
#define O_PTEL3 126
|
||||||
#define O_TEL3 127
|
#define O_TEL3 127
|
||||||
|
#define O_TIPOCF 128
|
||||||
|
#define O_CODCF 129
|
||||||
|
#define O_AGGCF 130
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -4,12 +4,12 @@ TOOLBAR "topbar" 0 0 0 2
|
|||||||
|
|
||||||
BUTTON DLG_OK 10 2
|
BUTTON DLG_OK 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -12 -1 ""
|
PROMPT -13 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 10 2
|
BUTTON DLG_CANCEL 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -22 -1 ""
|
PROMPT -33 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
@ -179,7 +179,7 @@ BEGIN
|
|||||||
INPUT CODTAB O_STATONAS
|
INPUT CODTAB O_STATONAS
|
||||||
COPY DISPLAY O_STATO
|
COPY DISPLAY O_STATO
|
||||||
OUTPUT O_STATONAS CODTAB
|
OUTPUT O_STATONAS CODTAB
|
||||||
//CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING O_COMUNENAS 4
|
STRING O_COMUNENAS 4
|
||||||
@ -286,6 +286,40 @@ BEGIN
|
|||||||
HELP "Numero telefonico terzo recapito"
|
HELP "Numero telefonico terzo recapito"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_ELABORA 12 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 22 "Crea Cliente"
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST O_TIPOCF 1 12
|
||||||
|
BEGIN
|
||||||
|
PROMPT 17 22 "Tipo "
|
||||||
|
ITEM " |Nessuno"
|
||||||
|
ITEM "C|Cliente"
|
||||||
|
ITEM "F|Fornitore"
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER O_CODCF 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 41 22 "Codice "
|
||||||
|
USE LF_CLIFO
|
||||||
|
INPUT TIPOCF O_TIPOCF SELECT
|
||||||
|
INPUT CODCF O_CODCF
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
|
DISPLAY "Partita IVA@12" PAIV
|
||||||
|
DISPLAY "Partita IVA@16" COFI
|
||||||
|
OUTPUT O_TIPOCF TIPOCF
|
||||||
|
OUTPUT O_CODCF CODCF
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN O_AGGCF
|
||||||
|
BEGIN
|
||||||
|
PROMPT 17 23 "Aggiorna dati cliente"
|
||||||
|
END
|
||||||
|
|
||||||
STRING DLG_NULL 50 32
|
STRING DLG_NULL 50 32
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 -1 "Ultimo aggiornamento "
|
PROMPT 1 -1 "Ultimo aggiornamento "
|
||||||
|
@ -1441,17 +1441,15 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool final_
|
|||||||
if (docs > 0)
|
if (docs > 0)
|
||||||
{
|
{
|
||||||
const bool mail_requested = (mode == out_mail || mode == out_signed_mail);
|
const bool mail_requested = (mode == out_mail || mode == out_signed_mail);
|
||||||
TProgress_monitor pi(docs, TR("Elaborazione documenti..."));
|
TProgind pi(docs, TR("Elaborazione documenti..."));
|
||||||
|
|
||||||
for (short loop = mail_requested ? 0 : 1; loop < 2; loop++)
|
for (short loop = mail_requested ? 0 : 1; loop < 2; loop++)
|
||||||
{
|
{
|
||||||
const bool mail_loop = (loop == 0);
|
const bool mail_loop = (loop == 0);
|
||||||
const bool print_loop = !mail_loop;
|
const bool print_loop = !mail_loop;
|
||||||
|
|
||||||
for (int i = 0; i < docs; i++)
|
for (int i = 0; pi.addstatus() && i < docs; i++)
|
||||||
{
|
{
|
||||||
if (!pi.add_status())
|
|
||||||
break;
|
|
||||||
|
|
||||||
doc.move_to(i);
|
doc.move_to(i);
|
||||||
|
|
||||||
const TString4 tipodoc = doc.get(DOC_TIPODOC).as_string();
|
const TString4 tipodoc = doc.get(DOC_TIPODOC).as_string();
|
||||||
|
@ -1201,8 +1201,6 @@ public:
|
|||||||
|
|
||||||
static bool universal_handler( TMask_field& f, KEY key);
|
static bool universal_handler( TMask_field& f, KEY key);
|
||||||
static bool occas_handler( TMask_field& f, KEY key );
|
static bool occas_handler( TMask_field& f, KEY key );
|
||||||
static bool occas_code_handler( TMask_field& f, KEY key );
|
|
||||||
static bool occas_cfpi_handler( TMask_field& f, KEY key );
|
|
||||||
static bool clifo_handler( TMask_field& f, KEY key );
|
static bool clifo_handler( TMask_field& f, KEY key );
|
||||||
static bool print_handler( TMask_field& f, KEY key );
|
static bool print_handler( TMask_field& f, KEY key );
|
||||||
static bool elabora_handler( TMask_field& f, KEY key );
|
static bool elabora_handler( TMask_field& f, KEY key );
|
||||||
|
@ -2280,36 +2280,87 @@ TMask* TDocumento_mask::ss_getmask(int numriga, TMask& fullmask)
|
|||||||
return &fullmask;
|
return &fullmask;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDocumento_mask::occas_code_handler(TMask_field& f, KEY key)
|
class TOccas_mask : public TAutomask
|
||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TDocumento_mask & _docmask;
|
||||||
if (key == K_TAB && (f.dirty() || !m.is_running()))
|
|
||||||
{
|
|
||||||
const TString& code = f.get();
|
|
||||||
if (code.full())
|
|
||||||
{
|
|
||||||
TRelation occas(LF_OCCAS);
|
|
||||||
occas.curr().put(OCC_CFPI, code);
|
|
||||||
if (occas.read(_isequal) == NOERR)
|
|
||||||
{
|
|
||||||
m.autoload(occas);
|
|
||||||
m.send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
|
|
||||||
m.send_key(K_TAB, O_COMUNENAS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TDocumento_mask::occas_cfpi_handler(TMask_field& f, KEY key)
|
protected:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
TOccas_mask(TDocumento_mask & m) : TAutomask("ve0100o"), _docmask(m) { }
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TOccas_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
if (key == K_ENTER)
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
const TMask& om = f.mask();
|
case O_CODICE:
|
||||||
if (om.field(O_COFI).empty() && om.field(O_PAIV).empty())
|
{
|
||||||
return f.error_box(TR("E' necessario specificare il codice fiscale o la partita IVA"));
|
if (e == fe_modify)
|
||||||
}
|
{
|
||||||
return true;
|
const TString& code = o.get();
|
||||||
|
|
||||||
|
if (code.full())
|
||||||
|
{
|
||||||
|
TRelation occas(LF_OCCAS);
|
||||||
|
occas.curr().put(OCC_CFPI, code);
|
||||||
|
if (occas.read(_isequal) == NOERR)
|
||||||
|
{
|
||||||
|
autoload(occas);
|
||||||
|
field(O_BYMAIL).on_hit();;
|
||||||
|
send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
|
||||||
|
send_key(K_TAB, O_COMUNENAS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case O_COFI:
|
||||||
|
case O_PAIV:
|
||||||
|
if (e == fe_close)
|
||||||
|
{
|
||||||
|
if (field(O_COFI).empty() && field(O_PAIV).empty())
|
||||||
|
return error_box(TR("E' necessario specificare il codice fiscale o la partita IVA"));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DLG_ELABORA:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
TToken_string key(get(O_TIPOCF));
|
||||||
|
|
||||||
|
key.add(get(O_COFI));
|
||||||
|
|
||||||
|
const TRectype & cfcofi = cache().get(LF_CLIFO, key, 4);
|
||||||
|
|
||||||
|
set(O_AGGCF, true);
|
||||||
|
if (get(O_COFI).full() && cfcofi.full())
|
||||||
|
{
|
||||||
|
clear(O_AGGCF);
|
||||||
|
set(O_CODCF, cfcofi.get(CLI_CODCF));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (get(O_PAIV).full())
|
||||||
|
{
|
||||||
|
key = get(O_TIPOCF);
|
||||||
|
key.add(get(O_STATOPAIV));
|
||||||
|
key.add(get(O_PAIV));
|
||||||
|
|
||||||
|
const TRectype & cfpaiv = cache().get(LF_CLIFO, key, 5);
|
||||||
|
|
||||||
|
if (cfpaiv.full())
|
||||||
|
{
|
||||||
|
clear(O_AGGCF);
|
||||||
|
set(O_CODCF, cfcofi.get(CLI_CODCF));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDocumento_mask::occas_handler( TMask_field& f, KEY key )
|
bool TDocumento_mask::occas_handler( TMask_field& f, KEY key )
|
||||||
@ -2319,41 +2370,131 @@ bool TDocumento_mask::occas_handler( TMask_field& f, KEY key )
|
|||||||
{
|
{
|
||||||
TDocumento& doc = m.doc();
|
TDocumento& doc = m.doc();
|
||||||
TOccasionale& occ = doc.occas();
|
TOccasionale& occ = doc.occas();
|
||||||
|
TOccas_mask occas_mask(m);
|
||||||
TMask occas_mask("ve0100o");
|
|
||||||
occas_mask.set_handler(O_CODICE, occas_code_handler );
|
|
||||||
occas_mask.set_handler(O_COFI, occas_cfpi_handler );
|
|
||||||
occas_mask.set_handler(O_PAIV, occas_cfpi_handler );
|
|
||||||
|
|
||||||
for (int i = occas_mask.fields() - 1; i >= 0; i--)
|
for (int i = occas_mask.fields() - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
TMask_field& f = occas_mask.fld(i);
|
TMask_field& f = occas_mask.fld(i);
|
||||||
const TFieldref* c = f.field();
|
const TFieldref* c = f.field();
|
||||||
|
|
||||||
if (c)
|
if (c)
|
||||||
f.set(c->read(occ));
|
f.set(c->read(occ));
|
||||||
}
|
}
|
||||||
|
|
||||||
const TString& cf = occas_mask.get(O_COFI);
|
const TString& cf = occas_mask.get(O_COFI);
|
||||||
|
|
||||||
if (cf.full() && atoi(cf.mid(9, 2)) > 40)
|
if (cf.full() && atoi(cf.mid(9, 2)) > 40)
|
||||||
occas_mask.set(O_SESSO, "F");
|
occas_mask.set(O_SESSO, "F");
|
||||||
|
occas_mask.set(O_TIPOCF, m.doc().get(DOC_TIPOCF));
|
||||||
|
|
||||||
if (occas_mask.run() != K_ESC)
|
if (occas_mask.run() != K_ESC)
|
||||||
{
|
{
|
||||||
const TString ocfpi(occas_mask.get(O_CODICE));
|
long codcf = occas_mask.get_long(O_CODCF);
|
||||||
doc.put(DOC_OCFPI, ocfpi);
|
|
||||||
m.set(F_OCFPI, ocfpi);
|
if (codcf != 0L || occas_mask.get_bool(O_AGGCF))
|
||||||
|
|
||||||
for (int i = occas_mask.fields() - 1; i >= 0; i--)
|
|
||||||
{
|
{
|
||||||
const TMask_field& f = occas_mask.fld(i);
|
TRectype clifor(LF_CLIFO);
|
||||||
const TFieldref* c = f.field();
|
|
||||||
if (c)
|
if (codcf == 0L)
|
||||||
{
|
{
|
||||||
const char* val = f.get();
|
clifor.put(CLI_TIPOCF, doc.get(DOC_TIPOCF));
|
||||||
c->write(val, occ);
|
TCursor clifo(new TRelation(LF_CLIFO), "", 1, &clifor, &clifor);
|
||||||
}
|
const int items = clifo.items();
|
||||||
|
|
||||||
|
if (items > 0L)
|
||||||
|
codcf = clifo.last().get_long(CLI_CODCF);
|
||||||
|
codcf++;
|
||||||
|
clifor.zero();
|
||||||
|
clifor.put(CLI_TIPOCF, doc.get(DOC_TIPOCF));
|
||||||
|
clifor.put(CLI_CODCF, codcf);
|
||||||
|
|
||||||
|
const int err = clifor.write();
|
||||||
|
|
||||||
|
if (err != NOERR)
|
||||||
|
return error_box(FR("Errore in creazione %s %ld n. %d"), doc.get(DOC_TIPOCF) == "C" ? "Cliente" : "Fornitore", codcf, err);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TToken_string key(doc.get(DOC_TIPOCF));
|
||||||
|
|
||||||
|
key.add(codcf);
|
||||||
|
|
||||||
|
clifor = (TRectype &)cache().get(LF_CLIFO, key);
|
||||||
|
|
||||||
|
if (clifor.empty())
|
||||||
|
{
|
||||||
|
clifor.zero();
|
||||||
|
clifor.put(CLI_TIPOCF, doc.get(DOC_TIPOCF));
|
||||||
|
clifor.put(CLI_CODCF, codcf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
clifor.put(CLI_RAGSOC, occas_mask.get(O_RAGSOC));
|
||||||
|
clifor.put(CLI_STATOCF, occas_mask.get(O_STATO));
|
||||||
|
clifor.put(CLI_COMCF, occas_mask.get(O_COMUNE));
|
||||||
|
clifor.put(CLI_CAPCF, occas_mask.get(O_CAP));
|
||||||
|
clifor.put(CLI_INDCF, occas_mask.get(O_INDIRIZZO));
|
||||||
|
clifor.put(CLI_CIVCF, occas_mask.get(O_NUMERO));
|
||||||
|
clifor.put(CLI_COFI, occas_mask.get(O_COFI));
|
||||||
|
clifor.put(CLI_STATOPAIV, occas_mask.get(O_STATOPAIV));
|
||||||
|
clifor.put(CLI_PAIV, occas_mask.get(O_PAIV));
|
||||||
|
clifor.put(CLI_SESSO, occas_mask.get(O_SESSO));
|
||||||
|
clifor.put(CLI_DATANASC, occas_mask.get(O_DATANAS));
|
||||||
|
clifor.put(CLI_STATONASC, occas_mask.get(O_STATONAS));
|
||||||
|
clifor.put(CLI_COMNASC, occas_mask.get(O_COMUNENAS));
|
||||||
|
clifor.put(CLI_LOCCF, occas_mask.get(O_LOCALITA));
|
||||||
|
clifor.put(CLI_REFERENTE, occas_mask.get(O_REFERENTE));
|
||||||
|
clifor.put(CLI_BYMAIL, occas_mask.get(O_BYMAIL));
|
||||||
|
clifor.put(CLI_MAIL, occas_mask.get(O_MAIL));
|
||||||
|
clifor.put(CLI_DOCMAIL, occas_mask.get(O_DOCMAIL));
|
||||||
|
clifor.put(CLI_PEC, occas_mask.get(O_PEC));
|
||||||
|
clifor.put(CLI_PTEL, occas_mask.get(O_PTEL));
|
||||||
|
clifor.put(CLI_TEL, occas_mask.get(O_TEL));
|
||||||
|
clifor.put(CLI_PTEL2, occas_mask.get(O_PTEL2));
|
||||||
|
clifor.put(CLI_TEL2, occas_mask.get(O_TEL2));
|
||||||
|
clifor.put(CLI_PTEL3, occas_mask.get(O_PTEL3));
|
||||||
|
clifor.put(CLI_TEL3, occas_mask.get(O_TEL3));
|
||||||
|
|
||||||
|
const int err = clifor.rewrite();
|
||||||
|
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
const TString pag = m.get(F_CODPAG);
|
||||||
|
|
||||||
|
m.set(F_CODCF, (long)codcf, 0x3);
|
||||||
|
m.set(F_CODPAG, pag, 0x3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return error_box(FR("Errore in creazione aggiornamento %s %ld n. %d"), doc.get(DOC_TIPOCF) == "C" ? "Cliente" : "Fornitore", codcf, err);
|
||||||
|
|
||||||
|
TLocalisamfile occ(LF_OCCAS);
|
||||||
|
|
||||||
|
occ.put(OCC_CFPI, occas_mask.get(O_CODICE));
|
||||||
|
occ.remove();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const TString ocfpi(occas_mask.get(O_CODICE));
|
||||||
|
|
||||||
|
doc.put(DOC_OCFPI, ocfpi);
|
||||||
|
m.set(F_OCFPI, ocfpi);
|
||||||
|
|
||||||
|
for (int i = occas_mask.fields() - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
const TMask_field& f = occas_mask.fld(i);
|
||||||
|
const TFieldref* c = f.field();
|
||||||
|
|
||||||
|
if (c)
|
||||||
|
{
|
||||||
|
const char* val = f.get();
|
||||||
|
c->write(val, occ);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* int err = occ.rewrite();
|
||||||
|
|
||||||
|
if (err != NOERR)
|
||||||
|
error_box(FR("Errore %d"), err);*/
|
||||||
}
|
}
|
||||||
m.occ2mask();
|
|
||||||
}
|
}
|
||||||
f.set_focus( );
|
f.set_focus( );
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user