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:
luca 2011-02-01 17:01:21 +00:00
parent 5a50634021
commit b5c833d899
3 changed files with 195 additions and 30 deletions

View File

@ -8,6 +8,7 @@
#include "halib.h"
#include "ha1300a.h"
#include "ha1301a.h"
#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
{
@ -261,6 +262,28 @@ TUpload2Campo_mask::TUpload2Campo_mask() : TAutomask ("ha1300a")
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
///////////////////////////////////////
@ -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
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.put(CLI_TIPOCF, 'C');
file_clifo.read(_isgteq);
if (file_clifo.good())
file_clifo.prev() ;
file_clifo.setstatus(NOERR);
if (file_clifo.good())
file_clifo.put(CLI_CODCF, 300000);
int err = file_clifo.read(_isgteq);
codcf = 1;
if (err == NOERR)
{
file_clifo.prev();
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.put(CLI_TIPOCF, 'C');
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..
//..quando loritroverà nei record di tipo TF,RF,SI
const TString& str_new_codcf = recset.get("CodiceCliente").as_string();
_nuovi_clienti.add(str_new_codcf, real(codcf));
//ATTENZIONE!! In caso di simulazione ci si ferma qui perchè non si potrebbe inserire alcun dato, visto che..
//_can_write è comunque falso!
if (_can_write)
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!
file_clifo.put(CLI_TIPOCF, 'C');
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);
const TString& cap = recset.get("CAP").as_string();
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
//const TString& provincia = recset.get("Provincia").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);
//campi cfven
//prima cerca se il record di questo c+codcf esiste già sul cfven
TLocalisamfile file_cfven(LF_CFVEN);
file_cfven.put(CFV_TIPOCF, 'C');
file_cfven.put(CFV_CODCF, codcf);
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)
{
_can_write = false;
@ -460,11 +532,6 @@ void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log
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");
//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;
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);
codcf = ptr ? ptr->integer() : 0L;
@ -656,16 +724,20 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
else
codcf = atol(str_codcf);
TToken_string key_clifo;
key_clifo.add("C");
key_clifo.add(codcf);
const long cliente = atol(cache().get(LF_CLIFO, key_clifo, CLI_CODCF));
if (cliente != codcf)
//controllo effettuabile solo se il cliente è già presente (vecchio o nuovo aggiunto con la importa_VC se era _can_write)
if (!new_cliente || _can_write)
{
_can_write = false;
TString msg;
msg << "Codice cliente " << codcf << " sconosciuto";
log.log(2, msg);
TToken_string key_clifo;
key_clifo.add("C");
key_clifo.add(codcf);
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);

11
ha/ha1301a.h Executable file
View 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
View 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