Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/branches/R_10_00@21560 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5a50634021
commit
b5c833d899
132
ha/ha1300.cpp
132
ha/ha1300.cpp
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include "halib.h"
|
#include "halib.h"
|
||||||
#include "ha1300a.h"
|
#include "ha1300a.h"
|
||||||
|
#include "ha1301a.h"
|
||||||
|
|
||||||
#define UPLOAD_FILE "upload.d"
|
#define UPLOAD_FILE "upload.d"
|
||||||
|
|
||||||
@ -238,7 +239,7 @@ THardy_upload_recordset::THardy_upload_recordset(const TFilename& filename)
|
|||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TAutomask
|
// TAutomask : maschera principale
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
class TUpload2Campo_mask : public TAutomask
|
class TUpload2Campo_mask : public TAutomask
|
||||||
{
|
{
|
||||||
@ -261,6 +262,28 @@ TUpload2Campo_mask::TUpload2Campo_mask() : TAutomask ("ha1300a")
|
|||||||
set(F_PATH, path);
|
set(F_PATH, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TAutomask : maschera secondaria per inserimento nuovo cliente
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
class TUpload2Campo_newcli_mask : public TAutomask
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
public:
|
||||||
|
TUpload2Campo_newcli_mask();
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TUpload2Campo_newcli_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
TUpload2Campo_newcli_mask::TUpload2Campo_newcli_mask() : TAutomask ("ha1301a")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
// TSkeleton_application
|
// TSkeleton_application
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
@ -362,29 +385,66 @@ void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log
|
|||||||
//se invece il cliente ha un codice normale -> è un aggiornamento dei suoi dati -> controlla che esista davvero
|
//se invece il cliente ha un codice normale -> è un aggiornamento dei suoi dati -> controlla che esista davvero
|
||||||
if (codcf <= 0)
|
if (codcf <= 0)
|
||||||
{
|
{
|
||||||
//questa è un surrogato della get_next_cli
|
//questa è un surrogato della get_next_cli considerando che vanno riempiti i clienti della serie 200000..
|
||||||
|
//..prima di intaccare eventuali clienti della serie 300000
|
||||||
file_clifo.zero();
|
file_clifo.zero();
|
||||||
file_clifo.put(CLI_TIPOCF, 'C');
|
file_clifo.put(CLI_TIPOCF, 'C');
|
||||||
file_clifo.read(_isgteq);
|
file_clifo.put(CLI_CODCF, 300000);
|
||||||
if (file_clifo.good())
|
int err = file_clifo.read(_isgteq);
|
||||||
file_clifo.prev() ;
|
codcf = 1;
|
||||||
file_clifo.setstatus(NOERR);
|
if (err == NOERR)
|
||||||
if (file_clifo.good())
|
{
|
||||||
|
file_clifo.prev();
|
||||||
codcf += file_clifo.get_long(CLI_CODCF);
|
codcf += file_clifo.get_long(CLI_CODCF);
|
||||||
|
}
|
||||||
|
|
||||||
//finestra propositiva del nuovo codcf
|
//La finestra propositiva per ora non viene usata!
|
||||||
|
//finestra propositiva del nuovo codcf; viene proposto il codcf calcolato come ultimo + 1, ma l'utonto potrebbe..
|
||||||
|
//..decidere di andare a riempire un qualche 'buco' precedentemente alla cazzo creato!!
|
||||||
|
/* TUpload2Campo_newcli_mask newcli_mask;
|
||||||
|
newcli_mask.set(F_CODCF, codcf);
|
||||||
|
FOR_EACH_MASK_FIELD(newcli_mask, f, fld)
|
||||||
|
{
|
||||||
|
const TFieldref* fr = fld->field();
|
||||||
|
if (fr != NULL)
|
||||||
|
fld->set(recset.get(fr->name()).as_string());
|
||||||
|
}
|
||||||
|
if (newcli_mask.run() == K_ENTER)
|
||||||
|
{*/
|
||||||
|
|
||||||
|
//aggiunge il cliente nuovo ricodificato all'array dei nuovi clienti in modo da ricordarsi chi era..
|
||||||
|
//..quando loritroverà nei record di tipo TF,RF,SI; lo in ogni modo perchè serve anche in caso di simulazione!
|
||||||
|
const TString& str_new_codcf = recset.get("CodiceCliente").as_string();
|
||||||
|
_nuovi_clienti.add(str_new_codcf, real(codcf));
|
||||||
|
|
||||||
file_clifo.zero();
|
file_clifo.zero();
|
||||||
file_clifo.put(CLI_TIPOCF, 'C');
|
file_clifo.put(CLI_TIPOCF, 'C');
|
||||||
file_clifo.put(CLI_CODCF, codcf);
|
file_clifo.put(CLI_CODCF, codcf);
|
||||||
file_clifo.write();
|
|
||||||
|
|
||||||
//aggiunge il cliente nuovo ricodificato all'array dei nuovi clienti in modo da ricordarsi chi era..
|
//ATTENZIONE!! In caso di simulazione ci si ferma qui perchè non si potrebbe inserire alcun dato, visto che..
|
||||||
//..quando loritroverà nei record di tipo TF,RF,SI
|
//_can_write è comunque falso!
|
||||||
const TString& str_new_codcf = recset.get("CodiceCliente").as_string();
|
if (_can_write)
|
||||||
_nuovi_clienti.add(str_new_codcf, real(codcf));
|
file_clifo.write();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString msg;
|
||||||
|
msg << "Nuovo cliente con codice provvisorio: " << str_new_codcf << "da registrare in Campo con il codice: " << codcf;
|
||||||
|
log.log(0, msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_can_write = false;
|
||||||
|
TString msg;
|
||||||
|
msg << "Annullata importazione cliente " << codcf;
|
||||||
|
log.log(2, msg);
|
||||||
|
codcf = 0L;
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//il cliente, se non nuovo, deve esistere!
|
//il cliente, se non nuovo, deve esistere!
|
||||||
file_clifo.put(CLI_TIPOCF, 'C');
|
file_clifo.put(CLI_TIPOCF, 'C');
|
||||||
file_clifo.put(CLI_CODCF, codcf);
|
file_clifo.put(CLI_CODCF, codcf);
|
||||||
@ -409,6 +469,9 @@ void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log
|
|||||||
file_clifo.put(CLI_LOCCF, localita);
|
file_clifo.put(CLI_LOCCF, localita);
|
||||||
const TString& cap = recset.get("CAP").as_string();
|
const TString& cap = recset.get("CAP").as_string();
|
||||||
file_clifo.put(CLI_CAPCF, cap);
|
file_clifo.put(CLI_CAPCF, cap);
|
||||||
|
//modo semi-intelligente per cercare il comune dato il cap e la località
|
||||||
|
const TString& codcom = cap2comune(cap, localita);
|
||||||
|
file_clifo.put(CLI_COMCF, codcom);
|
||||||
//la provincia non serve perchè si passa dal codice del comune
|
//la provincia non serve perchè si passa dal codice del comune
|
||||||
//const TString& provincia = recset.get("Provincia").as_string();
|
//const TString& provincia = recset.get("Provincia").as_string();
|
||||||
const TString& piva = recset.get("PartitaIVA").as_string();
|
const TString& piva = recset.get("PartitaIVA").as_string();
|
||||||
@ -419,11 +482,20 @@ void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log
|
|||||||
file_clifo.put(CLI_COFI, cofi);
|
file_clifo.put(CLI_COFI, cofi);
|
||||||
|
|
||||||
//campi cfven
|
//campi cfven
|
||||||
|
//prima cerca se il record di questo c+codcf esiste già sul cfven
|
||||||
TLocalisamfile file_cfven(LF_CFVEN);
|
TLocalisamfile file_cfven(LF_CFVEN);
|
||||||
file_cfven.put(CFV_TIPOCF, 'C');
|
file_cfven.put(CFV_TIPOCF, 'C');
|
||||||
file_cfven.put(CFV_CODCF, codcf);
|
file_cfven.put(CFV_CODCF, codcf);
|
||||||
err = file_cfven.read();
|
err = file_cfven.read();
|
||||||
|
//se non c'è lo crea!
|
||||||
|
if (err != NOERR)
|
||||||
|
{
|
||||||
|
file_cfven.zero();
|
||||||
|
file_cfven.put(CFV_TIPOCF, 'C');
|
||||||
|
file_cfven.put(CFV_CODCF, codcf);
|
||||||
|
err = file_cfven.write();
|
||||||
|
}
|
||||||
|
//se la creazione non va a buon fine avverte
|
||||||
if (err != NOERR)
|
if (err != NOERR)
|
||||||
{
|
{
|
||||||
_can_write = false;
|
_can_write = false;
|
||||||
@ -460,11 +532,6 @@ void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log
|
|||||||
log.log(2, msg);
|
log.log(2, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else //..sennò avverte e basta
|
|
||||||
{
|
|
||||||
msg.insert("Controllato cliente: ", 0);
|
|
||||||
log.log(0, msg);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -645,10 +712,11 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
|
|||||||
doc.put(DOC_TIPOCF, "C");
|
doc.put(DOC_TIPOCF, "C");
|
||||||
|
|
||||||
//se il cliente è nuovo, ovvero aggiunto in un record di tipo VC precedentemente letto,..
|
//se il cliente è nuovo, ovvero aggiunto in un record di tipo VC precedentemente letto,..
|
||||||
//..deve stabilire quale è il suo codcf campesco già determinato
|
//..deve stabilire quale è il suo codcf campesco già determinato (è il caso dei codcf con *)
|
||||||
long codcf = 0L;
|
long codcf = 0L;
|
||||||
const TString& str_codcf = recset.get(DOC_CODCF).as_string();
|
const TString& str_codcf = recset.get(DOC_CODCF).as_string();
|
||||||
if (str_codcf.find('*' >= 0))
|
const bool new_cliente = str_codcf.find('*') >= 0;
|
||||||
|
if (new_cliente)
|
||||||
{
|
{
|
||||||
const real* ptr = (const real*)_nuovi_clienti.objptr(str_codcf);
|
const real* ptr = (const real*)_nuovi_clienti.objptr(str_codcf);
|
||||||
codcf = ptr ? ptr->integer() : 0L;
|
codcf = ptr ? ptr->integer() : 0L;
|
||||||
@ -656,16 +724,20 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
|
|||||||
else
|
else
|
||||||
codcf = atol(str_codcf);
|
codcf = atol(str_codcf);
|
||||||
|
|
||||||
TToken_string key_clifo;
|
//controllo effettuabile solo se il cliente è già presente (vecchio o nuovo aggiunto con la importa_VC se era _can_write)
|
||||||
key_clifo.add("C");
|
if (!new_cliente || _can_write)
|
||||||
key_clifo.add(codcf);
|
|
||||||
const long cliente = atol(cache().get(LF_CLIFO, key_clifo, CLI_CODCF));
|
|
||||||
if (cliente != codcf)
|
|
||||||
{
|
{
|
||||||
_can_write = false;
|
TToken_string key_clifo;
|
||||||
TString msg;
|
key_clifo.add("C");
|
||||||
msg << "Codice cliente " << codcf << " sconosciuto";
|
key_clifo.add(codcf);
|
||||||
log.log(2, msg);
|
const long cliente = atol(cache().get(LF_CLIFO, key_clifo, CLI_CODCF));
|
||||||
|
if (cliente != codcf)
|
||||||
|
{
|
||||||
|
_can_write = false;
|
||||||
|
TString msg;
|
||||||
|
msg << "Codice cliente " << codcf << " sconosciuto";
|
||||||
|
log.log(2, msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
doc.put(DOC_CODCF, codcf);
|
doc.put(DOC_CODCF, codcf);
|
||||||
|
11
ha/ha1301a.h
Executable file
11
ha/ha1301a.h
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
//campi maschera immissione nuovo cliente
|
||||||
|
#define F_CODCF 201
|
||||||
|
#define F_RAGSOC 202
|
||||||
|
#define F_INDIRIZZO 203
|
||||||
|
#define F_LOCALITA 204
|
||||||
|
#define F_CAP 205
|
||||||
|
#define F_PIVA 206
|
||||||
|
#define F_COFI 207
|
||||||
|
#define F_CODPAG 208
|
||||||
|
#define F_CODLIS 209
|
||||||
|
#define F_STR_CODCF 210
|
82
ha/ha1301a.uml
Executable file
82
ha/ha1301a.uml
Executable file
@ -0,0 +1,82 @@
|
|||||||
|
#include "ha1301a.h"
|
||||||
|
|
||||||
|
PAGE "Importazione nuovo cliente da file upload" -1 -1 78 10
|
||||||
|
|
||||||
|
NUMBER F_CODCF 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Codice Campo "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_STR_CODCF 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 21 1 "Codice provvisorio "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD CodiceCliente
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSOC 34
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Ragsoc. "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD RagioneSociale
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_INDIRIZZO 34
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "Indirizzo "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD Indirizzo
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_LOCALITA 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 4 "Localita "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD Localita
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CAP 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 5 "C.A.P. "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD CAP
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_PIVA 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 6 "P. IVA "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD PartitaIVA
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_COFI 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 7 "C. Fisc. "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD CodiceFiscale
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODPAG 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 8 "Cod. Pag "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD CodicePagamento
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODLIS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 9 "Listino "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD CodiceListino
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
|
|
||||||
|
#include <stdbar.h>
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user