Patch level : 10.0

Files correlati     : lv4.exe lv4900a.msk lv4900.rep
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@22538 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-12-29 11:09:20 +00:00
parent c6cdc3fcd4
commit c1f4f318d4
6 changed files with 565 additions and 0 deletions

View File

@ -14,6 +14,7 @@ int main(int argc, char** argv)
case 5: lv4600(argc, argv); break; // Riclassificazione conti COGECO
case 6: lv4700(argc, argv); break; // Riclassificazione tabelle COGECO
case 7: lv4800(argc, argv); break; // Esportazione Bolle
case 8: lv4900(argc, argv); break; // Aggiornamento prezzi
default: lv4100(argc, argv); break; // Importazione movimenti contabili
}
return 0;

View File

@ -6,3 +6,4 @@ int lv4500(int argc, char* argv[]); // importazione fatture
int lv4600(int argc, char* argv[]); // riclassificazione conti COGECO
int lv4700(int argc, char* argv[]); // riclassificazione tabelle COGECO
int lv4800(int argc, char* argv[]); // esportazione bolle
int lv4900(int argc, char* argv[]); // aggiornamento prezzi

193
lv/lv4900.cpp Normal file
View File

@ -0,0 +1,193 @@
#include <applicat.h>
#include <automask.h>
#include <currency.h>
#include <lffiles.h>
#include <progind.h>
#include <recarray.h>
#include <relation.h>
#include <report.h>
#include "lv4900a.h"
#include "lvrcondv.h"
////////////////
// MASCHERA //
////////////////
class TPrezzi_mask : public TAutomask
{
private:
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TPrezzi_mask() : TAutomask("lv4900a") { TPrice p; set(F_DECIMALS, p.decimals()); }
};
bool TPrezzi_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case F_DATA:
if (e == fe_init && o.empty())
{
const TDate oggi(TODAY);
const int curr_month = oggi.month();
const int next_month = (((curr_month+2) % 12) / 3 * 3)+1;
const int next_year = oggi.year() + (next_month < curr_month ? 1 : 0);
const TDate d(1, next_month, next_year);
o.set(d.string());
}
break;
default:
break;
}
return true;
}
////////////////////////
// TPrice_recordset //
////////////////////////
class TPrice_recordset : public TISAM_recordset
{
int _mode;
bool _roundup;
int _decimals;
real _perc, _incmin;
protected:
virtual const TVariant& get_field(int logic, const char* field) const;
public:
TPrice_recordset(const TMask& m);
};
const TVariant& TPrice_recordset::get_field(int logic, const char* field) const
{
if ((logic == 0 || logic == LF_LVRCONDV) && strncmp(field, "NEW", 3) == 0)
{
const TFixed_string base(field+3);
if (((_mode & 1) && (base == LVRCONDV_PREZZO)) || ((_mode & 2) && (base == LVRCONDV_PREZNOL)))
{
const real old_price = TISAM_recordset::get_field(logic, base).as_real();
if (old_price > ZERO)
{
real new_price = old_price * (CENTO + _perc) / CENTO;
if (_roundup)
new_price.ceil(_decimals);
else
new_price.round(_decimals);
if (new_price == old_price && _perc > ZERO)
new_price += _incmin;
TVariant& tmp = get_tmp_var();
tmp.set(new_price);
return tmp;
}
}
}
return TISAM_recordset::get_field(logic, field);
}
TPrice_recordset::TPrice_recordset(const TMask& m) : TISAM_recordset("USE LVRCONDV")
{
_mode = m.get_int(F_PREZZO);
_decimals = m.get_int(F_DECIMALS);
_roundup = m.get_bool(F_ARROTONDA);
_perc = m.get_real(F_PERC);
_incmin = m.get_real(F_MINIMO);
const TString4 nil = "???";
const TString& por = m.get_bool(F_USEPORTO) ? m.get(F_PORTO) : nil;
const TString& cco = m.get_bool(F_USECATCON) ? m.get(F_CATCON) : nil;
const TString& cve = m.get_bool(F_USECATVEN) ? m.get(F_CATVEN) : nil;
const bool cfven_needed = por != nil || cco != nil || cve != nil;
TString select;
if (cfven_needed)
{
if (por != nil) select << "&&(CFVEN.CODPORTO==\""<< por << "\")";
if (cco != nil) select << "&&(CFVEN.CODCATC==\"" << cco << "\")";
if (cve != nil) select << "&&(CFVEN.CATVEN==\"" << cve << "\")";
}
const TString& dca = m.get(F_FROMCODART);
const TString& aca = m.get(F_TOCODART);
if (dca.full() || aca.full())
select << "&&(BETWEEN(CODART,\"" << dca << "\",\"" << aca << "\"))";
TString query;
query << "USE LVRCONDV SELECT (BETWEEN(\""<< m.get(F_DATA) << "\",LVCONDV.DATAIN,LVCONDV.DATASC))";
switch (_mode)
{
case 1: query << "&&(STR(PREZZO>0))"; break;
case 2: query << "&&(STR(PREZNOL>0))"; break;
default: query << "&&(STR((PREZZO>0)||(PREZNOL>0)))"; break;
}
query << select;
query << "\nJOIN LVCONDV INTO CODCF==CODCF CODCONT==CODCONT";
if (cfven_needed)
query << "\nJOIN CFVEN INTO TIPOCF=\"C\" CODCF==CODCF";
query << "\nFROM CODCF=" << m.get(F_FROMCLI) << "\nTO CODCF=" << m.get(F_TOCLI);
set(query);
}
////////////////////
// Applicazione //
////////////////////
class TAggiornamento_prezzi : public TSkeleton_application
{
public:
virtual void main_loop();
};
void TAggiornamento_prezzi::main_loop()
{
TPrezzi_mask m;
while (m.run() == K_ENTER)
{
TPrice_recordset* pr = new TPrice_recordset(m);
TReport rep;
if (rep.load("lv4900"))
{
rep.set_recordset(pr);
rep.preview();
}
if (m.get_bool(F_DEFINITIVO) && yesno_box(TR("Si desiderano registrare i nuovi prezzi?")))
{
const int mode = m.get_int(F_PREZZO); // 1, 2, 3
TProgind pi(pr->items(), title(), false, true);
const TRectype& curr = pr->cursor()->curr();
TFast_isamfile file(LF_LVRCONDV);
for (bool ok = pr->move_first(); ok; ok = pr->move_next())
{
if (!pi.addstatus(1))
break;
file.curr() = curr;
if (mode & 1)
file.put(LVRCONDV_PREZZO, pr->get("NEW"LVRCONDV_PREZZO).as_real());
if (mode & 2)
file.put(LVRCONDV_PREZNOL, pr->get("NEW"LVRCONDV_PREZNOL).as_real());
const int err = file.rewrite();
if (err != NOERR)
{
cantwrite_box(file.description());
break;
}
}
}
}
}
int lv4900(int argc, char* argv[])
{
TAggiornamento_prezzi a;
a.run(argc, argv, TR("Aggiornamento prezzi"));
return 0;
}

66
lv/lv4900.rep Normal file
View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="lv4900" orientation="1" lpi="8">
<description>Aggiornamento prezzi</description>
<font face="Courier New" size="8" />
<section type="Head" pattern="1" />
<section type="Head" level="1" pattern="1" />
<section repeat="1" type="Head" level="2" page_break="1" pattern="1">
<groupby>CODCF+CODCONT</groupby>
<field border="3" y="0.5" type="Linea" width="120" height="0" pattern="1" />
<field border="2" x="71" y="0.5" type="Linea" height="3.5" pattern="1" />
<field border="2" x="94" y="0.5" type="Linea" height="3.5" pattern="1" />
<field x="13" y="1" type="Numero" align="right" link="LVCONDV.CODCF" width="6" pattern="1">
<source>CODCF</source>
</field>
<field x="20" y="1" type="Stringa" width="50" pattern="1">
<prescript description="H2.0 PRESCRIPT">MESSAGE ISAMREAD,CLIFO,TIPOCF='C'!CODCF=CODCF,RAGSOC</prescript>
</field>
<field x="72" y="1" type="Testo" width="10" pattern="1" text="Contratto" />
<field x="83" y="1" type="Numero" align="right" link="LVCONDV.CODCONT" width="10" pattern="1">
<source>CODCONT</source>
</field>
<field x="95" y="1" type="Data" width="10.5" pattern="1">
<source>LVCONDV.DATAIN</source>
</field>
<field x="106" y="1" type="Data" width="10.5" pattern="1">
<source>LVCONDV.DATASC</source>
</field>
<field border="3" y="2.5" type="Linea" width="120" height="0" pattern="1" />
<field y="3" type="Testo" width="20" pattern="1" text="Articolo" />
<field x="20" y="3" type="Testo" width="50" pattern="1" text="Descrizione" />
<field x="72" y="3" type="Testo" align="right" width="10" pattern="1" text="Vecchio" />
<field x="83" y="3" type="Testo" align="right" width="10" pattern="1" text="Prezzo" />
<field x="95" y="3" type="Testo" align="right" width="10" pattern="1" text="Vecchio" />
<field x="106" y="3" type="Testo" align="right" width="10" pattern="1" text="Noleggio" />
<field border="2" y="4" type="Linea" width="120" height="0" pattern="1" />
</section>
<section type="Body" pattern="1" />
<section type="Body" level="1" pattern="1">
<field type="Stringa" link="ANAMAG.CODART" width="20" pattern="1">
<source>CODART</source>
</field>
<field x="20" type="Stringa" width="50" pattern="1">
<prescript description="B1.0 PRESCRIPT">MESSAGE ISAMREAD,ANAMAG,CODART=CODART,DESCR</prescript>
</field>
<field border="2" x="71" type="Linea" pattern="1" />
<field x="72" type="Prezzo" align="right" width="10" pattern="1" hide_zero="1" text="#########,@@">
<source>PREZZO</source>
</field>
<field x="83" type="Prezzo" align="right" width="10" pattern="1" hide_zero="1" text="#########,@@">
<source>NEWPREZZO</source>
</field>
<field border="2" x="94" type="Linea" pattern="1" />
<field x="95" type="Prezzo" align="right" width="10" pattern="1" hide_zero="1" text="#########,@@">
<source>PREZNOL</source>
</field>
<field x="106" type="Prezzo" align="right" width="10" pattern="1" hide_zero="1" text="#########,@@">
<source>NEWPREZNOL</source>
</field>
</section>
<section type="Foot" pattern="1" />
<section type="Foot" level="1" pattern="1" />
<section type="Foot" level="2" pattern="1" />
<sql>USE LVRCONDV
JOIN LVCONDV INTO CODCF==CODCF CODCONT==CODCONT
</sql>
</report>

33
lv/lv4900a.h Normal file
View File

@ -0,0 +1,33 @@
#define F_PREZZO 201
#define F_DATA 202
#define F_PERC 203
#define F_DECIMALS 204
#define F_ARROTONDA 205
#define F_MINIMO 206
#define F_DEFINITIVO 207
#define F_FROMCODART 211
#define F_FROMDESCART 212
#define F_TOCODART 213
#define F_TODESCART 214
#define F_USEPORTO 221
#define F_PORTO 222
#define F_DPORTO 223
#define F_USECATCON 224
#define F_CATCON 225
#define F_DCATCON 226
#define F_USECATVEN 227
#define F_CATVEN 228
#define F_DCATVEN 229
#define F_FROMCLI 231
#define F_FROMRAGSOC 232
#define F_TOCLI 233
#define F_TORAGSOC 234
#define F_FROMCATVEN 241
#define F_FROMCATDESC 242
#define F_TOCATVEN 243
#define F_TOCATDESC 244

271
lv/lv4900a.uml Normal file
View File

@ -0,0 +1,271 @@
#include "lv4900a.h"
TOOLBAR "topbar" 0 0 0 2
#include <elabar.h>
ENDPAGE
PAGE "Aggiornamento prezzi" 0 2 0 0
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 0 "@bParametri elaborazione"
END
RADIOBUTTON F_PREZZO 1 56
BEGIN
PROMPT 1 0 ""
ITEM "1|Prezzo"
ITEM "2|Nolo"
ITEM "3|Entrambi"
FLAGS "Z"
END
BOOLEAN F_DEFINITIVO
BEGIN
PROMPT 55 1 "Calcolo definitivo"
END
NUMBER F_PERC 5 1
BEGIN
PROMPT 2 2 "% variazione "
CHECKTYPE REQUIRED
END
LIST F_ARROTONDA 1 12
BEGIN
PROMPT 27 2 "Arrotondamento "
ITEM "0|matematico"
ITEM "1|per eccesso"
END
NUMBER F_DECIMALS 1
BEGIN
PROMPT 66 2 "Decimali "
FLAGS "D"
END
CURRENCY F_MINIMO 5
BEGIN
PROMPT 2 3 "Aumento minimo "
FLAGS "U"
END
DATE F_DATA
BEGIN
PROMPT 61 3 "Data "
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 5 "@bCategorie"
END
BOOLEAN F_USEPORTO
BEGIN
PROMPT 2 6 "Porto"
MESSAGE FALSE CLEAR,F_PORTO|CLEAR,F_DPORTO
MESSAGE TRUE ENABLE,F_PORTO|ENABLE,F_DPORTO
END
STRING F_PORTO 3
BEGIN
PROMPT 18 6 ""
USE %POR
INPUT CODTAB F_PORTO
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_PORTO CODTAB
OUTPUT F_DPORTO S0
CHECKTYPE NORMAL
END
STRING F_DPORTO 50
BEGIN
PROMPT 25 6 ""
USE %POR KEY 2
INPUT S0 F_DPORTO
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_PORTO
CHECKTYPE NORMAL
END
BOOLEAN F_USECATCON
BEGIN
PROMPT 2 7 "Cat. contabile"
MESSAGE FALSE CLEAR,F_CATCON|CLEAR,F_DCATCON
MESSAGE TRUE ENABLE,F_CATCON|ENABLE,F_DCATCON
END
STRING F_CATCON 3
BEGIN
PROMPT 18 7 ""
USE CCO
INPUT CODTAB F_CATCON
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CATCON CODTAB
OUTPUT F_DCATCON S0
CHECKTYPE NORMAL
END
STRING F_DCATCON 50
BEGIN
PROMPT 25 7 ""
USE CCO KEY 2
INPUT S0 F_DCATCON
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CATCON
CHECKTYPE NORMAL
END
BOOLEAN F_USECATVEN
BEGIN
PROMPT 2 8 "Cat. vendita"
MESSAGE FALSE CLEAR,F_CATVEN|CLEAR,F_DCATVEN
MESSAGE TRUE ENABLE,F_CATVEN|ENABLE,F_DCATVEN
END
STRING F_CATVEN 3
BEGIN
PROMPT 18 8 ""
USE CVE
INPUT CODTAB F_CATVEN
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CATVEN CODTAB
OUTPUT F_DCATVEN S0
CHECKTYPE NORMAL
END
STRING F_DCATVEN 50
BEGIN
PROMPT 25 8 ""
USE CVE KEY 2
INPUT S0 F_DCATVEN
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CATVEN
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 10 "@bClienti"
END
NUMBER F_FROMCLI 6
BEGIN
PROMPT 2 11 "Dal "
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF F_FROMCLI
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Sospeso@C" SOSPESO
OUTPUT F_FROMCLI CODCF
OUTPUT F_FROMRAGSOC RAGSOC
ADD RUN cg0 -1 C
CHECKTYPE NORMAL
END
STRING F_FROMRAGSOC 50
BEGIN
PROMPT 25 11 ""
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC F_FROMRAGSOC
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Codice" CODCF
DISPLAY "Sospeso@C" SOSPESO
COPY OUTPUT F_FROMCLI
ADD RUN cg0 -1 C
CHECKTYPE NORMAL
END
NUMBER F_TOCLI 6
BEGIN
PROMPT 2 12 "Al "
COPY USE F_FROMCLI
INPUT TIPOCF "C"
INPUT CODCF F_TOCLI
COPY DISPLAY F_FROMCLI
OUTPUT F_TOCLI CODCF
OUTPUT F_TORAGSOC RAGSOC
ADD RUN cg0 -1 C
CHECKTYPE NORMAL
END
STRING F_TORAGSOC 50
BEGIN
PROMPT 25 12 ""
COPY USE F_FROMRAGSOC
INPUT TIPOCF "C"
INPUT RAGSOC F_TORAGSOC
COPY DISPLAY F_FROMRAGSOC
COPY OUTPUT F_TOCLI
ADD RUN cg0 -1 C
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 14 "@bArticoli"
END
STRING F_FROMCODART 20 14
BEGIN
PROMPT 2 15 "Dal "
USE LF_ANAMAG
INPUT CODART F_FROMCODART
DISPLAY "Codice@20" CODART
DISPLAY "Descrizione@50" DESCR
DISPLAY "Sospeso@C" SOSPESO
OUTPUT F_FROMCODART CODART
OUTPUT F_FROMDESCART DESCR
CHECKTYPE NORMAL
ADD RUN ve2 -3
END
STRING F_FROMDESCART 50
BEGIN
PROMPT 25 15 ""
USE LF_ANAMAG KEY 2
INPUT DESCR F_FROMDESCART
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice@20" CODART
DISPLAY "Sospeso@C" SOSPESO
COPY OUTPUT F_FROMCODART
CHECKTYPE NORMAL
ADD RUN ve2 -3
END
STRING F_TOCODART 20 14
BEGIN
PROMPT 2 16 "Al "
COPY USE F_FROMCODART
INPUT CODART F_TOCODART
COPY DISPLAY F_FROMCODART
OUTPUT F_TOCODART CODART
OUTPUT F_TODESCART DESCR
CHECKTYPE NORMAL
ADD RUN ve2 -3
END
STRING F_TODESCART 50
BEGIN
PROMPT 25 16 ""
COPY USE F_FROMDESCART
INPUT DESCR F_TODESCART
COPY DISPLAY F_FROMDESCART
COPY OUTPUT F_TOCODART
CHECKTYPE NORMAL
ADD RUN ve2 -3
END
ENDPAGE
ENDMASK