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 "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
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