Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento : riporto hardy da 11 git-svn-id: svn://10.65.10.50/branches/R_10_00@20919 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
dbc3934086
commit
2b49469581
@ -22,7 +22,7 @@
|
||||
class TDocumenti_premio_msk : public TAutomask
|
||||
{
|
||||
protected:
|
||||
bool find_prezzo_articolo(const TString& codart, real& prezzo, TString& um) const;
|
||||
char find_prezzo_articolo(const TString& codart, real& prezzo, TString& um) const;
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
virtual bool on_key(KEY key);
|
||||
|
||||
@ -46,9 +46,9 @@ bool TDocumenti_premio_msk::on_key(KEY key)
|
||||
return TAutomask::on_key(key);
|
||||
}
|
||||
|
||||
bool TDocumenti_premio_msk::find_prezzo_articolo(const TString& codart, real& prezzo, TString& um) const
|
||||
char TDocumenti_premio_msk::find_prezzo_articolo(const TString& codart, real& prezzo, TString& um) const
|
||||
{
|
||||
//1) contratto
|
||||
//1) contratto (listino cliente)
|
||||
const long codcf = get_long(F_CODCF);
|
||||
const TString& codcontr = get(F_CODCONTR);
|
||||
|
||||
@ -59,7 +59,9 @@ bool TDocumenti_premio_msk::find_prezzo_articolo(const TString& codart, real& pr
|
||||
um = rec_umart.get(UMART_UM);
|
||||
const real umart_prezzo = rec_umart.get_real(UMART_PREZZO);
|
||||
|
||||
char origine_prezzo = 'A'; //'A'nagrafica
|
||||
prezzo = umart_prezzo; //mal che vada sarà il prezzo di umart
|
||||
|
||||
TToken_string key;
|
||||
|
||||
//CONTRATTI: tipo=C|catven=|tipocf=C|codcf=codcf|cod=codcontr|tiporiga=A|codriga=codart|um=um
|
||||
@ -82,7 +84,10 @@ bool TDocumenti_premio_msk::find_prezzo_articolo(const TString& codart, real& pr
|
||||
|
||||
//2) non c'è un prezzo sul contratto, prova con il listino standard
|
||||
if (!contratto_prezzo.is_zero())
|
||||
{
|
||||
prezzo = contratto_prezzo;
|
||||
origine_prezzo = 'C';
|
||||
}
|
||||
else
|
||||
{
|
||||
key.cut(0);
|
||||
@ -110,10 +115,13 @@ bool TDocumenti_premio_msk::find_prezzo_articolo(const TString& codart, real& pr
|
||||
const TRectype& rec_listino = cache().get(LF_RCONDV, key);
|
||||
const real listino_prezzo = rec_listino.get(RCONDV_PREZZO);
|
||||
if (!listino_prezzo.is_zero())
|
||||
{
|
||||
prezzo = listino_prezzo;
|
||||
origine_prezzo = 'L';
|
||||
}
|
||||
}
|
||||
|
||||
return !prezzo.is_zero();
|
||||
return origine_prezzo;
|
||||
}
|
||||
|
||||
bool TDocumenti_premio_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
@ -155,11 +163,23 @@ bool TDocumenti_premio_msk::on_field_event(TOperable_field& o, TField_event e, l
|
||||
real prezzo;
|
||||
TString4 um;
|
||||
//se il prezzo l'ha trovato lo mette nel relativo campo
|
||||
if (find_prezzo_articolo(o.get(), prezzo, um))
|
||||
char origine = find_prezzo_articolo(o.get(), prezzo, um);
|
||||
if (!prezzo.is_zero())
|
||||
{
|
||||
TMask& row_mask = o.mask();
|
||||
row_mask.set(S_PREZZO, prezzo);
|
||||
row_mask.set(S_UMQTA, um);
|
||||
|
||||
//per i contratti di anticipo/rifatturazione DEVE esistere il prezoo dell'articolo sul listino cliente (contratto campo)..
|
||||
//..perchè non potrà andare a modificare altro che tale prezzo nel programma di aggiornamento contratti premio hardy..
|
||||
//..scaduti: (ha0400)
|
||||
const char tipo_contr = get(F_TIPOCONTR)[0];
|
||||
if (origine != 'C' && (tipo_contr == 'A' || tipo_contr == 'R'))
|
||||
{
|
||||
TString msg;
|
||||
msg.format("Non esiste il prezzo per l'articolo %s nel listino cliente selezionato!", (const char*)o.get());
|
||||
return error_box(msg);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -27,8 +27,11 @@
|
||||
#define F_DATAFCOMP 226
|
||||
#define F_NUMREG 227
|
||||
#define F_COLLEGA 228
|
||||
#define F_ANTICIPATO 229
|
||||
#define F_RESO_STORICO 230
|
||||
#define F_DOCRIF 229
|
||||
#define F_DATA_DOCRIF 230
|
||||
|
||||
#define F_ANTICIPATO 231
|
||||
#define F_RESO_STORICO 232
|
||||
|
||||
#define F_RIGHE 500 //questo va messo 500 sennò ve0 si incazza e non funziona più
|
||||
|
||||
|
@ -8,7 +8,7 @@ ENDPAGE
|
||||
|
||||
PAGE "Gestione contratti premio" -1 -1 78 23
|
||||
|
||||
GROUPBOX DLG_NULL 78 13
|
||||
GROUPBOX DLG_NULL 78 14
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
END
|
||||
@ -16,9 +16,12 @@ END
|
||||
RADIOBUTTON F_TIPOCONTR 1 76
|
||||
BEGIN
|
||||
PROMPT 2 0 "@bTipo contratto"
|
||||
ITEM "A|Anticipo" MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@
|
||||
ITEM "P|Posticipo" MESSAGE ENABLE,F_DATAFCOMP|CLEAR,1@
|
||||
ITEM "R|Rifatturazione" MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@
|
||||
ITEM "A|Anticipo"
|
||||
MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@|CLEAR,F_CODLIS|REQUIRED,F_CODCONTR
|
||||
ITEM "P|Posticipo"
|
||||
MESSAGE ENABLE,F_DATAFCOMP|CLEAR,1@|ENABLE,F_CODLIS|NORMAL,F_CODCONTR
|
||||
ITEM "R|Rifatturazione"
|
||||
MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@|CLEAR,F_CODLIS|REQUIRED,F_CODCONTR
|
||||
FLAGS "GZ"
|
||||
KEY 1
|
||||
END
|
||||
@ -293,27 +296,44 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 10 "@bRiferimenti contratto"
|
||||
END
|
||||
|
||||
STRING F_DOCRIF 12
|
||||
BEGIN
|
||||
PROMPT 31 10 "Codice "
|
||||
FIELD DOC1
|
||||
END
|
||||
|
||||
DATA F_DATA_DOCRIF
|
||||
BEGIN
|
||||
PROMPT 55 10 "Data "
|
||||
FIELD DATADOCRIF
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 3
|
||||
BEGIN
|
||||
PROMPT 2 10 "@bSomme anticipate/restituite"
|
||||
PROMPT 2 11 "@bSomme anticipate/restituite"
|
||||
END
|
||||
|
||||
CURRENCY F_ANTICIPATO
|
||||
BEGIN
|
||||
PROMPT 3 11 "Anticipato "
|
||||
PROMPT 3 12 "Anticipato "
|
||||
FLAGS "U"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RESO_STORICO
|
||||
BEGIN
|
||||
PROMPT 38 11 "Restituito "
|
||||
PROMPT 38 12 "Restituito "
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
SPREADSHEET F_RIGHE
|
||||
BEGIN
|
||||
PROMPT 2 13 ""
|
||||
PROMPT 2 14 ""
|
||||
ITEM "Codice Articolo@20"
|
||||
ITEM "Descrizione@40"
|
||||
ITEM "UM@2"
|
||||
|
136
ha/ha0400.cpp
136
ha/ha0400.cpp
@ -5,11 +5,14 @@
|
||||
#include <recarray.h>
|
||||
#include <recset.h>
|
||||
#include <relapp.h>
|
||||
#include <reputils.h>
|
||||
|
||||
#include <clifo.h>
|
||||
#include <doc.h>
|
||||
#include <rdoc.h>
|
||||
|
||||
#include "../ve/rcondv.h"
|
||||
|
||||
#include "halib.h"
|
||||
#include "ha0.h"
|
||||
#include "ha0400a.h"
|
||||
@ -19,6 +22,7 @@
|
||||
///////////////////////////////////////////////////////////
|
||||
class THardy_tied_mask : public TAutomask
|
||||
{
|
||||
int _pos_check, _pos_codcf, _pos_ragsoc, _pos_anno, _pos_codnum, _pos_ndoc, _pos_tipodoc, _pos_importo, _pos_condpag, _pos_codage;
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
@ -28,6 +32,8 @@ protected:
|
||||
long fill_recordset(const long codcf, TISAM_recordset& recset);
|
||||
void fill_sheet();
|
||||
|
||||
int elabora_contratto(TToken_string* riga_sheet, TLog_report& log);
|
||||
|
||||
public:
|
||||
THardy_tied_mask();
|
||||
~THardy_tied_mask();
|
||||
@ -117,6 +123,8 @@ void THardy_tied_mask::fill_sheet()
|
||||
row.add(ragsoc);
|
||||
const int anno = recset.get(RDOC_ANNO).as_int();
|
||||
row.add(anno);
|
||||
const TString& codnum = recset.get(RDOC_CODNUM).as_string();
|
||||
row.add(codnum);
|
||||
const long ndoc = recset.get(RDOC_NDOC).as_int();
|
||||
row.add(ndoc);
|
||||
const TString& tipo = recset.get("DOC.TIPODOC").as_string();
|
||||
@ -161,6 +169,105 @@ void THardy_tied_mask::check_all(const bool checked)
|
||||
sf_righe.force_update();
|
||||
}
|
||||
|
||||
|
||||
//metodo base per l'elaborazione dei contratti pareggiati
|
||||
int THardy_tied_mask::elabora_contratto(TToken_string* riga_sheet, TLog_report& log)
|
||||
{
|
||||
//si crea il contratto_premi di origine, per caricare i dati che poi dovrà modificare
|
||||
const long codcf = riga_sheet->get_long(_pos_codcf);
|
||||
const int anno = riga_sheet->get_int(_pos_anno);
|
||||
const TString& codnum = riga_sheet->get(_pos_codnum);
|
||||
const long ndoc = riga_sheet->get_long(_pos_ndoc);
|
||||
const TString4 tipodoc = riga_sheet->get(_pos_tipodoc);
|
||||
|
||||
//crea il contratto premi...
|
||||
TContratto_premi contratto_premi('D', anno, codnum, ndoc);
|
||||
//..e le sue righe
|
||||
TRecord_array& righe_contr_premi = contratto_premi.body();
|
||||
|
||||
//cerca il listino cliente corrispondente..
|
||||
const TString4 listino_cliente = contratto_premi.get(DOC_CODCONT);
|
||||
TLocalisamfile rcondv(LF_RCONDV);
|
||||
|
||||
int err = NOERR;
|
||||
//e adesso scatta la ricerca dell'articolo del contratto premi dentro le righe del listino cliente...
|
||||
for (int i = righe_contr_premi.last_row(); i > 0 && err == NOERR; i = righe_contr_premi.pred_row(i))
|
||||
{
|
||||
TRectype& riga = righe_contr_premi[i];
|
||||
//solo le righe merce del contratto premi devono essere scasinate!
|
||||
if (riga.get(RDOC_TIPORIGA) == HARDY_TIPORIGA_MERCE)
|
||||
{
|
||||
const TString80 codart = riga.get(RDOC_CODART);
|
||||
const TString4 um = riga.get(RDOC_UMQTA);
|
||||
//adesso gli tocca cercare lo stesso articolo (e UM) dentro le righe listino cliente per raccatare il prezzo
|
||||
rcondv.put(RCONDV_TIPO, 'C');
|
||||
rcondv.put(RCONDV_CATVEN, "");
|
||||
rcondv.put(RCONDV_TIPOCF, 'C');
|
||||
rcondv.put(RCONDV_CODCF, codcf);
|
||||
rcondv.put(RCONDV_COD, listino_cliente);
|
||||
rcondv.put(RCONDV_TIPORIGA, 'A');
|
||||
rcondv.put(RCONDV_CODRIGA, codart);
|
||||
rcondv.put(RCONDV_UM, um);
|
||||
|
||||
err = rcondv.read(_isequal, _lock);
|
||||
if (err == NOERR)
|
||||
{
|
||||
//premio e ns_carico li prende dalla riga del contratto premi
|
||||
const real premio = riga.get_real(RC_1_PREMIO);
|
||||
const real ns_carico = riga.get_real(RC_1_NSCARICO);
|
||||
//il prezzo lo prende dal listino cliente
|
||||
real prezzo = rcondv.get_real(RCONDV_PREZZO);
|
||||
//aggiorna il prezzo con una formula ladresca...
|
||||
prezzo = prezzo - premio + ns_carico;
|
||||
rcondv.put(RCONDV_PREZZO, prezzo);
|
||||
|
||||
err = rcondv.rewrite();
|
||||
if (err != NOERR)
|
||||
{
|
||||
TString msg;
|
||||
msg.format("Imossibile aggiornare il listino %s del cliente %6ld ! Errore %d", (const char*)listino_cliente, codcf, err);
|
||||
log.log(1, msg);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TString msg;
|
||||
msg.format("Impossibile trovare l'articolo %s con u.m. %s nel listino %s del cliente %6ld !! Errore %d",
|
||||
(const char*)codart, (const char*)um, (const char*)listino_cliente, codcf, err);
|
||||
log.log(2, msg);
|
||||
}
|
||||
|
||||
} //if (riga.get(RDOC_TIPORIGA)...
|
||||
} //for (int i = righe_contr_premi.last_row()...
|
||||
|
||||
//alla fine della fiera il contratto premi va messo in stato scaduto, ovvero 9 direi...
|
||||
if (err == NOERR)
|
||||
{
|
||||
const TTipo_documento& tipodoc = contratto_premi.tipo();
|
||||
const TString& stato_scaduto = tipodoc.stato_chiuso();
|
||||
|
||||
contratto_premi.put(DOC_STATO, stato_scaduto);
|
||||
err = contratto_premi.rewrite();
|
||||
|
||||
if (err != NOERR)
|
||||
{
|
||||
TString msg;
|
||||
msg.format("Impossibile aggiornare il contratto premi %4d%s%7ld del cliente %6ld !! Errore %d",
|
||||
anno, (const char*)codnum, ndoc, err);
|
||||
log.log(2, msg);
|
||||
}
|
||||
}
|
||||
|
||||
//aggiornamento positivo del log!
|
||||
if (err == NOERR)
|
||||
{
|
||||
TString msg;
|
||||
msg.format("Chiuso contratto premi %7ld del cliente %6ld - Aggiornato listino %s", ndoc, codcf, (const char*)listino_cliente);
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
bool THardy_tied_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
@ -182,6 +289,23 @@ bool THardy_tied_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
}
|
||||
break;
|
||||
|
||||
case DLG_OK:
|
||||
if (e == fe_button)
|
||||
{
|
||||
//già che ci siamo mettiamoci pure un log di elaborazione
|
||||
TLog_report log("Elaborazione contratti selezionati");
|
||||
log.kill_duplicates();
|
||||
log.log(0, "");
|
||||
TSheet_field& righe = sfield(F_RIGHE);
|
||||
FOR_EACH_SHEET_ROW(righe, r, riga)
|
||||
{
|
||||
//vengono elaborate solo le righe checkate
|
||||
const char checked = riga->get_char(0);
|
||||
if (checked == 'X')
|
||||
int err = elabora_contratto(riga, log);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
break;
|
||||
@ -191,6 +315,18 @@ bool THardy_tied_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
|
||||
THardy_tied_mask::THardy_tied_mask() : TAutomask ("ha0400a")
|
||||
{
|
||||
//assegna una volta per tutte le pos delle colonne di sheet
|
||||
TSheet_field& sf_righe = sfield(F_RIGHE);
|
||||
_pos_check = sf_righe.cid2index(S_CHECK);
|
||||
_pos_codcf = sf_righe.cid2index(S_CODCF);
|
||||
_pos_ragsoc = sf_righe.cid2index(S_RAGSOC);
|
||||
_pos_anno = sf_righe.cid2index(S_ANNO);
|
||||
_pos_codnum = sf_righe.cid2index(S_CODNUM);
|
||||
_pos_ndoc = sf_righe.cid2index(S_NDOC);
|
||||
_pos_tipodoc = sf_righe.cid2index(S_TIPO);
|
||||
_pos_importo = sf_righe.cid2index(S_IMPORTO);
|
||||
_pos_condpag = sf_righe.cid2index(S_CONDPAG);
|
||||
_pos_codage = sf_righe.cid2index(S_CODAG);
|
||||
}
|
||||
|
||||
THardy_tied_mask::~THardy_tied_mask()
|
||||
|
11
ha/ha0400a.h
11
ha/ha0400a.h
@ -13,8 +13,9 @@
|
||||
#define S_CODCF 102
|
||||
#define S_RAGSOC 103
|
||||
#define S_ANNO 104
|
||||
#define S_NDOC 105
|
||||
#define S_TIPO 106
|
||||
#define S_IMPORTO 107
|
||||
#define S_CONDPAG 108
|
||||
#define S_CODAG 109
|
||||
#define S_CODNUM 105
|
||||
#define S_NDOC 106
|
||||
#define S_TIPO 107
|
||||
#define S_IMPORTO 108
|
||||
#define S_CONDPAG 109
|
||||
#define S_CODAG 110
|
||||
|
@ -74,6 +74,7 @@ BEGIN
|
||||
ITEM "Cliente"
|
||||
ITEM "Ragione sociale@40"
|
||||
ITEM "Anno"
|
||||
ITEM "Num."
|
||||
ITEM "N.Contr."
|
||||
ITEM "Tipo"
|
||||
ITEM "Importo@12"
|
||||
@ -128,6 +129,11 @@ BEGIN
|
||||
PROMPT 1 3 "Anno "
|
||||
END
|
||||
|
||||
STRING S_CODNUM 4
|
||||
BEGIN
|
||||
PROMPT 1 4 "Num. "
|
||||
END
|
||||
|
||||
NUMBER S_NDOC 7
|
||||
BEGIN
|
||||
PROMPT 1 4 "N. doc. "
|
||||
|
Loading…
x
Reference in New Issue
Block a user