Patch level : 10.0 225
Files correlati : Ricompilazione Demo : [ ] Commento : Rportata la versione 3.2 patch 1314 git-svn-id: svn://10.65.10.50/trunk@18269 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
7b4821f61e
commit
8700805497
ba
ce
co
co0300a.umlco0500a.umlco0600.cppco0600a.hco0600a.umlco0700.cppco0700a.inico0700a.umlco0800.cppco1.cppco1.hco1200a.hco1200a.repco1200a.umlco1300.cppco1300a.hco1300a.repco1300a.umlco1500.cppco1500a.hco1500a.umlco1600a.repco1800a.repco1800a.umlcoconf.hcolib.cppcolib.hcomenu.menf160.dirf160.trrrf700000.frm
db
mg
mg0300a.umlmg1100.cppmg3100a.frmmg3100aa.frmmg3100b.frmmg3600.cppmg3600.hmg3600.umlmg3600c.repmgconf.h
mr
or
ps
indice_programmi.txtpg0001600.cpppg0001600a.hpg0001600a.umlpg0099100a.reppg0099100a.umlpn0001100.cpppn0001100.hps0001.cppps0001.hps0001100.cppps0001100.hps0001100.umlps0001200.cppps0001200.hps0001200.umlps0001300.cppps0001300.hps0713.cppps0713.hps0713400.cppps0713400a.hps0713400a.umlps0925.cppps0925.hps0925100.cppps0925100a.hps0925100a.umlpt0003100.cpppt0003100a.uml
sc
tc
tp
ve
@ -17,6 +17,104 @@
|
||||
#include "ba8301.h"
|
||||
#include <bagn003.h>
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TPrinter_font_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TPrinter_font_mask : public TAutomask
|
||||
{
|
||||
XVT_FNTID _font;
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TPrinter_font_mask(XVT_FNTID font);
|
||||
};
|
||||
|
||||
bool TPrinter_font_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
PRINT_RCD* rcd = printer().get_printrcd();
|
||||
if (rcd == NULL)
|
||||
return false;
|
||||
|
||||
switch (o.dlg())
|
||||
{
|
||||
case 101:
|
||||
if (e == fe_init)
|
||||
{
|
||||
o.set(printer().printername());
|
||||
}
|
||||
break;
|
||||
case 102:
|
||||
if (e == fe_init)
|
||||
{
|
||||
const int MAX_FAMILIES = 256;
|
||||
char* family[MAX_FAMILIES];
|
||||
const int num_families = (int)xvt_fmap_get_families(rcd, family, MAX_FAMILIES);
|
||||
|
||||
TToken_string fn(num_families * 16);
|
||||
for (int i = 0; i < num_families; i++)
|
||||
{
|
||||
fn.add(family[i]);
|
||||
xvt_mem_free(family[i]);
|
||||
}
|
||||
|
||||
TList_field& fonts = (TList_field&)o;
|
||||
fonts.replace_items(fn, fn);
|
||||
|
||||
TString80 buf;
|
||||
xvt_font_get_family(_font, buf.get_buffer(), buf.size());
|
||||
fonts.set(buf);
|
||||
}
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
TList_field& lst = (TList_field&)field(103);
|
||||
TString4 old_size = lst.get();
|
||||
if (old_size.empty())
|
||||
old_size << xvt_font_get_size(_font);
|
||||
|
||||
const int MAXSIZES = 8;
|
||||
long sizes[MAXSIZES];
|
||||
BOOLEAN scalable = FALSE;
|
||||
TString80 str = o.get();
|
||||
const int num_sizes = (int)xvt_fmap_get_family_sizes(rcd, str.get_buffer(), sizes, &scalable, MAXSIZES);
|
||||
TToken_string pn1;
|
||||
if (scalable)
|
||||
{
|
||||
for (int i = 4; i < 96; i++)
|
||||
pn1.add(i);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (num_sizes > 0)
|
||||
{
|
||||
for (int i = 0; i < num_sizes; i++)
|
||||
pn1.add(sizes[i]);
|
||||
}
|
||||
else
|
||||
pn1.add(printer().get_char_size()); // semper better than nothing
|
||||
}
|
||||
lst.replace_items(pn1, pn1);
|
||||
lst.set(old_size);
|
||||
lst.enable(pn1.items() > 1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
TPrinter_font_mask::TPrinter_font_mask(XVT_FNTID font)
|
||||
: TAutomask(TR("Selezione Font nativo"), 1, 68, 5), _font(font)
|
||||
{
|
||||
add_string(101, 0, PR("Stampante "), 1, 1, 256, "LG", 50);
|
||||
add_list(102, 0, PR("Nome "), 1, 2, 50, "", "", "");
|
||||
add_list(103, 0, PR("Dimensioni "), 1, 3, 2, "", "", "");
|
||||
add_button(DLG_OK, 0, "", -12, -1, 10, 2);
|
||||
add_button(DLG_CANCEL, 0, "", -22, -1, 10, 2);
|
||||
set_handlers();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TReport_sheet
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -42,6 +42,7 @@
|
||||
#define F_RADIUS 148
|
||||
#define F_PATTERN 149
|
||||
#define F_SHADE_OFFSET 150
|
||||
#define F_PRFONT_SELECT 159
|
||||
|
||||
#define F_LEVEL 160
|
||||
#define F_GROUP_BY 161
|
||||
|
@ -183,6 +183,11 @@ BEGIN
|
||||
PROMPT 2 10 "~Font"
|
||||
END
|
||||
|
||||
BUTTON F_PRFONT_SELECT 14 1
|
||||
BEGIN
|
||||
PROMPT 2 12 "Font ~Stampa"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Avanzate" -1 -1 74 16
|
||||
|
@ -170,6 +170,11 @@ BEGIN
|
||||
PROMPT 2 10 "~Font"
|
||||
END
|
||||
|
||||
BUTTON F_PRFONT_SELECT 14 1
|
||||
BEGIN
|
||||
PROMPT 2 12 "Font ~Stampa"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Avanzate" -1 -1 50 16
|
||||
|
@ -460,6 +460,26 @@ bool TReport_base_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
}
|
||||
xvt_font_destroy(font);
|
||||
}
|
||||
break;
|
||||
case F_PRFONT_SELECT:
|
||||
if (e == fe_button)
|
||||
{
|
||||
XVT_FNTID font = xvt_font_create();
|
||||
xvt_font_copy(font, _font.get_xvt_font(*this), XVT_FA_ALL);
|
||||
xvt_font_set_size(font, _font.size());
|
||||
if (choose_printer_font(font))
|
||||
{
|
||||
TString name;
|
||||
xvt_font_get_family(font, name.get_buffer(), name.size());
|
||||
const int size = xvt_font_get_size(font);
|
||||
const XVT_FONT_STYLE_MASK style = xvt_font_get_style(font);
|
||||
_font.create(name, size, style);
|
||||
|
||||
_font_changed = true;
|
||||
force_update();
|
||||
}
|
||||
xvt_font_destroy(font);
|
||||
}
|
||||
break;
|
||||
case F_HALIGN:
|
||||
case F_VALIGN:
|
||||
|
@ -1472,7 +1472,7 @@ void TCespite::cal_valenza(const TRectype& tmv, const TRectype& tmvam, TRectype&
|
||||
const real totfondo = fondo + privato;
|
||||
|
||||
real ratio;
|
||||
if (!totfondo.is_zero())
|
||||
if (!privato.is_zero() && !totfondo.is_zero())
|
||||
ratio = privato / totfondo;
|
||||
|
||||
real resparven = mov_val_ven(tmv) - totfondo;
|
||||
|
@ -158,6 +158,33 @@ BEGIN
|
||||
FIELD ProgQta
|
||||
END
|
||||
|
||||
NUMBER F_CODCOOP 6
|
||||
BEGIN
|
||||
PROMPT 2 14 "Codice cooperativa "
|
||||
FIELD CodCoop
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "C" SELECT
|
||||
INPUT CODCF F_CODCOOP
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
OUTPUT F_CODCOOP CODCF
|
||||
OUTPUT F_RAGCOOP RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN cg0 -1 C
|
||||
END
|
||||
|
||||
STRING F_RAGCOOP 50 35
|
||||
BEGIN
|
||||
PROMPT 40 14 ""
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C" SELECT
|
||||
INPUT RAGSOC F_RAGCOOP
|
||||
DISPLAY "Ragione sociale@60" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_CODCOOP
|
||||
ADD RUN cg0 -1 C
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Configurazione chiusure mensili" -1 -1 0 0
|
||||
@ -326,6 +353,31 @@ PAGE "Configurazione chiusure mensili" -1 -1 0 0
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_CODELASS 8
|
||||
BEGIN
|
||||
PROMPT 2 12 "Cod.elab assegni "
|
||||
FLAG "U"
|
||||
USE %ELD SELECT I0==5
|
||||
INPUT CODTAB F_CODELASS
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@55" S0
|
||||
OUTPUT F_CODELASS CODTAB
|
||||
OUTPUT F_DESELASS S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD ElAss
|
||||
WARNING "E' necessario specificare il codice elaborazione"
|
||||
END
|
||||
|
||||
STRING F_DESELASS 50
|
||||
BEGIN
|
||||
PROMPT 40 12 ""
|
||||
USE %ELD KEY 2 SELECT I0==5
|
||||
INPUT S0 F_DESELASS
|
||||
DISPLAY "Descrizione@55" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODELASS
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
@ -187,7 +187,7 @@ BEGIN
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_SPESEFACC 9 2
|
||||
NUMBER F_SPESEFACC 11 4
|
||||
BEGIN
|
||||
PROMPT 1 10 "Spese facchinaggio (Euro/kg) "
|
||||
FIELD SPESEFACC
|
||||
@ -195,7 +195,7 @@ END
|
||||
|
||||
STRING F_CODIVAFACC 4
|
||||
BEGIN
|
||||
PROMPT 45 10 ""
|
||||
PROMPT 47 10 ""
|
||||
FIELD CODIVAFACC
|
||||
USE %IVA
|
||||
INPUT CODTAB F_CODIVAFACC
|
||||
@ -207,9 +207,9 @@ BEGIN
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESIVAFACC 50 30
|
||||
STRING F_DESIVAFACC 50 25
|
||||
BEGIN
|
||||
PROMPT 52 10 ""
|
||||
PROMPT 54 10 ""
|
||||
USE %IVA KEY 2
|
||||
INPUT S0 F_DESIVAFACC
|
||||
DISPLAY "Descrizione@50" S0
|
||||
@ -219,7 +219,7 @@ BEGIN
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_SPESECASSE 9 2
|
||||
NUMBER F_SPESECASSE 11 4
|
||||
BEGIN
|
||||
PROMPT 1 11 "Spese ricambio casse (Euro/cassa) "
|
||||
FIELD SPESECASSE
|
||||
@ -227,7 +227,7 @@ END
|
||||
|
||||
STRING F_CODIVACASS 4
|
||||
BEGIN
|
||||
PROMPT 45 11 ""
|
||||
PROMPT 47 11 ""
|
||||
FIELD CODIVACASS
|
||||
USE %IVA
|
||||
INPUT CODTAB F_CODIVACASS
|
||||
@ -239,9 +239,9 @@ BEGIN
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESIVACASS 50 30
|
||||
STRING F_DESIVACASS 50 25
|
||||
BEGIN
|
||||
PROMPT 52 11 ""
|
||||
PROMPT 54 11 ""
|
||||
USE %IVA KEY 2
|
||||
INPUT S0 F_DESIVACASS
|
||||
DISPLAY "Descrizione@50" S0
|
||||
|
@ -4,12 +4,14 @@
|
||||
#include <relapp.h>
|
||||
#include <pconti.h>
|
||||
#include <recarray.h>
|
||||
#include <tabutil.h>
|
||||
|
||||
#include "co0600a.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
//MASCHERA
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class TCoop_soci_msk : public TAutomask
|
||||
{
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
@ -93,9 +95,55 @@ bool TCoop_soci_msk::on_field_event(TOperable_field& o, TField_event e, long jol
|
||||
else
|
||||
m.reset(F_DATASCALIC);
|
||||
}
|
||||
case F_ANNO:
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
const long codsocio = get_long(F_CODCF);
|
||||
const int year = atoi(o.get());
|
||||
|
||||
if (codsocio != 0L && year > 1900)
|
||||
{
|
||||
TTable psc("PSC");
|
||||
TSheet_field & prog = sfield(F_PROGRESSIVI);
|
||||
real totconf;
|
||||
real totiva;
|
||||
real totrit;
|
||||
|
||||
for (int month = 1; month <= 12; month++)
|
||||
{
|
||||
TToken_string & row = prog.row(month - 1);
|
||||
psc.zero();
|
||||
TString key;
|
||||
|
||||
row.add(itom(month), prog.cid2index(F_MESE));
|
||||
key.format("%06ld%04d%02d", codsocio, year, month);
|
||||
psc.put("CODTAB", key);
|
||||
if (psc.read(_isequal) == NOERR)
|
||||
{
|
||||
const real conf = psc.get_real("R0");
|
||||
const real iva = psc.get_real("R1");
|
||||
const real rit = psc.get_real("R2");
|
||||
|
||||
row.add(conf.string(18,2), prog.cid2index(F_CONF));
|
||||
row.add(iva.string(18,2), prog.cid2index(F_IVA));
|
||||
row.add(rit.string(18,2), prog.cid2index(F_RIT));
|
||||
totconf += conf;
|
||||
totiva += iva;
|
||||
totrit += rit;
|
||||
}
|
||||
}
|
||||
|
||||
TToken_string & row = prog.row(12);
|
||||
|
||||
row.add("Totali", prog.cid2index(F_MESE));
|
||||
row.add(totconf.string(18,2), prog.cid2index(F_CONF));
|
||||
row.add(totiva.string(18,2), prog.cid2index(F_IVA));
|
||||
row.add(totrit.string(18,2), prog.cid2index(F_RIT));
|
||||
prog.force_update();
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
|
||||
class TCoop_soci_application : public TRelation_application
|
||||
|
78
co/co0600a.h
78
co/co0600a.h
@ -1,42 +1,42 @@
|
||||
// campi per la maschera co0600a
|
||||
|
||||
#define F_CODSOCIO 101
|
||||
#define F_DESSOCIO 102
|
||||
#define F_CODCF 103
|
||||
#define F_RAGSOC 104
|
||||
#define F_DATAASS 105
|
||||
#define F_DATAREC 106
|
||||
#define F_NUMQUOTE 107
|
||||
#define F_VALQUOTE 108
|
||||
#define F_LIBLAVORO 109
|
||||
#define F_DATAEMISS 110
|
||||
#define F_COMEMISS 111
|
||||
#define F_NOMEBARCA 112
|
||||
#define F_TIPOPROP 113
|
||||
#define F_TIPOCOMAPP 114
|
||||
#define F_LICENZA 115
|
||||
#define F_DATALIC 116
|
||||
#define F_COMPAGNIA1 117
|
||||
#define F_QUOTA1 118
|
||||
#define F_COMPAGNIA2 119
|
||||
#define F_QUOTA2 120
|
||||
#define F_COMPAGNIA3 121
|
||||
#define F_QUOTA3 122
|
||||
#define F_DATANASC 123
|
||||
#define F_COMNASC 124
|
||||
#define F_COFISOCIO 125
|
||||
#define F_DATADEL 126
|
||||
#define F_DATASCALIC 127
|
||||
#define F_CODSOCIO 201
|
||||
#define F_DESSOCIO 202
|
||||
#define F_CODCF 203
|
||||
#define F_RAGSOC 204
|
||||
#define F_DATAASS 205
|
||||
#define F_DATAREC 206
|
||||
#define F_NUMQUOTE 207
|
||||
#define F_VALQUOTE 208
|
||||
#define F_LIBLAVORO 209
|
||||
#define F_DATAEMISS 210
|
||||
#define F_COMEMISS 211
|
||||
#define F_NOMEBARCA 212
|
||||
#define F_TIPOPROP 213
|
||||
#define F_TIPOCOMAPP 214
|
||||
#define F_LICENZA 215
|
||||
#define F_DATALIC 216
|
||||
#define F_COMPAGNIA1 217
|
||||
#define F_QUOTA1 218
|
||||
#define F_COMPAGNIA2 219
|
||||
#define F_QUOTA2 220
|
||||
#define F_COMPAGNIA3 221
|
||||
#define F_QUOTA3 222
|
||||
#define F_DATANASC 223
|
||||
#define F_COMNASC 224
|
||||
#define F_COFISOCIO 225
|
||||
#define F_DATADEL 226
|
||||
#define F_DATASCALIC 227
|
||||
|
||||
#define F_D_COMEMISS 131
|
||||
#define F_P_COMEMISS 132
|
||||
#define F_D_COMPAGNIA1 133
|
||||
#define F_D_COMPAGNIA2 134
|
||||
#define F_D_COMPAGNIA3 135
|
||||
#define F_D_COMNASC 136
|
||||
#define F_P_COMNASC 137
|
||||
#define F_D_COMEMISS 231
|
||||
#define F_P_COMEMISS 232
|
||||
#define F_D_COMPAGNIA1 233
|
||||
#define F_D_COMPAGNIA2 234
|
||||
#define F_D_COMPAGNIA3 235
|
||||
#define F_D_COMNASC 236
|
||||
#define F_P_COMNASC 237
|
||||
|
||||
#define F_IMBARCAZIONI 151
|
||||
#define F_IMBARCAZIONI 251
|
||||
|
||||
#define F_I_TIPOCOMAPP 101
|
||||
#define F_I_TARGA 102
|
||||
@ -58,3 +58,11 @@
|
||||
#define F_I_NRRUOLEQUI 118
|
||||
#define F_I_SCADLICPES 119
|
||||
#define F_I_SCADPAGLIC 120
|
||||
|
||||
#define F_ANNO 252
|
||||
#define F_PROGRESSIVI 153
|
||||
|
||||
#define F_MESE 101
|
||||
#define F_CONF 102
|
||||
#define F_IVA 103
|
||||
#define F_RIT 104
|
||||
|
@ -42,6 +42,7 @@ BEGIN
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Codice fiscale@16" COFI
|
||||
OUTPUT F_CODCF CODCF
|
||||
OUTPUT F_CODSOCIO CODCF
|
||||
OUTPUT F_RAGSOC 20->RAGSOC
|
||||
OUTPUT F_COFISOCIO 20->COFI
|
||||
OUTPUT F_CODSOCIO CODCF
|
||||
@ -55,6 +56,7 @@ STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 25 2 ""
|
||||
USE LF_CLIFO KEY 2
|
||||
KEY 2
|
||||
INPUT TIPOCF "F" SELECT
|
||||
INPUT RAGSOC F_RAGSOC
|
||||
DISPLAY "Ragione sociale@60" RAGSOC
|
||||
@ -382,6 +384,25 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Progressivi" 0 -1 0 20
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 5 "Anno "
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
SPREADSHEET F_PROGRESSIVI 78 13
|
||||
BEGIN
|
||||
PROMPT 2 7 "Progressivi annuali"
|
||||
FLAGS "R"
|
||||
ITEM "Mese"
|
||||
ITEM "Conferimenti@18"
|
||||
ITEM "IVA@18"
|
||||
ITEM "Ritenute@18"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
PAGE "Imbarcazione" -1 -1 75 16
|
||||
@ -543,4 +564,45 @@ ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Progressivi" -1 -1 75 12
|
||||
|
||||
STRINGA F_MESE 15
|
||||
BEGIN
|
||||
PROMPT 2 2 "Mese "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
CURRENCY F_CONF
|
||||
BEGIN
|
||||
PROMPT 2 4 "Conferimenti "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
CURRENCY F_IVA
|
||||
BEGIN
|
||||
PROMPT 2 6 "IVA "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
CURRENCY F_RIT
|
||||
BEGIN
|
||||
PROMPT 2 8 "Ritenute "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 9 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
||||
|
||||
|
@ -41,6 +41,7 @@ class TConferimenti_application : public TMotore_application
|
||||
protected:
|
||||
virtual TMask* get_mask( int mode );
|
||||
virtual void on_firm_change();
|
||||
virtual int read( TMask& m );
|
||||
int write( const TMask& m );
|
||||
int rewrite( const TMask& m );
|
||||
real get_perc_socio(const long codsocio, const TString& codcomp) const;
|
||||
@ -136,37 +137,106 @@ int TConferimenti_application::rewrite( const TMask& m )
|
||||
{
|
||||
int err = NOERR;
|
||||
const TTipo_documento tipodoc(m.get(172));
|
||||
TDocumento & doc = ((TConferimenti_mask & )m).doc();
|
||||
|
||||
if (tipodoc.tipo() == 5)
|
||||
{
|
||||
const long codmercato = m.get_long(343);
|
||||
TDocumento & doc = ((TConferimenti_mask & )m).doc();
|
||||
|
||||
doc.put("SPESEUPD", false);
|
||||
doc.put("RAGGR", true);
|
||||
update_spese_doc(codmercato, doc);
|
||||
}
|
||||
|
||||
const int nrows = doc.physical_rows();
|
||||
|
||||
if (tipodoc.tipo() == 6)
|
||||
for (int r = nrows; r >= 1; r--)
|
||||
{
|
||||
TRiga_documento & row = doc[r];
|
||||
|
||||
if (row.is_spese())
|
||||
{
|
||||
const TSpesa_prest & s = row.spesa();
|
||||
|
||||
if (s.get("S11") == "D")
|
||||
{
|
||||
real val = row.get_real(RDOC_PREZZO);
|
||||
|
||||
val = -val;
|
||||
row.put(RDOC_PREZZO, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
err = TMotore_application::rewrite(m);
|
||||
return err;
|
||||
}
|
||||
|
||||
int TConferimenti_application::read( TMask& m )
|
||||
{
|
||||
int err = TMotore_application::read(m);
|
||||
TDocumento & doc = ((TConferimenti_mask & )m).doc();
|
||||
TSheet_field & sf = ((TConferimenti_mask & )m).sfield(F_SHEET);
|
||||
const int nrows = doc.physical_rows();
|
||||
const TTipo_documento tipodoc(m.get(172));
|
||||
|
||||
if (err == NOERR && tipodoc.tipo() == 6)
|
||||
{
|
||||
for (int r = nrows; r >= 1; r--)
|
||||
{
|
||||
TRiga_documento & row = doc[r];
|
||||
|
||||
if (row.is_spese())
|
||||
{
|
||||
const TSpesa_prest & s = row.spesa();
|
||||
|
||||
if (s.get("S11") == "D")
|
||||
{
|
||||
real val = row.get_real(RDOC_PREZZO);
|
||||
|
||||
val = -val;
|
||||
row.put(RDOC_PREZZO, val);
|
||||
row.autoload(sf);;
|
||||
}
|
||||
}
|
||||
sf.force_update();
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int TConferimenti_application::write( const TMask& m )
|
||||
{
|
||||
int err = NOERR;
|
||||
TDocumento & doc = ((TConferimenti_mask & )m).doc();
|
||||
const int nrows = doc.physical_rows();
|
||||
bool zero_doc = true;
|
||||
int r;
|
||||
const TTipo_documento tipodoc(m.get(172));
|
||||
|
||||
for (r = nrows; zero_doc && r >= 1; r--)
|
||||
for (int r = nrows; r >= 1; r--)
|
||||
{
|
||||
const TRiga_documento & row = doc[r];
|
||||
TRiga_documento & row = doc[r];
|
||||
|
||||
if (row.imponibile() != ZERO)
|
||||
{
|
||||
zero_doc = false;
|
||||
if (tipodoc.tipo() == 6 && row.is_spese())
|
||||
{
|
||||
const TSpesa_prest & s = row.spesa();
|
||||
|
||||
if (s.get("S11") == "D")
|
||||
{
|
||||
real val = row.get_real(RDOC_PREZZO);
|
||||
|
||||
val = -val;
|
||||
row.put(RDOC_PREZZO, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (zero_doc)
|
||||
return false;
|
||||
|
||||
const TTipo_documento tipodoc(m.get(172));
|
||||
if (tipodoc.tipo() == 5)
|
||||
{
|
||||
const char confda = m.get(401)[0];
|
||||
@ -184,9 +254,10 @@ int TConferimenti_application::write( const TMask& m )
|
||||
TDocumento& doc = ((TConferimenti_mask&) m).doc();
|
||||
if (doc.physical_rows() > 0)
|
||||
{
|
||||
const long nfasta = m.get_long(345);
|
||||
const TString8 codcomp = m.get(344);
|
||||
TLista_documenti listadoc;
|
||||
if (compagnia2soci(doc, codcomp, codmercato, listadoc) > 0)
|
||||
if (compagnia2soci(doc, codcomp, codmercato, nfasta, listadoc) > 0)
|
||||
err = listadoc.write();
|
||||
}
|
||||
}
|
||||
|
5
co/co0700a.ini
Executable file
5
co/co0700a.ini
Executable file
@ -0,0 +1,5 @@
|
||||
[Search]
|
||||
Header=|Tipo Movimento
|
||||
FieldList=|34->CODART
|
||||
|
||||
|
@ -159,6 +159,7 @@ BEGIN
|
||||
USE LF_DOC KEY 2 SELECT (CODNUM==#F_CODNUM) && (PROVV==#F_PROVV) && (ANNO==#F_ANNO)
|
||||
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
JOIN LF_SOCICOOP TO LF_CLIFO INTO CODCF==CODCF
|
||||
JOIN LF_RIGHEDOC TO LF_DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC NRIGA==1
|
||||
INPUT TIPOCF F_TIPOCF SELECT
|
||||
INPUT CODCF F_CODCF
|
||||
INPUT PROVV F_PROVV
|
||||
@ -174,6 +175,7 @@ BEGIN
|
||||
DISPLAY "Data\ndocumento" DATADOC
|
||||
//DISPLAY "Valuta" CODVAL
|
||||
DISPLAY "Totale\ndocumento@18V" G1:TOTDOC
|
||||
DISPLAY "Tipo Movimento" LF_RIGHEDOC->CODART
|
||||
COPY OUTPUT F_NDOC
|
||||
OUTPUT F_CODCF CODCF
|
||||
CHECKTYPE NORMAL
|
||||
|
@ -172,57 +172,59 @@ void TImportazioneConf::main_loop()
|
||||
const TString16 cf = trec.get(fcf);
|
||||
const TDate datadoc(trec.get(fdata));
|
||||
|
||||
// if ((cf != last_cf) || (datadoc != last_data)) non si raggruppa piu'
|
||||
// {
|
||||
if (d != NULL && d->rows() > 0)
|
||||
if (d != NULL && d->rows() > 0)
|
||||
{
|
||||
m.doc() = *d;
|
||||
m.doc2mask();
|
||||
m.mask2doc();
|
||||
*d = m.doc();
|
||||
TSheet_field& sh = m.sheet();
|
||||
for (int i = 1; i <= m.doc().physical_rows(); i++)
|
||||
{
|
||||
m.doc() = *d;
|
||||
m.doc2mask();
|
||||
m.mask2doc();
|
||||
*d = m.doc();
|
||||
TSheet_field& sh = m.sheet();
|
||||
for (int i = 1; i <= m.doc().physical_rows(); i++)
|
||||
{
|
||||
TRiga_documento& r = (*d)[i];
|
||||
r.autosave(sh);
|
||||
r.put(RDOC_SCONTO, ritprezzo);
|
||||
}
|
||||
update_spese_doc(codmercato, *d);
|
||||
d->stato(d->tipo().stato_finale_inserimento());
|
||||
d->write();
|
||||
delete d;
|
||||
d = NULL;
|
||||
TRiga_documento& r = (*d)[i];
|
||||
r.autosave(sh);
|
||||
r.put(RDOC_SCONTO, ritprezzo);
|
||||
}
|
||||
d = new TDocumento;
|
||||
d->zero();
|
||||
d->set_key(*d, 'D', datadoc.year(), codnum, 0L);
|
||||
clifo.put(CLI_TIPOCF, "F");
|
||||
clifo.put(CLI_COFI, cf);
|
||||
int err = clifo.read(_isequal);
|
||||
if (err != NOERR)
|
||||
error_box("Fornitore con codice fiscale %s assente errore : %d)", (const char *) cf, err);
|
||||
|
||||
const long codcf = clifo.get_long(CLI_CODCF);
|
||||
d->put(DOC_TIPODOC, codtipo);
|
||||
d->put(DOC_TIPOCF, "F");
|
||||
d->put(DOC_CODCF, codcf);
|
||||
d->put(DOC_DATADOC, datadoc);
|
||||
d->put("MERCATO", codmercato);
|
||||
for (int f = 0; f < nfields; f++)
|
||||
{
|
||||
const TTracciato_campo& c = rec.get(f);
|
||||
const TString& name = c.name();
|
||||
|
||||
if (name != "CF" && name != "DATADOC")
|
||||
if (name.full() && ((name.find("->") < 0) || (name.starts_with("33->"))))
|
||||
d->put(name, trec.get(f));
|
||||
}
|
||||
last_cf = cf;
|
||||
last_data = datadoc;
|
||||
update_spese_doc(codmercato, *d);
|
||||
d->stato(d->tipo().stato_finale_inserimento());
|
||||
d->write();
|
||||
delete d;
|
||||
d = NULL;
|
||||
}
|
||||
d = new TDocumento;
|
||||
d->zero();
|
||||
d->set_key(*d, 'D', datadoc.year(), codnum, 0L);
|
||||
clifo.put(CLI_TIPOCF, "F");
|
||||
clifo.put(CLI_COFI, cf);
|
||||
|
||||
int err = clifo.read(_isequal);
|
||||
if (err != NOERR)
|
||||
error_box("Fornitore con codice fiscale %s assente errore : %d)", (const char *) cf, err);
|
||||
|
||||
const long codcf = clifo.get_long(CLI_CODCF);
|
||||
d->put(DOC_TIPODOC, codtipo);
|
||||
d->put(DOC_TIPOCF, "F");
|
||||
d->put(DOC_CODCF, codcf);
|
||||
d->put(DOC_DATADOC, datadoc);
|
||||
d->put("MERCATO", codmercato);
|
||||
for (int f = 0; f < nfields; f++)
|
||||
{
|
||||
const TTracciato_campo& c = rec.get(f);
|
||||
const TString& name = c.name();
|
||||
|
||||
if (name != "CF" && name != "DATADOC")
|
||||
if (name.full() && ((name.find("->") < 0) || (name.starts_with("33->"))))
|
||||
d->put(name, trec.get(f));
|
||||
}
|
||||
last_cf = cf;
|
||||
last_data = datadoc;
|
||||
|
||||
TRiga_documento& row = d->new_row("CO");
|
||||
|
||||
for (int f = 0; f < nfields; f++)
|
||||
if (d->physical_rows() > 1)
|
||||
message_box("Attenzione il conferimento socio (cod.%ld) del %s ha piu' di una riga", codcf, datadoc.string());
|
||||
|
||||
for (f = 0; f < nfields; f++)
|
||||
{
|
||||
const TTracciato_campo& c = rec.get(f);
|
||||
TString name = c.name();
|
||||
@ -241,7 +243,7 @@ void TImportazioneConf::main_loop()
|
||||
else
|
||||
row.put(name, val);
|
||||
}
|
||||
// }
|
||||
}
|
||||
TString80 codice = row.get(RDOC_CODART);
|
||||
TString80 key;
|
||||
key.format("%06ld%s", codmercato, (const char*) codice);
|
||||
|
@ -12,9 +12,9 @@ int main(int argc, char** argv)
|
||||
case 3:
|
||||
co1400(argc, argv); // Fatturazione Conferimenti
|
||||
break;
|
||||
//case 4:
|
||||
// co1500(argc, argv); // Invio mov.coop. a TeamSystem
|
||||
// break;
|
||||
case 4:
|
||||
co1500(argc, argv); // Invio mov.coop. a TeamSystem
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
2
co/co1.h
2
co/co1.h
@ -1,3 +1,3 @@
|
||||
int co1300(int argc, char* argv[]);
|
||||
int co1400(int argc, char* argv[]);
|
||||
//int co1500(int argc, char* argv[]);
|
||||
int co1500(int argc, char* argv[]);
|
||||
|
@ -6,3 +6,5 @@
|
||||
#define F_FROMCODART 106
|
||||
#define F_TOCODART 107
|
||||
#define F_CODNUM 108
|
||||
#define F_DASOCIO 109
|
||||
#define F_ASOCIO 110
|
||||
|
@ -132,7 +132,7 @@ THEN
|
||||
-1 *
|
||||
#THIS !
|
||||
</prescript>
|
||||
<postscript description="B11.0 POSTSCRIPT">MESSAGE ADD,F1.109</postscript>
|
||||
<postscript description="B11.0 POSTSCRIPT">MESSAGE COPY,F11.109</postscript>
|
||||
</field>
|
||||
<field x="80" y="2" type="Testo" valign="bottom" width="15" pattern="1" text="Numero casse:">
|
||||
<source>N1</source>
|
||||
@ -175,11 +175,11 @@ THEN
|
||||
-1 *
|
||||
#THIS !
|
||||
</prescript>
|
||||
<postscript description="B11.0 POSTSCRIPT">MESSAGE ADD,F1.110</postscript>
|
||||
<postscript description="B11.0 POSTSCRIPT">MESSAGE COPY,F11.110</postscript>
|
||||
</field>
|
||||
<field x="75" y="3" type="Valuta" valign="bottom" align="right" width="15" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>#PARENT.NETCRED</source>
|
||||
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.105</prescript>
|
||||
<prescript description="B11.0 PRESCRIPT">MESSAGE COPY,F11.105</prescript>
|
||||
</field>
|
||||
<field x="100" y="3" type="Stringa" valign="bottom" align="right" width="8" pattern="1">
|
||||
<source>RDOC.CODIVA</source>
|
||||
@ -205,7 +205,17 @@ THEN
|
||||
<source>TRIM(20.RAGSOC[1,30])+' '+TRIM(20.RAGSOC[31,50])</source>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Foot" level="11" />
|
||||
<section type="Foot" level="11">
|
||||
<field x="46" type="Valuta" valign="bottom" hidden="1" align="right" width="15" id="105" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<prescript description="F11.105 PRESCRIPT">MESSAGE ADD,F1.105</prescript>
|
||||
</field>
|
||||
<field x="10" type="Valuta" valign="bottom" hidden="1" align="right" width="15" id="109" pattern="1" text="###.###.###,@@">
|
||||
<postscript description="F11.109 POSTSCRIPT">MESSAGE ADD,F1.109</postscript>
|
||||
</field>
|
||||
<field x="27" type="Valuta" valign="bottom" hidden="1" align="right" width="15" id="110" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<postscript description="F11.110 POSTSCRIPT">MESSAGE ADD,F1.110</postscript>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Foot" />
|
||||
<section type="Foot" level="1">
|
||||
<field border="2" y="1" type="Linea" width="170" height="0" pattern="1" />
|
||||
@ -227,7 +237,7 @@ THEN
|
||||
<field x="55" y="3" type="Valuta" valign="bottom" align="right" width="15" id="110" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
</section>
|
||||
<sql>USE DOC
|
||||
SELECT (BETWEEN(DATADOC,#DADATA,#ADATA))(BETWEEN(G1:MERCATO,#DAMERCATO,#AMERCATO))
|
||||
SELECT (BETWEEN(DATADOC,#DADATA,#ADATA))(BETWEEN(G1:MERCATO,#DAMERCATO,#AMERCATO))(BETWEEN(CODCF,#DASOCIO,#ASOCIO))
|
||||
JOIN 20 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
FROM PROVV=D ANNO=#ANNO CODNUM=#CODNUM
|
||||
TO PROVV=D ANNO=#ANNO CODNUM=#CODNUM
|
||||
|
112
co/co1200a.uml
112
co/co1200a.uml
@ -1,24 +1,42 @@
|
||||
#include "co1200a.h"
|
||||
|
||||
PAGE "Stampa Conferimenti" -1 -1 78 10
|
||||
PAGE "Stampa Conferimenti" -1 -1 78 12
|
||||
|
||||
STRING F_FROMCLIENTE 6
|
||||
STRING F_CODNUM 4
|
||||
BEGIN
|
||||
PROMPT 5 1 "Numerazione "
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUM
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizone@50" S0
|
||||
OUTPUT F_CODNUM CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD #CODNUM
|
||||
FLAG "U"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 5 1 "Da mercato "
|
||||
PROMPT 50 1 "Anno "
|
||||
FIELD #ANNO
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_FROMCLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 5 2 "Da mercato "
|
||||
USE LF_MERCATICOOP
|
||||
JOIN LF_CLIFO INTO TIPOCF=='C' CODCF==CODCF
|
||||
INPUT CODCF F_FROMCLIENTE
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Descrizione@50" LF_CLIFO->RAGSOC
|
||||
OUTPUT F_FROMCLIENTE CODCF
|
||||
FLAG "U"
|
||||
CHECKTYPE NORMAL
|
||||
FIELD #DAMERCATO
|
||||
END
|
||||
|
||||
STRING F_TOCLIENTE 6
|
||||
NUMBER F_TOCLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 5 2 "A mercato "
|
||||
PROMPT 5 3 "A mercato "
|
||||
COPY USE F_FROMCLIENTE
|
||||
INPUT CODCF F_TOCLIENTE
|
||||
COPY DISPLAY F_FROMCLIENTE
|
||||
@ -26,28 +44,6 @@ BEGIN
|
||||
NUM_EXPR #F_TOCLIENTE>=#F_FROMCLIENTE
|
||||
WARNING "Intervallo codice cliente non corretto"
|
||||
FIELD #AMERCATO
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
DATE F_DADATA
|
||||
BEGIN
|
||||
PROMPT 50 1 "Da data "
|
||||
FIELD #DADATA
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE F_ADATA
|
||||
BEGIN
|
||||
PROMPT 50 2 "A data "
|
||||
FIELD #ADATA
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 50 3 "Anno "
|
||||
FIELD #ANNO
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_FROMCODART 20
|
||||
@ -59,7 +55,6 @@ BEGIN
|
||||
DISPLAY "Articolo@20" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_FROMCODART CODART
|
||||
GROUP G_ART G_ALL
|
||||
FIELD #DACODART
|
||||
END
|
||||
|
||||
@ -72,24 +67,53 @@ BEGIN
|
||||
DISPLAY "Articolo@20" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_TOCODART CODART
|
||||
GROUP G_ART G_ALL
|
||||
STR_EXPR #F_TOCODART>=#F_FROMCODART
|
||||
WARNING "Range codice articolo non corretto"
|
||||
FIELD #ACODART
|
||||
END
|
||||
|
||||
STRING F_CODNUM 4
|
||||
BEGIN
|
||||
PROMPT 5 6 "Numerazione "
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUM
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizone@50" S0
|
||||
OUTPUT F_CODNUM CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD #CODNUM
|
||||
FLAG "U"
|
||||
END
|
||||
NUMBER F_DASOCIO 6
|
||||
BEGIN
|
||||
PROMPT 5 6 "Da socio "
|
||||
FIELD #DASOCIO
|
||||
USE LF_CLIFO SELECT LF_SOCICOOP->CODCF!=""
|
||||
JOIN LF_SOCICOOP INTO CODCF==CODCF
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF F_DASOCIO
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Codice fiscale@16" COFI
|
||||
OUTPUT F_DASOCIO CODCF
|
||||
END
|
||||
|
||||
NUMBER F_ASOCIO 6
|
||||
BEGIN
|
||||
PROMPT 5 7 "A socio "
|
||||
FIELD #ASOCIO
|
||||
USE LF_CLIFO SELECT LF_SOCICOOP->CODCF!=""
|
||||
JOIN LF_SOCICOOP INTO CODCF==CODCF
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF F_ASOCIO
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione sociale@50" 20->RAGSOC
|
||||
DISPLAY "Codice fiscale@16" 20->COFI
|
||||
OUTPUT F_ASOCIO CODCF
|
||||
STR_EXPR #F_ASOCIO>=#F_DASOCIO
|
||||
WARNING "Range codice socio non corretto"
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
DATE F_DADATA
|
||||
BEGIN
|
||||
PROMPT 50 2 "Da data "
|
||||
FIELD #DADATA
|
||||
END
|
||||
|
||||
DATE F_ADATA
|
||||
BEGIN
|
||||
PROMPT 50 3 "A data "
|
||||
FIELD #ADATA
|
||||
END
|
||||
|
||||
BUTTON DLG_PRINT 10 2
|
||||
BEGIN
|
||||
@ -99,7 +123,7 @@ END
|
||||
|
||||
STRING DLG_PROFILE 50
|
||||
BEGIN
|
||||
PROMPT 5 7 "Profilo "
|
||||
PROMPT 5 9 "Profilo "
|
||||
PSELECT
|
||||
END
|
||||
|
||||
|
147
co/co1300.cpp
147
co/co1300.cpp
@ -3,6 +3,7 @@
|
||||
#include <form.h>
|
||||
#include <report.h>
|
||||
#include <reprint.h>
|
||||
#include <tabutil.h>
|
||||
#include <textset.h>
|
||||
|
||||
#include "co1.h"
|
||||
@ -43,12 +44,18 @@ bool TEstrattoConto_mask::on_field_event(TOperable_field& f, TField_event e, lon
|
||||
|
||||
if (ini.year() == fin.year() && ini.month() == fin.month() &&
|
||||
ini.day() == 1 && fin.is_end_month())
|
||||
{
|
||||
enable(F_GENPAG);
|
||||
enable(F_CHIUSURA);
|
||||
}
|
||||
else
|
||||
{
|
||||
disable(F_CHIUSURA);
|
||||
reset(F_CHIUSURA);
|
||||
disable(F_GENPAG);
|
||||
reset(F_GENPAG);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -63,8 +70,11 @@ bool TEstrattoConto_mask::on_field_event(TOperable_field& f, TField_event e, lon
|
||||
|
||||
class TEstrattoConto_rep : public TDocument_report
|
||||
{
|
||||
TGenerazione_effetti * _el;
|
||||
int _riga;
|
||||
long _socio;
|
||||
real _iva;
|
||||
real _totconf;
|
||||
real _saldocred;
|
||||
real _saldodeb;
|
||||
real _ritenuta;
|
||||
@ -78,6 +88,8 @@ class TEstrattoConto_rep : public TDocument_report
|
||||
TString _spchi;
|
||||
TString _spass;
|
||||
bool _chiusura;
|
||||
bool _genpag;
|
||||
bool _aggiorna;
|
||||
|
||||
protected:
|
||||
virtual bool use_mask() {return false;}
|
||||
@ -86,7 +98,7 @@ protected:
|
||||
void chiudi_mese() ;
|
||||
|
||||
public:
|
||||
TEstrattoConto_rep(bool chiusura);
|
||||
TEstrattoConto_rep(bool genpag, bool chiusura, bool aggiorna);
|
||||
};
|
||||
|
||||
bool TEstrattoConto_rep::incr_field(int idx, const TVariant& var)
|
||||
@ -166,6 +178,8 @@ bool TEstrattoConto_rep::set_usr_val(const TString& name, const TVariant& var)
|
||||
|
||||
if (name == "#EC_IMPO")
|
||||
{
|
||||
const real val = var.as_real();
|
||||
_iva -= val;
|
||||
incr_field(9, var);
|
||||
return true;
|
||||
}
|
||||
@ -175,6 +189,12 @@ bool TEstrattoConto_rep::set_usr_val(const TString& name, const TVariant& var)
|
||||
_socio = var.as_int();
|
||||
return true;
|
||||
}
|
||||
if (name == "#EC_NETC")
|
||||
{
|
||||
const real val = var.as_real();
|
||||
_totconf += val;
|
||||
return true;
|
||||
}
|
||||
if (name == "#EC_CRED")
|
||||
{
|
||||
const real val = var.as_real();
|
||||
@ -233,6 +253,88 @@ void TEstrattoConto_rep::chiudi_mese()
|
||||
{
|
||||
const TRecordset * recset = recordset();
|
||||
|
||||
if (_aggiorna)
|
||||
{
|
||||
TRecordset* r = recordset();
|
||||
const TDate datafin = r->get_var("#DATAFIN").as_date();
|
||||
int year = datafin.year();
|
||||
int month = datafin.month();
|
||||
TString key;
|
||||
TTable psc("PSC");
|
||||
|
||||
key.format("%06ld%04d%02d", _socio, year, month);
|
||||
psc.put("CODTAB", key);
|
||||
if (psc.read(_isequal, _lock) != NOERR)
|
||||
{
|
||||
psc.put("CODTAB", key);
|
||||
psc.write();
|
||||
psc.read(_isequal, _lock);
|
||||
}
|
||||
psc.put("R0", _totconf);
|
||||
psc.put("R1", _iva);
|
||||
psc.put("R2", _ritenuta);
|
||||
psc.rewrite();
|
||||
|
||||
}
|
||||
if (_genpag)
|
||||
{
|
||||
const TDate datadoc(TODAY);
|
||||
real saldo = _saldocred - _ritenuta - _saldodeb;
|
||||
|
||||
if (saldo > ZERO) // assegno
|
||||
{
|
||||
TRecordset* r = recordset();
|
||||
const TDate datachi = r->get_var("#DATAFIN").as_date();
|
||||
TDocumento doc('D', datachi.year(), _numchi, 0L);
|
||||
|
||||
doc.set_tipo(_tipoass);
|
||||
doc.stato(doc.tipo().stato_finale_inserimento());
|
||||
doc.put(DOC_DATADOC, datachi);
|
||||
doc.put(DOC_TIPOCF, "F");
|
||||
doc.put(DOC_CODCF, _socio);
|
||||
|
||||
TString key;
|
||||
|
||||
key.format("F|%ld", _socio);
|
||||
const TRectype & forn = cache().get(LF_CLIFO, key);
|
||||
const TString & codpag = forn.get(CLI_CODPAG);
|
||||
|
||||
doc.put(DOC_CODPAG, codpag);
|
||||
|
||||
const TString & iban = forn.get(CLI_IBAN);
|
||||
|
||||
doc.put(DOC_IBAN, iban);
|
||||
|
||||
TString8 codabi = forn.get(CLI_CODABI);
|
||||
|
||||
if (codabi == "00000")
|
||||
codabi = "00001";
|
||||
doc.put(DOC_CODABIA, codabi);
|
||||
|
||||
TString8 codcab = forn.get(CLI_CODCAB);
|
||||
|
||||
if (codcab == "00000")
|
||||
codcab = "00001";
|
||||
doc.put(DOC_CODCABA, codcab);
|
||||
|
||||
TSpesa_prest sp(_spass);
|
||||
TRiga_documento & row = doc.new_row(sp.tipo_riga());
|
||||
|
||||
row.put(RDOC_CODART, sp.codice());
|
||||
row.put(RDOC_CHECKED, "X");
|
||||
row.put(RDOC_DESCR,sp.descrizione());
|
||||
row.put(RDOC_UMQTA, sp.um());
|
||||
row.put(RDOC_QTA, UNO);
|
||||
row.put(RDOC_PREZZO, saldo);
|
||||
row.put(RDOC_CODIVA, sp.cod_iva());
|
||||
TLista_documenti in;
|
||||
TLista_documenti out;
|
||||
|
||||
in.add(doc);
|
||||
_el->set_writeable(false);
|
||||
_el->elabora(in, out, datadoc);
|
||||
}
|
||||
}
|
||||
if (_chiusura)
|
||||
{
|
||||
TRecordset* r = recordset();
|
||||
@ -273,6 +375,30 @@ void TEstrattoConto_rep::chiudi_mese()
|
||||
doc.put(DOC_TIPOCF, "F");
|
||||
doc.put(DOC_CODCF, _socio);
|
||||
|
||||
TString key;
|
||||
|
||||
key.format("F|%ld", _socio);
|
||||
const TRectype & forn = cache().get(LF_CLIFO, key);
|
||||
const TString & codpag = forn.get(CLI_CODPAG);
|
||||
|
||||
doc.put(DOC_CODPAG, codpag);
|
||||
|
||||
const TString & iban = forn.get(CLI_IBAN);
|
||||
|
||||
doc.put(DOC_IBAN, iban);
|
||||
|
||||
TString8 codabi = forn.get(CLI_CODABI);
|
||||
|
||||
if (codabi == "00000")
|
||||
codabi = "00001";
|
||||
doc.put(DOC_CODABIA, codabi);
|
||||
|
||||
TString8 codcab = forn.get(CLI_CODCAB);
|
||||
|
||||
if (codcab == "00000")
|
||||
codcab = "00001";
|
||||
doc.put(DOC_CODCABA, codcab);
|
||||
|
||||
TSpesa_prest sp(_spass);
|
||||
TRiga_documento & row = doc.new_row(sp.tipo_riga());
|
||||
|
||||
@ -320,7 +446,6 @@ void TEstrattoConto_rep::chiudi_mese()
|
||||
docap.put(DOC_TIPOCF, "F");
|
||||
docap.put(DOC_CODCF, _socio);
|
||||
|
||||
|
||||
sp.read(_spchi);
|
||||
TRiga_documento & rowap = docap.new_row(sp.tipo_riga());
|
||||
|
||||
@ -335,12 +460,14 @@ void TEstrattoConto_rep::chiudi_mese()
|
||||
}
|
||||
}
|
||||
_socio = 0L,
|
||||
_iva = ZERO;
|
||||
_totconf = ZERO;
|
||||
_saldocred = ZERO;
|
||||
_saldodeb = ZERO;
|
||||
_ritenuta = ZERO;
|
||||
}
|
||||
|
||||
TEstrattoConto_rep::TEstrattoConto_rep(bool chiusura) : _chiusura(chiusura), _saldocred(), _saldodeb(ZERO), _ritenuta(ZERO)
|
||||
TEstrattoConto_rep::TEstrattoConto_rep(bool genpag, bool chiusura, bool aggiorna) : _genpag(genpag), _chiusura(chiusura), _aggiorna(aggiorna), _saldocred(), _saldodeb(ZERO), _ritenuta(ZERO), _iva(ZERO), _totconf(ZERO)
|
||||
{
|
||||
load("co1300a");
|
||||
TReport_section& b11 = section('B',11);
|
||||
@ -363,6 +490,7 @@ TEstrattoConto_rep::TEstrattoConto_rep(bool chiusura) : _chiusura(chiusura), _sa
|
||||
rf_f1->set_postscript("");
|
||||
rf_f1->set_prescript("");
|
||||
rf_f1->set_field("");
|
||||
rf_f1->set_groups("1");
|
||||
}
|
||||
y += 100;
|
||||
}
|
||||
@ -376,6 +504,7 @@ TEstrattoConto_rep::TEstrattoConto_rep(bool chiusura) : _chiusura(chiusura), _sa
|
||||
_spchi = c.get("SpChi");
|
||||
_tipoass = c.get("TipoAss");
|
||||
_spass = c.get("SpAss");
|
||||
_el = new TGenerazione_effetti(c.get("ElAss"));
|
||||
|
||||
}
|
||||
|
||||
@ -395,7 +524,17 @@ void TEstrattoConto::main_loop()
|
||||
while (m.run() == K_ENTER)
|
||||
{
|
||||
TReport_book book;
|
||||
TEstrattoConto_rep rep(m.get_bool(F_CHIUSURA));
|
||||
bool chiudi = m.get_bool(F_CHIUSURA);
|
||||
bool aggiorna = m.get_bool(F_AGGIORNA);
|
||||
bool genpag = m.get_bool(F_GENPAG);
|
||||
|
||||
if (chiudi)
|
||||
chiudi = yesno_box("Sei sicuro effettuare la chiusura mensile");
|
||||
if (aggiorna)
|
||||
aggiorna = yesno_box("Sei sicuro di voler\naggiornare i progressivi dei soci");
|
||||
if (genpag)
|
||||
genpag = yesno_box("Sei sicuro di voler\ngenerare i pagamenti dei soci");
|
||||
TEstrattoConto_rep rep(genpag, chiudi, aggiorna);
|
||||
|
||||
const TDate dataini = m.get_date(F_DATAINI);
|
||||
const TDate datafin = m.get_date(F_DATAFIN);
|
||||
|
@ -8,3 +8,5 @@
|
||||
#define F_DESDASOCIO 106
|
||||
#define F_DESASOCIO 107
|
||||
#define F_CHIUSURA 108
|
||||
#define F_AGGIORNA 109
|
||||
#define F_GENPAG 110
|
||||
|
@ -87,9 +87,7 @@
|
||||
</field>
|
||||
</section>
|
||||
<section type="Head" level="1">
|
||||
<prescript description="H1 PRESCRIPT">0 #F1.98 !
|
||||
0 #F1.107 !
|
||||
0 #F1.108 !</prescript>
|
||||
<prescript description="H1 PRESCRIPT">MESSAGE RESET,F1.1@</prescript>
|
||||
</section>
|
||||
<section type="Body" />
|
||||
<section type="Body" level="1" />
|
||||
@ -283,6 +281,21 @@ DUP
|
||||
<font face="Courier New" size="7" />
|
||||
<prescript description="B11.111 PRESCRIPT">MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#PARENT.MERCATO,RAGSOC</prescript>
|
||||
</field>
|
||||
<field x="190" type="Valuta" hidden="1" align="right" width="15" id="207" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<font face="Courier New" size="7" />
|
||||
<prescript description="B11.207 PRESCRIPT">#PARENT.CODNUM @ \ legge il tipodoc
|
||||
"CONF" = IF \ controlla se &#E8; un conferimento
|
||||
#PARENT.NETCRED @ \ se &#E8; un conferimento scrivo TOTMER
|
||||
ELSE
|
||||
0
|
||||
THEN
|
||||
#THIS ! \ lo scrivo effettivamente
|
||||
</prescript>
|
||||
<postscript description="B11.207 POSTSCRIPT">#THIS @
|
||||
#EC_NETC !
|
||||
|
||||
</postscript>
|
||||
</field>
|
||||
<field x="133" type="Valuta" hidden="1" align="right" width="15" id="208" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<font face="Courier New" size="7" />
|
||||
<source>#PARENT.TOTRITACC</source>
|
||||
@ -338,6 +351,7 @@ DUP
|
||||
<field border="2" y="12" type="Linea" width="170" height="0" pattern="1" />
|
||||
<field x="116" type="Valuta" align="right" width="15" id="98" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<font face="Courier New" size="7" />
|
||||
<groups>1</groups>
|
||||
<prescript description="F1.98 PRESCRIPT">#THIS @
|
||||
#108 @
|
||||
+
|
||||
@ -345,21 +359,27 @@ DUP
|
||||
</field>
|
||||
<field x="46" y="1" type="Numero" align="right" width="8" id="102" pattern="1" text="###.###,@@">
|
||||
<font face="Courier New" size="7" />
|
||||
<groups>1</groups>
|
||||
</field>
|
||||
<field x="78" y="1" type="Valuta" align="right" width="9" id="105" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<font face="Courier New" size="7" />
|
||||
<groups>1</groups>
|
||||
</field>
|
||||
<field x="89" y="1" type="Valuta" align="right" width="8" id="106" pattern="1" text="###.###.###,@@">
|
||||
<font face="Courier New" size="7" />
|
||||
<groups>1</groups>
|
||||
</field>
|
||||
<field x="99" y="1" type="Valuta" align="right" width="15" id="107" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<font face="Courier New" size="7" />
|
||||
<groups>1</groups>
|
||||
</field>
|
||||
<field x="116" y="1" type="Valuta" align="right" width="15" id="108" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<font face="Courier New" size="7" />
|
||||
<groups>1</groups>
|
||||
</field>
|
||||
<field x="141" y="1" type="Stringa" align="right" width="16" id="109" pattern="1">
|
||||
<field x="138.5" y="1" type="Stringa" align="right" width="16" id="109" pattern="1">
|
||||
<font face="Courier New" bold="1" size="8" />
|
||||
<groups>1</groups>
|
||||
<prescript description="F1.109 PRESCRIPT">"F1.107" @ \ leggo il contenuto del campo 107
|
||||
"F1.108" @ \ leggo il contenuto del campo 108
|
||||
- \ faccio la sottrazione tra i due
|
||||
@ -370,8 +390,9 @@ ELSE
|
||||
THEN
|
||||
!</prescript>
|
||||
</field>
|
||||
<field x="158" y="1" type="Valuta" align="right" width="12" id="110" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<field x="154.5" y="1" type="Valuta" align="right" width="12" id="110" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<font face="Courier New" bold="1" size="8" />
|
||||
<groups>1</groups>
|
||||
<prescript description="F1.110 PRESCRIPT">"F1.107" @ \ leggo il contenuto del campo 107
|
||||
"F1.108" @ \ leggo il conetnuto del campo 108
|
||||
- \ faccio la sottrazione tra i due
|
||||
|
@ -80,9 +80,19 @@ BEGIN
|
||||
FIELD DATAFIN
|
||||
END
|
||||
|
||||
BOOLEAN F_GENPAG
|
||||
BEGIN
|
||||
PROMPT 2 8 "Genera i pagamenti"
|
||||
END
|
||||
|
||||
BOOLEAN F_CHIUSURA
|
||||
BEGIN
|
||||
PROMPT 2 8 "Genera la chiusura mensile"
|
||||
PROMPT 2 10 "Genera la chiusura mensile"
|
||||
END
|
||||
|
||||
BOOLEAN F_AGGIORNA
|
||||
BEGIN
|
||||
PROMPT 2 12 "Aggiorna i progressivi mensili"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
1139
co/co1500.cpp
1139
co/co1500.cpp
File diff suppressed because it is too large
Load Diff
13
co/co1500a.h
13
co/co1500a.h
@ -1,9 +1,14 @@
|
||||
// invio dati mov coop. da ebc ad teamsystem
|
||||
// invio fatture soci coop. ad teamsystem
|
||||
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_INPATH 103
|
||||
#define F_INFILEA 104
|
||||
#define F_INFILEM 107
|
||||
#define F_MOVIMENTI 103
|
||||
#define F_INTRASTAT 104
|
||||
#define F_PATH 105
|
||||
#define F_FILE 106
|
||||
#define F_DATA_DA 107
|
||||
#define F_DATA_AL 108
|
||||
#define F_CODNUM 109
|
||||
#define F_DESNUM 110
|
||||
#define F_CODEL 111
|
||||
#define F_DESEL 112
|
||||
|
110
co/co1500a.uml
110
co/co1500a.uml
@ -1,6 +1,6 @@
|
||||
#include "co1500a.h"
|
||||
|
||||
PAGE "Invio mov. coop a TeamSystem" -1 -1 78 20
|
||||
PAGE "Invio Fatture soci coop a TeamSystem" -1 -1 78 14
|
||||
|
||||
GROUPBOX DLG_NULL 76 3
|
||||
BEGIN
|
||||
@ -23,60 +23,106 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BOOLEAN F_MOVIMENTI
|
||||
BEGIN
|
||||
PROMPT 2 4 "Sorgenti"
|
||||
PROMPT 3 5 "Fatture"
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
STRING F_INPATH 256 39
|
||||
BOOLEAN F_INTRASTAT
|
||||
BEGIN
|
||||
PROMPT 3 5 "Cartella "
|
||||
DSELECT
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD TSMInPath
|
||||
END
|
||||
|
||||
STRING F_INFILEA 18
|
||||
BEGIN
|
||||
PROMPT 3 6 "File anagrafica "
|
||||
FIELD TSMInFileA
|
||||
END
|
||||
|
||||
STRING F_INFILEM 18
|
||||
BEGIN
|
||||
PROMPT 3 7 "File movimenti "
|
||||
FIELD TSMInFileM
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 4
|
||||
BEGIN
|
||||
PROMPT 2 9 "Destinazione"
|
||||
PROMPT 3 6 "Intrastat"
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
STRING F_PATH 256 39
|
||||
BEGIN
|
||||
PROMPT 3 10 "Cartella "
|
||||
PROMPT 2 4 "Cartella "
|
||||
DSELECT
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD TSMDestPath
|
||||
FIELD TSDestPath
|
||||
END
|
||||
|
||||
STRING F_FILE 18
|
||||
BEGIN
|
||||
PROMPT 3 11 "File "
|
||||
FIELD TSMDestFile
|
||||
PROMPT 55 4 "File"
|
||||
FIELD TSDestFile
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
STRING F_CODEL 8
|
||||
BEGIN
|
||||
PROMPT 2 6 "Cod.Elab. "
|
||||
FLAG "U"
|
||||
USE %ELD SELECT I0 == 3
|
||||
INPUT CODTAB F_CODEL
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@55" S0
|
||||
OUTPUT F_CODEL CODTAB
|
||||
OUTPUT F_DESEL S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD TSCodEl
|
||||
WARNING "E' necessario specificare il codice elaborazione"
|
||||
END
|
||||
|
||||
STRING F_DESEL 50
|
||||
BEGIN
|
||||
PROMPT 24 6 ""
|
||||
USE %ELD KEY 2 SELECT I0 == 3
|
||||
INPUT S0 F_DESEL
|
||||
DISPLAY "Descrizione@55" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODEL
|
||||
END
|
||||
|
||||
STRING F_CODNUM 4
|
||||
BEGIN
|
||||
PROMPT 2 8 "Numeraz. "
|
||||
FIELD CODNUM
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUM
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODNUM CODTAB
|
||||
OUTPUT F_DESNUM S0
|
||||
CHECKTYPE FORCED
|
||||
FLAG "UPA"
|
||||
WARNING "Numerazione assente"
|
||||
FIELD TSCodNum
|
||||
END
|
||||
|
||||
STRING F_DESNUM 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
HELP "Descrizione numerazione"
|
||||
USE %NUM KEY 2
|
||||
INPUT S0 F_DESNUM
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODNUM
|
||||
END
|
||||
|
||||
|
||||
DATE F_DATA_DA
|
||||
BEGIN
|
||||
PROMPT 2 10 "Data iniz."
|
||||
END
|
||||
|
||||
DATE F_DATA_AL
|
||||
BEGIN
|
||||
PROMPT 30 10 "Data fin. "
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
ENDMASK
|
@ -64,7 +64,7 @@ MESSAGE RESET,F2.105</prescript>
|
||||
<prescript description="B1.103 PRESCRIPT">#THIS @
|
||||
"F2.103" !</prescript>
|
||||
</field>
|
||||
<field x="52" type="Prezzo" align="right" width="15" id="104" pattern="1" text="###.###.###,@@">
|
||||
<field x="52" type="Valuta" align="right" width="15" id="104" pattern="1" text="###.###.###,@@">
|
||||
<prescript description="B1.104 PRESCRIPT">"DOC.TIPODOC" @ \ leggo il tipo documento
|
||||
"CONF" = IF \ controllo se &#E8; un conferimento
|
||||
"DOC.NETCRED" @
|
||||
@ -76,7 +76,7 @@ ELSE \ se non &#E8; un conferimento
|
||||
THEN
|
||||
+! \ lo sommo</prescript>
|
||||
</field>
|
||||
<field x="52" y="1" type="Prezzo" align="right" width="15" id="105" pattern="1" text="###.###.###,@@">
|
||||
<field x="52" y="1" type="Valuta" align="right" width="15" id="105" pattern="1" text="###.###.###,@@">
|
||||
<prescript description="B1.105 PRESCRIPT">"DOC.TOTRITACC" @
|
||||
"F2.104" \ lo metto nella coda del gruppo
|
||||
+! \ lo sommo</prescript>
|
||||
@ -91,14 +91,14 @@ THEN
|
||||
<section type="Foot" level="1">
|
||||
<field border="2" y="1" type="Linea" width="170" height="0" pattern="1" />
|
||||
<field x="55" y="2" type="Testo" width="15" pattern="1" text="TOTALI" />
|
||||
<field x="75" y="2" type="Prezzo" align="right" width="17" id="101" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="94" y="2" type="Prezzo" align="right" width="17" id="102" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="75" y="2" type="Valuta" align="right" width="17" id="101" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="94" y="2" type="Valuta" align="right" width="17" id="102" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
</section>
|
||||
<section type="Foot" level="2">
|
||||
<field x="3" type="Numero" align="right" width="3" id="101" pattern="1" />
|
||||
<field x="7" type="Stringa" width="49" id="102" pattern="1" />
|
||||
<field x="58" type="Stringa" align="right" width="15" id="103" pattern="1" />
|
||||
<field x="75" type="Prezzo" align="right" width="17" id="104" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<field x="75" type="Valuta" align="right" width="17" id="104" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<prescript description="F2.104 PRESCRIPT">#THIS @ \ leggo il valore attuale
|
||||
DUP \ lo duplico
|
||||
0 E;= IF \ se &#E8; maggiore di zero
|
||||
@ -110,7 +110,7 @@ ELSE
|
||||
THEN</prescript>
|
||||
<postscript description="F2.104 POSTSCRIPT">MESSAGE ADD,F1.101</postscript>
|
||||
</field>
|
||||
<field x="94" type="Prezzo" align="right" width="17" id="105" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<field x="94" type="Valuta" align="right" width="17" id="105" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<postscript description="F2.105 POSTSCRIPT">MESSAGE ADD,F1.102</postscript>
|
||||
</field>
|
||||
<field x="113" type="Stringa" width="70" id="106" pattern="1" />
|
||||
|
@ -74,12 +74,9 @@ SELECT BETWEEN(CODART,#PARENT.#DACODART,#PARENT.#ACODART)
|
||||
FROM PROVV=#PARENT.PROVV ANNO=#PARENT.ANNO CODNUM=#PARENT.CODNUM NDOC=#PARENT.NDOC
|
||||
TO PROVV=#PARENT.PROVV ANNO=#PARENT.ANNO CODNUM=#PARENT.CODNUM NDOC=#PARENT.NDOC
|
||||
</sql>
|
||||
<field x="2" type="Numero" align="right" width="3" pattern="1" hide_zero="1">
|
||||
<source>NRIGA</source>
|
||||
</field>
|
||||
<field x="6.5" type="Stringa" width="3" pattern="1">
|
||||
<field x="2" type="Stringa" width="8" pattern="1">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
<source>RDOC.CODARTMAG</source>
|
||||
<source>RDOC.CODART</source>
|
||||
</field>
|
||||
<field x="10.5" type="Stringa" width="51" pattern="1">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
|
@ -50,7 +50,7 @@ BEGIN
|
||||
OUTPUT F_ASOCIO CODCF
|
||||
STR_EXPR #F_ASOCIO>=#F_DASOCIO
|
||||
WARNING "Range codice socio non corretto"
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_FROMCODART 8
|
||||
@ -62,7 +62,6 @@ BEGIN
|
||||
DISPLAY "Prestazione@20" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_FROMCODART CODTAB
|
||||
GROUP G_ART G_ALL
|
||||
FIELD #DACODART
|
||||
END
|
||||
|
||||
@ -75,7 +74,6 @@ BEGIN
|
||||
DISPLAY "Prestazione@20" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TOCODART CODTAB
|
||||
GROUP G_ART G_ALL
|
||||
STR_EXPR #F_TOCODART>=#F_FROMCODART
|
||||
WARNING "Range codice articolo non corretto"
|
||||
FIELD #ACODART
|
||||
@ -85,14 +83,12 @@ DATE F_DADATA
|
||||
BEGIN
|
||||
PROMPT 50 2 "Da data "
|
||||
FIELD #DADATA
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE F_ADATA
|
||||
BEGIN
|
||||
PROMPT 50 3 "A data "
|
||||
FIELD #ADATA
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
BUTTON DLG_PRINT 10 2
|
||||
|
@ -28,3 +28,9 @@
|
||||
#define F_DTIPOASS 127
|
||||
#define F_SPASS 128
|
||||
#define F_DSPASS 129
|
||||
#define F_CODCOOP 130
|
||||
#define F_RAGCOOP 131
|
||||
#define F_CODELASS 132
|
||||
#define F_DESELASS 133
|
||||
|
||||
|
||||
|
47
co/colib.cpp
47
co/colib.cpp
@ -141,7 +141,7 @@ void update_spese_doc(const long codmercato, TDocumento& doc)
|
||||
}
|
||||
|
||||
// crea una lista documenti a partire da un conferimento per compagnia
|
||||
int compagnia2soci(const TDocumento& doc_orig, const TString& codcomp, const long codmercato, TLista_documenti& listadoc)
|
||||
int compagnia2soci(const TDocumento& doc_orig, const TString& codcomp, const long codmercato, const long nfasta, TLista_documenti& listadoc)
|
||||
{
|
||||
TString_array listasoci;
|
||||
TRelation relsoci(LF_SOCICOOP);
|
||||
@ -160,6 +160,8 @@ int compagnia2soci(const TDocumento& doc_orig, const TString& codcomp, const lon
|
||||
TDocumento docnew(doc_orig);
|
||||
docnew.put(DOC_CODCF, codsocio);
|
||||
docnew.put(DOC_TIPOCF, "F");
|
||||
docnew.put("MERCATO", codmercato);
|
||||
docnew.put("NFASTA", nfasta);
|
||||
listadoc.add(docnew);
|
||||
}
|
||||
for (int i = 1; i <= doc_orig.rows(); i++)
|
||||
@ -170,7 +172,7 @@ int compagnia2soci(const TDocumento& doc_orig, const TString& codcomp, const lon
|
||||
const char avalore = riga_doc.get_char(RDOC_CODAGG1);
|
||||
if (avalore == 'X')
|
||||
{
|
||||
TGeneric_distrib prezzo_dist(riga_doc.prezzo(false, false));
|
||||
TGeneric_distrib prezzo_dist(riga_doc.prezzo(false, false), 2);
|
||||
for (int j = 0; j < listadoc.items(); j++)
|
||||
{
|
||||
long codsocio = listadoc[j].codcf();
|
||||
@ -183,21 +185,34 @@ int compagnia2soci(const TDocumento& doc_orig, const TString& codcomp, const lon
|
||||
listadoc[k][i].put(RDOC_PREZZO, prezzosocio);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
TGeneric_distrib qta_dist(riga_doc.quantita(), 5);
|
||||
int j;
|
||||
|
||||
for (j = 0; j < listadoc.items(); j++)
|
||||
{
|
||||
TGeneric_distrib qta_dist(riga_doc.quantita());
|
||||
for (int j = 0; j < listadoc.items(); j++)
|
||||
{
|
||||
long codsocio = listadoc[j].codcf();
|
||||
real perc = get_perc_socio(codsocio, codcomp);
|
||||
qta_dist.add(perc);
|
||||
}
|
||||
for (int k = 0; k < listadoc.items(); k++)
|
||||
{
|
||||
real qtasocio = qta_dist.get();
|
||||
listadoc[k][i].put(RDOC_QTA, qtasocio);
|
||||
}
|
||||
}
|
||||
long codsocio = listadoc[j].codcf();
|
||||
real perc = get_perc_socio(codsocio, codcomp);
|
||||
qta_dist.add(perc);
|
||||
}
|
||||
for (j = 0; j < listadoc.items(); j++)
|
||||
{
|
||||
real qtasocio = qta_dist.get();
|
||||
listadoc[j][i].put(RDOC_QTA, qtasocio);
|
||||
}
|
||||
TGeneric_distrib qtagg_dist(riga_doc.get_real(RDOC_QTAGG1), 5);
|
||||
|
||||
for (j = 0; j < listadoc.items(); j++)
|
||||
{
|
||||
long codsocio = listadoc[j].codcf();
|
||||
real perc = get_perc_socio(codsocio, codcomp);
|
||||
qtagg_dist.add(perc);
|
||||
}
|
||||
for (j = 0; j < listadoc.items(); j++)
|
||||
{
|
||||
real qtasocio = qtagg_dist.get();
|
||||
listadoc[j][i].put(RDOC_QTAGG1, qtasocio);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < listadoc.items(); i++)
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include "../ve/velib04.h"
|
||||
|
||||
// crea la lista documenti per tutti i soci
|
||||
int compagnia2soci(const TDocumento& doc_compagnia, const TString& codcomp, const long codmercato, TLista_documenti& docs_soci);
|
||||
int compagnia2soci(const TDocumento& doc_compagnia, const TString& codcomp, const long codmercato, const long nfasta, TLista_documenti& docs_soci);
|
||||
void update_spese_doc(const long codmercato, TDocumento& doc);
|
||||
|
||||
#endif
|
||||
|
@ -37,6 +37,7 @@ Item_01 = "Gestione conferimenti/prestazioni", "co0 -6", "F"
|
||||
Item_02 = "Importazione conferimenti", "co0 -7", "F"
|
||||
Item_03 = "Aggiornamento prezzi", "co0 -8", "F"
|
||||
Item_04 = "Fatturazione conferimenti", "co1 -3", "F"
|
||||
Item_04 = "Contabilizzazione soci", "co1 -4", "F"
|
||||
|
||||
[COMENU_014]
|
||||
Caption = "Stampe"
|
||||
|
@ -1,3 +1,3 @@
|
||||
160
|
||||
0
|
||||
$mercaticoop|0|0|53|0|Anagrafica mercati cooperative|||
|
||||
$mercaticoop|0|0|57|0|Anagrafica mercati cooperative|||
|
||||
|
@ -7,9 +7,9 @@ CODIVA1|1|4|0|1^ codice iva
|
||||
DIRITTI2|4|5|2|2^ % diritti di mercato
|
||||
ARROT2|1|1|0|2^ arrotondamento
|
||||
CODIVA2|1|4|0|2^ codice iva
|
||||
SPESEFACC|4|9|2|Spese di facchinaggio (Euro/kg)
|
||||
SPESEFACC|4|11|4|Spese di facchinaggio (Euro/kg)
|
||||
CODIVAFACC|1|4|0|Codice iva per spese facchinaggio
|
||||
SPESECASSE|4|9|2|Spese ricambio casse (Euro/cassa)
|
||||
SPESECASSE|4|11|4|Spese ricambio casse (Euro/cassa)
|
||||
CODIVACASS|1|4|0|Codice iva per spese ricambio casse
|
||||
1
|
||||
CODCF|
|
||||
|
72
co/rf700000.frm
Executable file
72
co/rf700000.frm
Executable file
@ -0,0 +1,72 @@
|
||||
USE 31
|
||||
JOIN 14 INTO NPROGTR==NPROGTR
|
||||
JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
JOIN 17 TO 20 INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
JOIN 16 TO 17 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDEFF
|
||||
JOIN 13 TO 20 ALIAS 113 INTO COM==COMCF
|
||||
JOIN 13 TO 16 ALIAS 213 INTO COM==COM
|
||||
JOIN %BAN ALIAS 201 INTO CODTAB[1,5]==CODABI
|
||||
JOIN %BAN ALIAS 203 INTO CODTAB==CODABI+CODCAB
|
||||
JOIN 13 TO 203@ ALIAS 313 INTO COM==S5
|
||||
JOIN %BAN ALIAS 202 INTO CODTAB==CODABIP+CODCABP
|
||||
END
|
||||
DESCRIPTION
|
||||
BEGIN
|
||||
31->* "Effetti"
|
||||
14->* "Righe effetto"
|
||||
20->* "Clienti e Fornitori"
|
||||
113@->* "Comuni"
|
||||
213@->* "Comuni"
|
||||
201@->* "Tabella banche"
|
||||
202@->* "Tabella banche"
|
||||
203@->* "Tabella banche"
|
||||
END
|
||||
GENERAL
|
||||
BEGIN
|
||||
OFFSET 0 0
|
||||
END
|
||||
SECTION BODY ODD 17
|
||||
DATA 1 10
|
||||
BEGIN
|
||||
KEY "data scadenza"
|
||||
PROMPT 36 3 ""
|
||||
FIELD 31->DATASCAD
|
||||
END
|
||||
STRINGA 23 3
|
||||
BEGIN
|
||||
KEY "Codice valuta"
|
||||
PROMPT 0 0 ""
|
||||
FIELD 31->CODVAL
|
||||
FLAGS "H"
|
||||
END
|
||||
VALUTA 2 18
|
||||
BEGIN
|
||||
KEY "importo"
|
||||
PROMPT 55 3 ""
|
||||
MESSAGE _IMPORTO
|
||||
DRIVENBY 23
|
||||
END
|
||||
VALUTA 4
|
||||
BEGIN
|
||||
KEY "importo in lettere"
|
||||
PROMPT 18 9 ""
|
||||
MESSAGE _IMPORTO
|
||||
DRIVENBY 23
|
||||
PICTURE "(*,*)LETTERE@44"
|
||||
END
|
||||
VALUTA 10 18
|
||||
BEGIN
|
||||
KEY "importo fattura"
|
||||
PROMPT 73 10 ""
|
||||
MESSAGE _FATT,!IMPFATT
|
||||
DRIVENBY 23
|
||||
FL "D"
|
||||
END
|
||||
STRING 11 50
|
||||
BEGIN
|
||||
KEY "ragione sociale debitore"
|
||||
PROMPT 20 11 ""
|
||||
MESSAGE _CLI,!RAGSOC
|
||||
END
|
||||
END
|
||||
END
|
157
db/db0500.cpp
157
db/db0500.cpp
@ -949,6 +949,8 @@ class TDistinta_mask : public TAutomask
|
||||
{
|
||||
TDistinta_tree& _tree;
|
||||
TCodgiac_livelli *_livelli_giac;
|
||||
TString _numdoc;
|
||||
TDate _datadoc;
|
||||
|
||||
void set_um_rif(int row);
|
||||
|
||||
@ -1458,6 +1460,7 @@ bool TDistinta_mask::on_field_event(TOperable_field& o, TField_event e, long jol
|
||||
sheet.force_update();
|
||||
}
|
||||
break;
|
||||
case DLG_AGGPRZ:
|
||||
case DLG_MOV:
|
||||
if (e == fe_button)
|
||||
{
|
||||
@ -1469,92 +1472,132 @@ bool TDistinta_mask::on_field_event(TOperable_field& o, TField_event e, long jol
|
||||
TMov_mask mov(get(F_CODICE), &sf);
|
||||
TMagazzini m;
|
||||
|
||||
if (!m.gestmultimag())
|
||||
if (!do_mov)
|
||||
{
|
||||
mov.disable(F_CODMAG);
|
||||
mov.disable(F_DESMAG);
|
||||
mov.disable(F_CODDEP);
|
||||
mov.disable(F_DESDEP);
|
||||
mov.hide(F_DATAREG);
|
||||
mov.hide(F_CODCAUS);
|
||||
mov.hide(F_DESCAU);
|
||||
mov.hide(F_CODMAG);
|
||||
mov.hide(F_DESMAG);
|
||||
mov.hide(F_CODDEP);
|
||||
mov.hide(F_DESDEP);
|
||||
mov.hide(F_QUANT);
|
||||
mov.hide(F_SCONTO);
|
||||
mov.hide(F_NUMDOC);
|
||||
mov.hide(F_DATADOC);
|
||||
}
|
||||
else
|
||||
if (!m.gestdep())
|
||||
{
|
||||
if (!m.gestmultimag())
|
||||
{
|
||||
mov.disable(F_CODMAG);
|
||||
mov.disable(F_DESMAG);
|
||||
mov.disable(F_CODDEP);
|
||||
mov.disable(F_DESDEP);
|
||||
}
|
||||
mov.set(F_CODMAG, m.standardmag());
|
||||
mov.set(F_CODDEP, m.standarddep());
|
||||
else
|
||||
if (!m.gestdep())
|
||||
{
|
||||
mov.disable(F_CODDEP);
|
||||
mov.disable(F_DESDEP);
|
||||
}
|
||||
mov.set(F_CODMAG, m.standardmag());
|
||||
mov.set(F_CODDEP, m.standarddep());
|
||||
mov.set(F_NUMDOC, _numdoc);
|
||||
mov.set(F_DATADOC, _datadoc);
|
||||
}
|
||||
mov.set(F_PREZZOM, get(F_PREZZO));
|
||||
if (mov.run() == K_ENTER)
|
||||
{
|
||||
TFilename name;
|
||||
TAssoc_array & arts = mov.costs();
|
||||
TArticolo articolo;
|
||||
|
||||
name.temp("", "ini");
|
||||
|
||||
FOR_EACH_ASSOC_OBJECT(arts, obj, key, item)
|
||||
if (do_mov)
|
||||
{
|
||||
if (articolo.read(key, _isequal, _testandlock))
|
||||
{
|
||||
const real costo = * (real *)item;
|
||||
articolo.put(ANAMAG_ULTCOS1, costo);
|
||||
articolo.rewrite();
|
||||
}
|
||||
TAssoc_array & arts = mov.costs();
|
||||
TArticolo articolo;
|
||||
|
||||
name.temp("", "ini");
|
||||
|
||||
_numdoc = mov.get(F_NUMDOC);
|
||||
_datadoc = mov.get_date(F_DATADOC);
|
||||
FOR_EACH_ASSOC_OBJECT(arts, obj, key, item)
|
||||
{
|
||||
const real costo = * (real *)item;
|
||||
|
||||
if (articolo.lock_and_prompt(key))
|
||||
{
|
||||
articolo.put(ANAMAG_ULTCOS1, costo);
|
||||
articolo.rewrite();
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
TConfig c(name);
|
||||
c.set_paragraph("Transaction");
|
||||
c.set("Action", "Insert");
|
||||
c.set("Mode", "");
|
||||
c.set_paragraph(format("%d", LF_MOVMAG));
|
||||
c.set(MOVMAG_DATAREG, mov.get(F_DATAREG));
|
||||
c.set(MOVMAG_CODCAUS, mov.get(F_CODCAUS));
|
||||
c.set(MOVMAG_NUMDOC, _numdoc);
|
||||
c.set(MOVMAG_EXNUMDOC, _numdoc);
|
||||
c.set(MOVMAG_EXDATADOC, _datadoc.string());
|
||||
c.set_paragraph(format("%d,1", LF_RMOVMAG));
|
||||
TString8 codmag(mov.get(F_CODMAG));
|
||||
|
||||
codmag.rpad(3);
|
||||
codmag << mov.get(F_CODDEP);
|
||||
c.set(RMOVMAG_CODMAG, codmag);
|
||||
c.set(RMOVMAG_CODART, get(F_CODICE));
|
||||
c.set(RMOVMAG_UM, get(F_UM));
|
||||
c.set(RMOVMAG_QUANT, mov.get(F_QUANT));
|
||||
c.set(RMOVMAG_PREZZO, mov.get(F_PREZZOM));
|
||||
}
|
||||
|
||||
TExternal_app app(format("mg1 -0 -i%s", (const char *)name));
|
||||
|
||||
app.run();
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
TConfig c(name);
|
||||
c.set_paragraph("Transaction");
|
||||
c.set("Action", "Insert");
|
||||
c.set("Mode", "");
|
||||
c.set_paragraph(format("%d", LF_MOVMAG));
|
||||
c.set(MOVMAG_DATAREG, mov.get(F_DATAREG));
|
||||
c.set(MOVMAG_CODCAUS, mov.get(F_CODCAUS));
|
||||
c.set(MOVMAG_NUMDOC, mov.get(F_NUMDOC));
|
||||
c.set(MOVMAG_EXNUMDOC, mov.get(F_NUMDOC));
|
||||
c.set(MOVMAG_EXDATADOC, mov.get(F_DATADOC));
|
||||
c.set_paragraph(format("%d,1", LF_RMOVMAG));
|
||||
TString8 codmag(mov.get(F_CODMAG));
|
||||
|
||||
codmag.rpad(3);
|
||||
codmag << mov.get(F_CODDEP);
|
||||
c.set(RMOVMAG_CODMAG, codmag);
|
||||
c.set(RMOVMAG_CODART, get(F_CODICE));
|
||||
c.set(RMOVMAG_UM, get(F_UM));
|
||||
c.set(RMOVMAG_QUANT, mov.get(F_QUANT));
|
||||
c.set(RMOVMAG_PREZZO, mov.get(F_PREZZOM));
|
||||
TLocalisamfile art(LF_ANAMAG);
|
||||
art.put(ANAMAG_CODART, get(F_CODICE));
|
||||
if (art.read(_isequal, _testandlock) == NOERR)
|
||||
{
|
||||
const real costo(mov.get(F_PREZZOM)); // Aggiorna ultimo costo in anagrafica
|
||||
art.put(ANAMAG_ULTCOS1, costo);
|
||||
art.rewrite();
|
||||
}
|
||||
}
|
||||
|
||||
TExternal_app app(format("mg1 -0 -i%s", (const char *)name));
|
||||
|
||||
app.run();
|
||||
|
||||
const real prezzo(mov.get(F_PREZZOV));
|
||||
TLocalisamfile umart(LF_UMART);
|
||||
umart.put(UMART_CODART, get(F_CODICE));
|
||||
umart.put(UMART_NRIGA, 1);
|
||||
if (umart.read(_isequal, _testandlock) == NOERR)
|
||||
{
|
||||
umart.put(UMART_PREZZO, prezzo);
|
||||
umart.put(UMART_PREZZO, prezzo); // Aggiorna prezzo di vendita
|
||||
umart.rewrite();
|
||||
}
|
||||
set(F_CODICE, get(F_CODICE), 0x3);
|
||||
|
||||
TConfig c(name);
|
||||
|
||||
c.set_paragraph(format("%d", LF_MOVMAG));
|
||||
|
||||
const long movmag = c.get_long(MOVMAG_NUMREG);
|
||||
|
||||
if (movmag > 0L && yesno_box("Vuoi stampare le etichette"))
|
||||
if (do_mov)
|
||||
{
|
||||
const TString8 codcaus(mov.get(F_CODCAUS));
|
||||
const TString codart(get(F_CODICE));
|
||||
TExternal_app etich_app(format("mg3 -5 101=%s,103=%s,106=M,109=%s,110=%ld,111=%ld",
|
||||
(const char *) codart, (const char *) codart, (const char *) codcaus, movmag, movmag));
|
||||
TConfig c(name);
|
||||
|
||||
etich_app.run();
|
||||
c.set_paragraph(format("%d", LF_MOVMAG));
|
||||
|
||||
const long movmag = c.get_long(MOVMAG_NUMREG);
|
||||
|
||||
if (movmag > 0L && yesno_box("Vuoi stampare le etichette"))
|
||||
{
|
||||
const TString8 codcaus(mov.get(F_CODCAUS));
|
||||
const TString codart(get(F_CODICE));
|
||||
TExternal_app etich_app(format("mg3 -5 101=%s,103=%s,106=M,109=%s,110=%ld,111=%ld",
|
||||
(const char *) codart, (const char *) codart, (const char *) codcaus, movmag, movmag));
|
||||
|
||||
etich_app.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -108,4 +108,5 @@
|
||||
#define F_SCONTO 132
|
||||
#define F_NUMDOC 133
|
||||
#define F_DATADOC 134
|
||||
#define DLG_AGGPRZ 135
|
||||
#endif
|
||||
|
@ -37,13 +37,13 @@ END
|
||||
BOOLEAN F_GESCODART
|
||||
BEGIN
|
||||
PROMPT 2 4 "Gestione codice articolo a livelli"
|
||||
FIELD GESLIVART
|
||||
FIELD GESLIVART
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_GESLIVGIAC
|
||||
BEGIN
|
||||
PROMPT 2 6 "Gestione livelli di giacenza"
|
||||
PROMPT 2 6 "Gestione livelli di giacenza"
|
||||
FIELD GESLIVGIAC
|
||||
GROUP 1
|
||||
END
|
||||
@ -62,7 +62,6 @@ BEGIN
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
|
||||
LIST F_GESUBICAZ 10
|
||||
BEGIN
|
||||
PROMPT 2 12 "Gestione ubicazioni "
|
||||
@ -82,7 +81,7 @@ END
|
||||
BOOLEAN F_GESCOMMESSE
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
PROMPT 2 14 "Gestione commesse"
|
||||
PROMPT 40 14 "Gestione commesse"
|
||||
FIELD GESCOMMESSE
|
||||
GROUP 1
|
||||
END
|
||||
@ -98,11 +97,18 @@ END
|
||||
NUMBER F_GESDECIMALI 1
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
PROMPT 2 18 "Numero di decimali"
|
||||
PROMPT 40 16 "Numero di decimali"
|
||||
FIELD DECIMALS
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_CHECK_GIAC
|
||||
BEGIN
|
||||
PROMPT 2 16 "Controllo giacenza nei movimenti"
|
||||
FIELD CHECK_GIAC
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
102
mg/mg1100.cpp
102
mg/mg1100.cpp
@ -21,6 +21,9 @@ class TMask_movmag : public TMask
|
||||
bool price_proposed;
|
||||
real proposed_price(const char * codart, real quant,const char * causrig);
|
||||
int _autorows;
|
||||
TArray _old_qta;
|
||||
bool _check_giac;
|
||||
|
||||
|
||||
// aggiorna la riga di magazzino aggiungendo righe automatiche o esplosioni
|
||||
bool update_rigamov(int r, const char * old_codcaus, const char * old_codart, const real & old_quant);
|
||||
@ -28,7 +31,7 @@ class TMask_movmag : public TMask
|
||||
bool add_explrows(int r);
|
||||
TMagazzini _magazzini;
|
||||
|
||||
bool qta_inventory(real & qta);
|
||||
void qta_inventory(real & qta);
|
||||
|
||||
static bool notify_righe(TSheet_field & fld_righe, int item, KEY k); // notify delle righe di sheet
|
||||
static bool handle_righe(TMask_field &f, KEY k); // handler delle righe
|
||||
@ -44,6 +47,8 @@ class TMask_movmag : public TMask
|
||||
static void sheetrighe_put(TSheet_field &fld_righe, int item);
|
||||
static void sheetrighe_get(TSheet_field &fld_righe, int item);
|
||||
public:
|
||||
TArticolo_giacenza& curr_art();
|
||||
TArray & old_qta() { return _old_qta; }
|
||||
void update_tot();
|
||||
const TMagazzini& magazzini() const { return _magazzini; }
|
||||
int autorows() const { return _autorows;}
|
||||
@ -105,11 +110,11 @@ TMask_movmag::TMask_movmag(TMov_mag * m_m)
|
||||
sm.field(F_LIV1+l).set_handler(codgrp_handler);
|
||||
}
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
|
||||
if (prassid.get_bool("GES", NULL, A_LISTINI))
|
||||
field(F_CATVEN).show(prassid.get_bool("GESLISCV"));
|
||||
else
|
||||
field(F_CATVEN).hide();
|
||||
|
||||
const bool gmm = magazzini().gestmultimag();
|
||||
sm.field(F_DESMAG).enable(gmm);
|
||||
ss.enable_column(ss.cid2index(F_CODMAG),gmm);
|
||||
@ -118,6 +123,8 @@ TMask_movmag::TMask_movmag(TMov_mag * m_m)
|
||||
sm.field(F_DESDEP).enable(gd);
|
||||
ss.enable_column(ss.cid2index(F_CODDEP),gd);
|
||||
_autorows = prassid.get_int("AUTOROWS", "mg");
|
||||
_check_giac = prassid.get_bool("CHECK_GIAC", "mg");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -186,12 +193,31 @@ void TMask_movmag::update_tot()
|
||||
{
|
||||
TSheet_field& ss = sfield(F_RIGHE);
|
||||
const int idx_val = ss.cid2index(F_VALORE); // Posizione del valore
|
||||
real valore, tot;
|
||||
|
||||
const int idx_qta = ss.cid2index(F_QUANT); // Posizione della quantita'
|
||||
const int idx_caus = ss.cid2index(F_CAUSRIG); // Posizione della causale di riga
|
||||
const bool start = !is_running();
|
||||
real valore, tot, qta;
|
||||
const TString8 causmov = get(F_CODCAUS);
|
||||
TString8 codcaus;
|
||||
|
||||
if (start)
|
||||
_old_qta.destroy();
|
||||
FOR_EACH_SHEET_ROW(ss, i, row)
|
||||
{
|
||||
row->get(idx_val, valore);
|
||||
tot += valore;
|
||||
if (start)
|
||||
{
|
||||
row->get(idx_qta, qta);
|
||||
row->get(idx_caus, codcaus);
|
||||
|
||||
if (codcaus.blank())
|
||||
codcaus = causmov;
|
||||
const TCausale_magazzino cau(codcaus);
|
||||
if (cau.sgn(s_giac) == -1)
|
||||
qta = -qta;
|
||||
_old_qta.add(qta, i);
|
||||
}
|
||||
}
|
||||
set(F_VALORE_TOT, tot);
|
||||
}
|
||||
@ -200,7 +226,7 @@ bool TMask_movmag::notify_righe(TSheet_field& ss, int r, KEY key)
|
||||
{
|
||||
static TString8 old_codcaus;
|
||||
static TCodice_articolo old_codart;
|
||||
static real old_quant = UNO;
|
||||
static real old_quant;
|
||||
static bool selecting = false;
|
||||
|
||||
TMask_movmag& m= (TMask_movmag&)ss.mask();
|
||||
@ -213,6 +239,7 @@ bool TMask_movmag::notify_righe(TSheet_field& ss, int r, KEY key)
|
||||
// autoremove automatic lines along with the original one
|
||||
ss.destroy(r+1);
|
||||
}
|
||||
m._old_qta.destroy(r, true);
|
||||
|
||||
} else
|
||||
if ( key == K_CTRL + K_DEL ) // Cancellazione
|
||||
@ -249,6 +276,7 @@ bool TMask_movmag::notify_righe(TSheet_field& ss, int r, KEY key)
|
||||
stdmag = m.magazzini().standardmag();
|
||||
stddep = m.magazzini().standarddep();
|
||||
}
|
||||
m._old_qta.insert(new real, r);
|
||||
}
|
||||
|
||||
if (stdmag.full())
|
||||
@ -265,20 +293,17 @@ bool TMask_movmag::notify_righe(TSheet_field& ss, int r, KEY key)
|
||||
old_codcaus = ss.sheet_mask().get(F_CAUSRIG);
|
||||
if (old_codcaus.blank())
|
||||
old_codcaus = ss.mask().get(F_CODCAUS);
|
||||
if (old_quant != ss.sheet_mask().get_real(F_QUANT))
|
||||
{
|
||||
old_quant = ss.sheet_mask().get_real(F_QUANT);
|
||||
m.qta_inventory(old_quant);
|
||||
}
|
||||
old_quant = ss.sheet_mask().get_real(F_QUANT);
|
||||
m.qta_inventory(old_quant);
|
||||
old_codart = ss.sheet_mask().get(F_CODART);
|
||||
|
||||
} else
|
||||
if (key == K_ENTER)
|
||||
{
|
||||
real diff = ss.sheet_mask().get_real(F_QUANT) ;
|
||||
m.qta_inventory(diff);
|
||||
if (m.get_bool(F_INVENTORYMODE))
|
||||
{
|
||||
real diff = ss.sheet_mask().get_real(F_QUANT) ;
|
||||
m.qta_inventory(diff);
|
||||
if (diff != old_quant)
|
||||
{
|
||||
ss.sheet_mask().set(F_QUANT, diff);
|
||||
@ -289,6 +314,25 @@ bool TMask_movmag::notify_righe(TSheet_field& ss, int r, KEY key)
|
||||
ss.select(r);
|
||||
|
||||
m.update_tot();
|
||||
|
||||
if (m._check_giac)
|
||||
{
|
||||
real giac = ss.sheet_mask().get_real(F_GIAC);
|
||||
real * old_qta = (real *) m._old_qta.objptr(r);
|
||||
TString8 codcaus = ss.sheet_mask().get(F_CAUSRIG);
|
||||
|
||||
if (codcaus.blank())
|
||||
codcaus = ss.mask().get(F_CODCAUS);
|
||||
const TCausale_magazzino cau(codcaus);
|
||||
if (cau.sgn(s_giac) == -1)
|
||||
diff = -diff;
|
||||
if (old_qta != NULL)
|
||||
diff -= *old_qta;
|
||||
giac += diff;
|
||||
|
||||
if (giac < ZERO)
|
||||
message_box("Attenzione quantità negativa");
|
||||
}
|
||||
} else
|
||||
if (key == K_TAB && !selecting)
|
||||
{
|
||||
@ -299,28 +343,30 @@ bool TMask_movmag::notify_righe(TSheet_field& ss, int r, KEY key)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TMask_movmag::qta_inventory(real & qta)
|
||||
void TMask_movmag::qta_inventory(real & qta)
|
||||
{
|
||||
if (get_bool(F_INVENTORYMODE))
|
||||
{
|
||||
const TMask & sm = sfield(F_RIGHE).sheet_mask();
|
||||
qta -= sm.get_real(F_GIAC);
|
||||
|
||||
TString8 codcau(sm.get(F_CAUSRIG));
|
||||
if (codcau.blank())
|
||||
codcau = get(F_CODCAUS);
|
||||
if (codcau.blank())
|
||||
return error_box(TR("La causale non e' indicata"));
|
||||
TString8 codcau(sm.get(F_CAUSRIG));
|
||||
if (codcau.blank())
|
||||
codcau = get(F_CODCAUS);
|
||||
if (codcau.blank())
|
||||
{
|
||||
error_box(TR("La causale non e' indicata"));
|
||||
return;
|
||||
}
|
||||
|
||||
const TCausale_magazzino cau(codcau);
|
||||
switch (cau.sgn(s_giac))
|
||||
{
|
||||
case 1: break;
|
||||
case -1: qta = - qta; break;
|
||||
default: message_box(TR("La causale indicata non movimenta la giacenza"));
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
const TCausale_magazzino cau(codcau);
|
||||
switch (cau.sgn(s_giac))
|
||||
{
|
||||
case 1: break;
|
||||
case -1: qta = -qta; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// proposta soft: solo se il prezzo è non nullo (già impostato)
|
||||
@ -441,6 +487,7 @@ bool TMask_movmag::handle_giacattuale(TMask_field &f, KEY k)
|
||||
{
|
||||
TMask & maskrighe =f.mask();
|
||||
TMask_movmag &maskmov=(TMask_movmag &)maskrighe.get_sheet()->mask();
|
||||
|
||||
if (k==K_TAB && (!maskmov.is_running() || f.focusdirty()))
|
||||
{
|
||||
TString codliv;
|
||||
@ -819,6 +866,7 @@ void TApp_movmag::init_insert_mode(TMask& m)
|
||||
const bool inventory = m.get_bool(F_INVENTORYMODE);
|
||||
TSheet_field& ss = m.sfield(F_RIGHE);
|
||||
ss.sheet_mask().field(F_QUANT).check_type(inventory ? CHECK_NONE : CHECK_REQUIRED);
|
||||
((TMask_movmag &)m).old_qta().destroy();
|
||||
|
||||
for (int i = 0; i < ((TMask_movmag &)m).autorows(); i++)
|
||||
ss.insert(-1, false, true);
|
||||
|
@ -791,6 +791,7 @@ SECTION BODY ODD 0 COLUMNWISE
|
||||
FIELD LF_MAG->GIAC
|
||||
PICTURE "#######@,@#"
|
||||
MESSAGE ADD,147
|
||||
GROUP FG_RIGAVALORI
|
||||
END
|
||||
NUMERO 48 12
|
||||
BEGIN
|
||||
@ -798,6 +799,16 @@ SECTION BODY ODD 0 COLUMNWISE
|
||||
PROMPT 12 1 ""
|
||||
PICTURE "#######@,@#"
|
||||
MESSAGE _NUMEXPR,LF_MAG->SCORTAMIN-LF_MAG->GIAC|ADD,147
|
||||
GROUP FG_RIGAVALORI
|
||||
END
|
||||
NUMERO 49 12
|
||||
BEGIN
|
||||
KEY "giac"
|
||||
PROMPT 6 1 ""
|
||||
FIELD LF_MAG->GIAC
|
||||
PICTURE "#######@,@#"
|
||||
MESSAGE ADD,141
|
||||
GROUP FG_RIGAPREZZI
|
||||
END
|
||||
END // depositi dello stesso magazzino
|
||||
END // MAGAZZ
|
||||
|
@ -228,6 +228,7 @@ END
|
||||
BEGIN
|
||||
KEY "H1"
|
||||
PROMPT 139 6 "Giacenza"
|
||||
GROUP FG_RIGAVALORI
|
||||
END
|
||||
STRINGA 15 12
|
||||
BEGIN
|
||||
@ -790,6 +791,7 @@ SECTION BODY ODD 0 COLUMNWISE
|
||||
FIELD LF_MAG->GIAC
|
||||
PICTURE "#######@,@#"
|
||||
MESSAGE ADD,147
|
||||
GROUP FG_RIGAVALORI
|
||||
END
|
||||
NUMERO 48 12
|
||||
BEGIN
|
||||
@ -797,7 +799,17 @@ SECTION BODY ODD 0 COLUMNWISE
|
||||
PROMPT 12 1 ""
|
||||
PICTURE "#######@,@#"
|
||||
MESSAGE _NUMEXPR,LF_MAG->SCORTAMIN-LF_MAG->GIAC|ADD,147
|
||||
GROUP FG_RIGAVALORI
|
||||
END
|
||||
NUMERO 49 12
|
||||
BEGIN
|
||||
KEY "giac"
|
||||
PROMPT 6 1 ""
|
||||
FIELD LF_MAG->GIAC
|
||||
PICTURE "#######@,@#"
|
||||
MESSAGE ADD,141
|
||||
GROUP FG_RIGAPREZZI
|
||||
END
|
||||
END // depositi dello stesso magazzino
|
||||
END // MAGAZZ
|
||||
|
||||
|
@ -211,11 +211,13 @@ END
|
||||
BEGIN
|
||||
KEY "H1"
|
||||
PROMPT 142 6 "Giac."
|
||||
GROUP FG_RIGAPREZZI
|
||||
END
|
||||
STRINGA 15 12
|
||||
BEGIN
|
||||
KEY "H1"
|
||||
PROMPT 140 6 "Scorta-Giac."
|
||||
GROUP FG_RIGAVALORI
|
||||
END
|
||||
|
||||
STRINGA 17 146
|
||||
@ -755,6 +757,7 @@ SECTION BODY ODD 0 COLUMNWISE
|
||||
PICTURE "########,@#"
|
||||
FIELD LF_MAG->GIAC
|
||||
MESSAGE ADD,347
|
||||
GROUP FG_RIGAPREZZI
|
||||
END
|
||||
NUMERO 248 12
|
||||
BEGIN
|
||||
@ -762,6 +765,16 @@ SECTION BODY ODD 0 COLUMNWISE
|
||||
PROMPT 12 1 ""
|
||||
PICTURE "#######@,@#"
|
||||
MESSAGE _NUMEXPR,LF_MAG->SCORTAMIN-LF_MAG->GIAC|ADD,347
|
||||
GROUP FG_RIGAVALORI
|
||||
END
|
||||
NUMERO 249 12
|
||||
BEGIN
|
||||
KEY "giac"
|
||||
PROMPT 6 1 ""
|
||||
PICTURE "########,@#"
|
||||
FIELD LF_MAG->GIAC
|
||||
MESSAGE ADD,341
|
||||
GROUP 2 FG_RIGAPREZZI
|
||||
END
|
||||
END // tot ggiac4
|
||||
|
||||
|
150
mg/mg3600.cpp
150
mg/mg3600.cpp
@ -207,6 +207,103 @@ void TStampa_etich_mov_recordset::requery()
|
||||
}
|
||||
}
|
||||
|
||||
//////////
|
||||
|
||||
class TStampa_etich_giac_recordset : public TISAM_recordset
|
||||
{
|
||||
TPointer_array _index;
|
||||
TRecnotype _current_row;
|
||||
|
||||
public:
|
||||
virtual bool move_to(TRecnotype pos);
|
||||
virtual TRecnotype items() const;
|
||||
virtual TRecnotype current_row() const;
|
||||
void set_filter(const TStampa_etich_art_mask& msk);
|
||||
TPointer_array & index() { return _index; }
|
||||
virtual void requery();
|
||||
|
||||
|
||||
TStampa_etich_giac_recordset(const TString& sql) : TISAM_recordset(sql), _current_row(0L) { }
|
||||
};
|
||||
|
||||
//metodo per caricare i valori nel recordset dalla maschera...fighissimo!!
|
||||
void TStampa_etich_giac_recordset::set_filter(const TStampa_etich_art_mask& msk)
|
||||
{
|
||||
TVariant var;
|
||||
|
||||
const int items=msk.fields();
|
||||
for (short i=0; i<items; i++)
|
||||
{
|
||||
const TMask_field &f=msk.fld(i);
|
||||
const TFieldref* fld=f.field();
|
||||
|
||||
if (fld != NULL)
|
||||
{
|
||||
TString80 fldname=fld->name();
|
||||
if (!fldname.starts_with("#"))
|
||||
fldname.insert("#");
|
||||
var=f.get();
|
||||
if (fldname == "#CODDEP")
|
||||
{
|
||||
TVariant codmag(get_var("#CODMAG"));
|
||||
|
||||
codmag += var;
|
||||
set_var("#CODMAG", codmag);
|
||||
}
|
||||
else
|
||||
set_var(fldname,var);
|
||||
}
|
||||
}
|
||||
|
||||
TCursor * c = cursor();
|
||||
requery();
|
||||
}
|
||||
|
||||
TRecnotype TStampa_etich_giac_recordset::items() const
|
||||
{
|
||||
return _index.items();
|
||||
}
|
||||
|
||||
TRecnotype TStampa_etich_giac_recordset::current_row() const
|
||||
{
|
||||
return _current_row;
|
||||
}
|
||||
|
||||
bool TStampa_etich_giac_recordset::move_to(TRecnotype pos)
|
||||
{
|
||||
_current_row = pos;
|
||||
const bool valid = _current_row < items();
|
||||
|
||||
if (valid)
|
||||
TISAM_recordset::move_to(_index.get_long(pos) - 1);
|
||||
else
|
||||
_current_row = 0L;
|
||||
return valid;
|
||||
}
|
||||
|
||||
bool build_index_giac(const TRelation& rel, void* pJolly)
|
||||
{
|
||||
TStampa_etich_mov_recordset * r = (TStampa_etich_mov_recordset *) pJolly;
|
||||
int ncopie = atoi(rel.curr().get("GIAC"));
|
||||
const TRecnotype pos = r->cursor()->pos();
|
||||
|
||||
if (ncopie > 0)
|
||||
for ( int i = 0; i < ncopie; i++)
|
||||
r->index().insert_long(pos + 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
void TStampa_etich_giac_recordset::requery()
|
||||
{
|
||||
if (valid_cursor())
|
||||
{
|
||||
TCursor * c = cursor();
|
||||
|
||||
_index.destroy();
|
||||
c->scan(build_index_giac, this);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// REPORT
|
||||
////////////////////////////////////////////////////////
|
||||
@ -265,6 +362,35 @@ void TStampa_etich_mov_rep::set_filter(const TStampa_etich_art_mask& msk)
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
|
||||
class TStampa_etich_giac_rep : public TReport
|
||||
{
|
||||
protected:
|
||||
virtual bool get_usr_val(const TString& name, TVariant& var) const;
|
||||
virtual bool set_recordset(const TString& query);
|
||||
|
||||
public:
|
||||
void set_filter(const TStampa_etich_art_mask& msk);
|
||||
};
|
||||
|
||||
//metodo per il calcolo dei campi da calcolare (ma va'!) nel report
|
||||
bool TStampa_etich_giac_rep::get_usr_val(const TString& name, TVariant& var) const
|
||||
{
|
||||
return TReport::get_usr_val(name, var);
|
||||
}
|
||||
|
||||
bool TStampa_etich_giac_rep::set_recordset(const TString& query)
|
||||
{
|
||||
return TReport::set_recordset(new TStampa_etich_giac_recordset(query));
|
||||
}
|
||||
|
||||
void TStampa_etich_giac_rep::set_filter(const TStampa_etich_art_mask& msk)
|
||||
{
|
||||
((TStampa_etich_giac_recordset *)recordset())->set_filter(msk);
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// APPLICAZIONE
|
||||
////////////////////////////////////////////////////////
|
||||
@ -306,14 +432,24 @@ void TStampa_etich_art::main_loop()
|
||||
book.print_or_preview(); //stampa il book dei report
|
||||
}
|
||||
else
|
||||
{
|
||||
TStampa_etich_mov_rep rep;
|
||||
if (mask.get(F_TIPOST) == "M")
|
||||
{
|
||||
TStampa_etich_mov_rep rep;
|
||||
|
||||
rep.load("mg3600b");
|
||||
rep.set_filter(mask);
|
||||
book.add(rep);
|
||||
book.print_or_preview(); //stampa il book dei report
|
||||
}
|
||||
rep.load("mg3600b");
|
||||
rep.set_filter(mask);
|
||||
book.add(rep);
|
||||
book.print_or_preview(); //stampa il book dei report
|
||||
}
|
||||
else
|
||||
{
|
||||
TStampa_etich_giac_rep rep;
|
||||
|
||||
rep.load("mg3600c");
|
||||
rep.set_filter(mask);
|
||||
book.add(rep);
|
||||
book.print_or_preview(); //stampa il book dei report
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -9,5 +9,11 @@
|
||||
#define F_CAUS 109
|
||||
#define F_DANUM 110
|
||||
#define F_ANUM 111
|
||||
#define F_CODMAG 112
|
||||
#define F_DESMAG 113
|
||||
#define F_CODDEP 114
|
||||
#define F_DESDEP 115
|
||||
#define F_ANNOES 116
|
||||
|
||||
|
||||
|
||||
|
@ -7,13 +7,15 @@ ENDPAGE
|
||||
|
||||
PAGE "Stampa etichette articoli" 0 0 0 0
|
||||
|
||||
RADIOBUTTON F_TIPOST 14
|
||||
LISTBOX F_TIPOST 14
|
||||
BEGIN
|
||||
PROMPT 1 2 "Tipo di stampa"
|
||||
PROMPT 1 2 "Tipo di stampa "
|
||||
ITEM "A|Anagrafica"
|
||||
MESSAGE HIDE,10@|SHOW,11@
|
||||
MESSAGE HIDE,10@|SHOW,11@|HIDE,12@
|
||||
ITEM "G|Giacenze"
|
||||
MESSAGE HIDE,10@|HIDE,11@|SHOW,12@
|
||||
ITEM "M|Movimenti"
|
||||
MESSAGE SHOW,10@|HIDE,11@
|
||||
MESSAGE SHOW,10@|HIDE,11@|HIDE,12@
|
||||
FLAGS "P"
|
||||
END
|
||||
|
||||
@ -68,6 +70,83 @@ BEGIN
|
||||
OUTPUT F_ADESCR DESCR
|
||||
END
|
||||
|
||||
NUMBER F_ANNOES 4
|
||||
BEGIN
|
||||
PROMPT 1 10 "Codice es. "
|
||||
USE ESC
|
||||
INPUT CODTAB F_ANNOES
|
||||
DISPLAY "Esercizio" CODTAB
|
||||
DISPLAY "Dal@12" D0
|
||||
DISPLAY "Al@12" D1
|
||||
OUTPUT F_ANNOES CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
ADD NONE
|
||||
FLAGS "AZ"
|
||||
GROUP 12
|
||||
FIELD ANNOES
|
||||
END
|
||||
|
||||
STRING F_CODMAG 3
|
||||
BEGIN
|
||||
PROMPT 1 12 "Magazzino "
|
||||
FLAGS "U"
|
||||
USE MAG SELECT CODTAB[4,5]==""
|
||||
INPUT CODTAB F_CODMAG
|
||||
DISPLAY "Codice " CODTAB[1,3]
|
||||
DISPLAY "Denominazione mag.@50 " S0
|
||||
OUTPUT F_CODMAG CODTAB[1,3]
|
||||
OUTPUT F_DESMAG S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODMAG
|
||||
GROUP 12
|
||||
END
|
||||
|
||||
STRING F_DESMAG 50
|
||||
BEGIN
|
||||
PROMPT 25 12 ""
|
||||
USE MAG KEY 2 SELECT CODTAB[4,5]==""
|
||||
INPUT S0 F_DESMAG
|
||||
DISPLAY "Denominazione mag.@50" S0
|
||||
DISPLAY "Cod. magazzino" CODTAB[1,3]
|
||||
DISPLAY "Cod. deposito" CODTAB[4,5]
|
||||
COPY OUTPUT F_CODMAG
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 12
|
||||
END
|
||||
|
||||
|
||||
STRING F_CODDEP 2
|
||||
BEGIN
|
||||
PROMPT 1 14 "Deposito "
|
||||
FLAGS "U"
|
||||
USE MAG SELECT CODTAB[4,5]!=""
|
||||
INPUT CODTAB[1,3] F_CODMAG SELECT
|
||||
INPUT CODTAB[4,5] F_CODDEP
|
||||
DISPLAY "Cod. magazzino" CODTAB[1,3]
|
||||
DISPLAY "Cod. deposito" CODTAB[4,5]
|
||||
DISPLAY "Denominazione dep.@50" S0
|
||||
OUTPUT F_CODMAG CODTAB[1,3]
|
||||
OUTPUT F_CODDEP CODTAB[4,5]
|
||||
OUTPUT F_DESDEP S0
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Indicare il deposito"
|
||||
FIELD CODDEP
|
||||
GROUP 12
|
||||
END
|
||||
|
||||
STRING F_DESDEP 50
|
||||
BEGIN
|
||||
PROMPT 25 14 ""
|
||||
FLAGS "H"
|
||||
USE MAG KEY 2 SELECT (CODTAB[4,5]!="")&&(CODTAB[1,3]==#F_CODMAG)
|
||||
INPUT S0 F_DESDEP
|
||||
COPY DISPLAY F_DESMAG
|
||||
COPY OUTPUT F_CODDEP
|
||||
CHECKTYPE NORMAL
|
||||
MESSAGE EMPTY CHECK,F_CODDEP
|
||||
GROUP 12
|
||||
END
|
||||
|
||||
NUMBER F_QTA 3
|
||||
BEGIN
|
||||
PROMPT 1 10 "Quantita' "
|
||||
@ -124,6 +203,7 @@ BEGIN
|
||||
OUTPUT F_ANUM NUMREG
|
||||
FLAGS "P"
|
||||
FIELD ANUM
|
||||
GROUP 10
|
||||
END
|
||||
|
||||
STRING F_CAUS 5
|
||||
|
38
mg/mg3600c.rep
Executable file
38
mg/mg3600c.rep
Executable file
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<report name="mg3600c" lpi="6">
|
||||
<description>Stampa etichette articoli da magazzino</description>
|
||||
<font face="Courier New" size="10" />
|
||||
<section type="Head" />
|
||||
<section type="Head" level="1" />
|
||||
<section type="Body" />
|
||||
<section type="Body" level="1" width="40" height="9">
|
||||
<field x="1" y="2" type="Stringa" width="20" pattern="1">
|
||||
<source>CODART</source>
|
||||
</field>
|
||||
<field x="1" y="3" type="Stringa" width="38" height="2" pattern="1">
|
||||
<source>ANAMAG.DESCR</source>
|
||||
</field>
|
||||
<field x="1" y="5.75" type="Testo" width="2" pattern="1" text="P" />
|
||||
<field x="3" y="5.75" type="Prezzo" align="right" width="15" pattern="1" text="#########,@@">
|
||||
<source>UMART.PREZZO</source>
|
||||
</field>
|
||||
<field x="19.12" y="5.75" type="Testo" width="4" pattern="1" text="Lit." />
|
||||
<field x="24" y="5.75" type="Numero" align="right" width="15" pattern="1" text="###.###.###.###.###">
|
||||
<source>UMART.PREZZO</source>
|
||||
<prescript description="B1.0 PRESCRIPT">#THIS @
|
||||
1936.27
|
||||
*
|
||||
0
|
||||
ROUND
|
||||
#THIS !</prescript>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Foot" />
|
||||
<section type="Foot" level="1" />
|
||||
<sql>USE 109 KEY 2
|
||||
JOIN ANAMAG INTO CODART=CODART
|
||||
JOIN UMART TO ANAMAG INTO CODART=CODART NRIGA=1
|
||||
FROM ANNOES=#ANNOES CODMAG=#CODMAG CODART=#DACODART
|
||||
TO ANNOES=#ANNOES CODMAG=#CODMAG CODART=#ACODART
|
||||
</sql>
|
||||
</report>
|
@ -8,3 +8,4 @@
|
||||
#define F_GESVALUTA 108
|
||||
#define F_GESDECIMALI 109
|
||||
#define F_RIPORTA_ORD 110
|
||||
#define F_CHECK_GIAC 111
|
||||
|
@ -967,6 +967,7 @@ private:
|
||||
bool explode_articles();
|
||||
|
||||
bool test_codnum(const TCodice_numerazione& num, const TString_array& a) const;
|
||||
bool test_codnum(const TString & codnum, const TString_array& a) const;
|
||||
int test_status(const TRectype& doc, const TString_array& a) const;
|
||||
bool has_confirmed_status(const TRectype& doc, const TToken_string& riga) const;
|
||||
|
||||
@ -1956,26 +1957,29 @@ int TRisalita_mask::add_gross_ref(const TMRP_line& line, int bucket)
|
||||
// TMatResPlanning
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
bool TMatResPlanning::test_codnum(const TCodice_numerazione& num, const TString_array& a) const
|
||||
bool TMatResPlanning::test_codnum(const TString& codnum, const TString_array& a) const
|
||||
{
|
||||
const TString& codnum = num.codice();
|
||||
TString4 tmp;
|
||||
for (int it = 0 ;it < a.items(); it++ )
|
||||
FOR_EACH_ARRAY_ROW(a, i, row)
|
||||
{
|
||||
a.row(it).get(0, tmp);
|
||||
row->get(0, tmp);
|
||||
if (tmp == codnum)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
bool yes = a.find(num.codice()) >= 0; // E' questa roba a cosa serve???
|
||||
return yes;
|
||||
}
|
||||
|
||||
bool TMatResPlanning::test_codnum(const TCodice_numerazione& num, const TString_array& a) const
|
||||
{
|
||||
const TString& codnum = num.codice();
|
||||
return test_codnum(codnum, a);
|
||||
}
|
||||
|
||||
bool TMatResPlanning::has_confirmed_status(const TRectype& doc, const TToken_string& riga) const
|
||||
{
|
||||
const char statodoc = doc.get_char(DOC_STATO);
|
||||
const char state_def = ((TToken_string&)riga).get_char(F_STATODEF - FIRST_FIELD);
|
||||
return (statodoc >= state_def);
|
||||
char statodoc = doc.get_char(DOC_STATO);
|
||||
char state_def; riga.get(F_STATODEF - FIRST_FIELD, state_def);
|
||||
return statodoc >= state_def;
|
||||
}
|
||||
|
||||
int TMatResPlanning::test_status(const TRectype& doc, const TString_array& a) const
|
||||
@ -3457,9 +3461,26 @@ bool TMatResPlanning::emit_orders()
|
||||
if (dardoc != NULL)
|
||||
{
|
||||
int rifdepth = m.get_int(F_RIFERIMENTO_MRP);
|
||||
// if (rifdepth == 0 && dardoc->get(RDOC_DACODNUM).full())
|
||||
if (rifdepth == 0 && dardoc->get(RDOC_DACODNUM).full())
|
||||
{
|
||||
// rifdepth = 1;
|
||||
rdoc.set_original_rdoc_key(*dardoc, rifdepth); // Imposto DAPROVV, DAANNO, DACODNUM, DANDOC, DAIDRIGA
|
||||
const TString_array& n = m.sfield(F_NUM_ORC).rows_array();
|
||||
while (dardoc != NULL)
|
||||
{
|
||||
const TString& codnum = dardoc->get(RDOC_CODNUM);
|
||||
if (test_codnum(codnum, n))
|
||||
break;
|
||||
dardoc = ((const TRiga_documento*)dardoc)->find_original_rdoc();
|
||||
}
|
||||
}
|
||||
if (dardoc != NULL)
|
||||
rdoc.set_original_rdoc_key(*dardoc, rifdepth); // Imposto DAPROVV, DAANNO, DACODNUM, DANDOC, DAIDRIGA
|
||||
else
|
||||
{
|
||||
TString80 msg; msg.format(FR("Riferimento non trovato: riga %d"), r+1);
|
||||
xvt_statbar_set(msg);
|
||||
beep();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -857,7 +857,7 @@ void TMSP_constraint::fill_sheet_row(TToken_string& row, const TMask & m, const
|
||||
TString val(descr && *descr ? descr :description());
|
||||
const TString80 da_rdoc_key(da_rdoc_key());
|
||||
|
||||
if (da_rdoc_key.full())
|
||||
if (da_rdoc_key.full() && atoi(da_rdoc_key.smid(4,4)) > 0)
|
||||
{
|
||||
TDocumento d('D', atoi(da_rdoc_key.smid(4,4)), da_rdoc_key.sleft(4).trim(), atoi(da_rdoc_key.smid(9,7)));
|
||||
TDate cons(d.get_date("DATAORIG"));
|
||||
|
@ -258,34 +258,34 @@ void TGenera_ordini_mask::update_sheet()
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
TToken_string & row = sf.row(i);
|
||||
const TString & codart = recset.get(ANAMAG_CODART).as_string();
|
||||
const TString & codart = recset.get(LF_ANAMAG, ANAMAG_CODART).as_string();
|
||||
|
||||
row.add(codart, sf.cid2index(F_CODART));
|
||||
art.read(codart);
|
||||
const real giac = art.giacenza_anno(codmag, "", anno);
|
||||
row.add(recset.get(ANAMAG_DESCR).as_string(), sf.cid2index(F_DESCR));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_DESCR).as_string(), sf.cid2index(F_DESCR));
|
||||
row.add(recset.get("UMART.UM").as_string(), sf.cid2index(F_UM));
|
||||
|
||||
const long codforn = recset.get(ANAMAG_CODFORN).as_int();
|
||||
const long codforn = recset.get(LF_ANAMAG, ANAMAG_CODFORN).as_int();
|
||||
|
||||
row.add(codforn, sf.cid2index(F_FORNITORE));
|
||||
row.add(recset.get("CLIFO.RAGSOC").as_string(), sf.cid2index(F_RAGSOC));
|
||||
row.add(recset.get(ANAMAG_GIORNIRIOR).as_string(), sf.cid2index(F_LEADTIME));
|
||||
row.add(recset.get(ANAMAG_LOTTORIOR).as_string(), sf.cid2index(F_LOTTOMIN));
|
||||
row.add(recset.get(ANAMAG_DESCRAGG).as_string(), sf.cid2index(F_DESCRAGG));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_GIORNIRIOR).as_string(), sf.cid2index(F_LEADTIME));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_LOTTORIOR).as_string(), sf.cid2index(F_LOTTOMIN));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_DESCRAGG).as_string(), sf.cid2index(F_DESCRAGG));
|
||||
row.add(giac.string(), sf.cid2index(F_GIACENZA));
|
||||
|
||||
row.add(recset.get(ANAMAG_PPCONF).as_string(), sf.cid2index(F_PPCONF));
|
||||
row.add(recset.get(ANAMAG_USER1).as_string(), sf.cid2index(F_USER1));
|
||||
row.add(recset.get(ANAMAG_USER2).as_string(), sf.cid2index(F_USER2));
|
||||
row.add(recset.get(ANAMAG_USER3).as_string(), sf.cid2index(F_USER3));
|
||||
row.add(recset.get(ANAMAG_USER4).as_string(), sf.cid2index(F_USER4));
|
||||
row.add(recset.get(ANAMAG_USER5).as_string(), sf.cid2index(F_USER5));
|
||||
row.add(recset.get(ANAMAG_USER6).as_string(), sf.cid2index(F_USER6));
|
||||
row.add(recset.get(ANAMAG_USER7).as_string(), sf.cid2index(F_USER7));
|
||||
row.add(recset.get(ANAMAG_USER8).as_string(), sf.cid2index(F_USER8));
|
||||
row.add(recset.get(ANAMAG_USER9).as_string(), sf.cid2index(F_USER9));
|
||||
row.add(recset.get(ANAMAG_USER10).as_string(), sf.cid2index(F_USER10));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_PPCONF).as_string(), sf.cid2index(F_PPCONF));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER1).as_string(), sf.cid2index(F_USER1));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER2).as_string(), sf.cid2index(F_USER2));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER3).as_string(), sf.cid2index(F_USER3));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER4).as_string(), sf.cid2index(F_USER4));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER5).as_string(), sf.cid2index(F_USER5));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER6).as_string(), sf.cid2index(F_USER6));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER7).as_string(), sf.cid2index(F_USER7));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER8).as_string(), sf.cid2index(F_USER8));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER9).as_string(), sf.cid2index(F_USER9));
|
||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER10).as_string(), sf.cid2index(F_USER10));
|
||||
const real disp = art.disponibilita(codes, get(F_MAG), NULL);
|
||||
row.add(disp.string(), sf.cid2index(F_DISPON));
|
||||
sf.check_row(i);
|
||||
@ -370,13 +370,13 @@ void TGenera_ordini_mask::next_page(int p)
|
||||
if (_filter_changed)
|
||||
{
|
||||
const TSheet_field& sf = sfield(F_ARTICLES);
|
||||
if (xvt_scr_get_focus_vobj() == sf.parent())
|
||||
if (win() == sf.parent())
|
||||
update_sheet();
|
||||
}
|
||||
if (_order_changed)
|
||||
{
|
||||
const TSheet_field& sf = sfield(F_ORDERS);
|
||||
if (xvt_scr_get_focus_vobj() == sf.parent())
|
||||
if (win() == sf.parent())
|
||||
update_orders();
|
||||
}
|
||||
|
||||
@ -419,7 +419,10 @@ bool TGenera_ordini_mask::on_field_event(TOperable_field& o, TField_event e, lon
|
||||
break;
|
||||
case F_CODNUM:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
_order_changed = true;
|
||||
_filter_changed = true;
|
||||
}
|
||||
break;
|
||||
case F_ANNO:
|
||||
if (e == fe_init && o.empty())
|
||||
@ -575,7 +578,7 @@ void TGenera_ordini_mask::load_user_defs()
|
||||
}
|
||||
|
||||
TGenera_ordini_mask::TGenera_ordini_mask()
|
||||
: TAutomask("or1400a"), _filter_changed(false)
|
||||
: TAutomask("or1400a"), _filter_changed(false), _order_changed(false)
|
||||
{
|
||||
serialize(false);
|
||||
load_user_defs();
|
||||
@ -693,7 +696,7 @@ void TCreazione_ordini::generate_orders()
|
||||
|
||||
if (sf.items() > 0)
|
||||
{
|
||||
const TDate datadoc(TODAY);
|
||||
const TDate datadoc = mask.get_date(F_DATADOC);
|
||||
const TString& codnum = mask.get(F_CODNUM);
|
||||
const TString& tipodoc = mask.get(F_TIPODOC);
|
||||
const TTipo_documento tipo(tipodoc);
|
||||
|
@ -29,6 +29,7 @@
|
||||
#define F_DESDEPC 177
|
||||
#define DLG_PRINTDOC 178
|
||||
#define DLG_DELDOC 179
|
||||
#define F_DATADOC 180
|
||||
|
||||
#define F_DASTATO 201
|
||||
#define F_ASTATO 202
|
||||
|
151
or/or1400a.rep
Executable file
151
or/or1400a.rep
Executable file
@ -0,0 +1,151 @@
|
||||
|
||||
<report name="or1400a" orientation="2" lpi="6">
|
||||
<description>a</description>
|
||||
<font face="Courier New" size="8" />
|
||||
<section type="Head">
|
||||
<field type="Stringa" width="40" pattern="1">
|
||||
<source>#SYSTEM.RAGSOC</source>
|
||||
</field>
|
||||
<field x="60" type="Stringa" align="center" width="30" height="1.5" pattern="1">
|
||||
<font face="Times New Roman" bold="1" size="14" />
|
||||
<source>"CONSUMI " +#OR14_ANNO</source>
|
||||
</field>
|
||||
<field x="131" type="Testo" width="8" pattern="1" text="Data:" />
|
||||
<field x="139.5" type="Data" width="10.5" pattern="1">
|
||||
<source>#SYSTEM.DATE</source>
|
||||
</field>
|
||||
<field x="156" type="Testo" width="8" pattern="1" text="Pagina:" />
|
||||
<field x="164" type="Numero" align="right" width="3" pattern="1">
|
||||
<source>#PAGE</source>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Head" level="1" />
|
||||
<section type="Head" level="2">
|
||||
<groupby>47.GRMERC[1,2]</groupby>
|
||||
<field x="8" type="Stringa" width="80" pattern="1">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
<prescript description="H2.0 PRESCRIPT">MESSAGE TABLEREAD,GMC,#10,S0</prescript>
|
||||
</field>
|
||||
<field x="1" type="Stringa" width="5" id="10" pattern="1">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
<source>47.GRMERC[1,2]</source>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Head" level="3">
|
||||
<groupby>47.GRMERC[1,5]</groupby>
|
||||
<field x="8" type="Stringa" width="50" pattern="1">
|
||||
<font face="Courier New" bold="1" size="8" />
|
||||
<prescript description="H3.0 PRESCRIPT">MESSAGE TABLEREAD,GMC,#10,S0</prescript>
|
||||
</field>
|
||||
<field x="60.46" type="Testo" align="center" width="9" pattern="1" text="GEN" />
|
||||
<field x="69.45" type="Testo" align="center" width="9" pattern="1" text="FEB" />
|
||||
<field x="78.45" type="Testo" align="center" width="9" pattern="1" text="MAR" />
|
||||
<field x="87.46" type="Testo" align="center" width="9" pattern="1" text="APR" />
|
||||
<field x="96.46" type="Testo" align="center" width="9" pattern="1" text="MAG" />
|
||||
<field x="105.46" type="Testo" align="center" width="9" pattern="1" text="GIU" />
|
||||
<field x="114.46" type="Testo" align="center" width="9" pattern="1" text="LUG" />
|
||||
<field x="123.46" type="Testo" align="center" width="9" pattern="1" text="AGO" />
|
||||
<field x="132.46" type="Testo" align="center" width="9" pattern="1" text="SET" />
|
||||
<field x="141.46" type="Testo" align="center" width="9" pattern="1" text="OTT" />
|
||||
<field x="150.46" type="Testo" align="center" width="9" pattern="1" text="NOV" />
|
||||
<field x="159.46" type="Testo" align="center" width="9" pattern="1" text="DIC" />
|
||||
<field border="1" x="1" y="1" type="Linea" width="167" height="0" pattern="1" />
|
||||
<field x="1" type="Stringa" width="5.5" id="10" pattern="1">
|
||||
<font face="Courier New" bold="1" size="8" />
|
||||
<source>47.GRMERC[1,5]</source>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Head" level="4">
|
||||
<groupby>CODART</groupby>
|
||||
<prescript description="H4 PRESCRIPT">113 1 DO
|
||||
0
|
||||
"F4." I +
|
||||
!
|
||||
LOOP</prescript>
|
||||
</section>
|
||||
<section type="Body" />
|
||||
<section type="Body" level="1" hidden="1">
|
||||
<field x="1" type="Numero" hidden="1" align="right" width="4" pattern="1">
|
||||
<source>OR14_ANNO</source>
|
||||
</field>
|
||||
<field x="5" type="Stringa" hidden="1" width="4" pattern="1">
|
||||
<source>CODNUM</source>
|
||||
</field>
|
||||
<field x="10" type="Stringa" width="4.5" pattern="1">
|
||||
<source>DOC.TIPODOC</source>
|
||||
</field>
|
||||
<field x="15" type="Numero" align="right" width="7" pattern="1">
|
||||
<source>NDOC</source>
|
||||
</field>
|
||||
<field x="23" type="Data" width="8.5" pattern="1">
|
||||
<source>DOC.DATADOC</source>
|
||||
</field>
|
||||
<field x="32.5" type="Stringa" width="5" pattern="1">
|
||||
<source>CODMAG</source>
|
||||
</field>
|
||||
<field x="39" type="Stringa" align="right" width="25" pattern="1">
|
||||
<source>34.CODCMS</source>
|
||||
</field>
|
||||
<field x="67" type="Array" width="3" id="48" pattern="1">
|
||||
<source>33.DATADOC[4,5]</source>
|
||||
<list>
|
||||
<li Value="01" Code="01" />
|
||||
<li Value="02" Code="02" />
|
||||
<li Value="03" Code="03" />
|
||||
<li Value="04" Code="04" />
|
||||
<li Value="05" Code="05" />
|
||||
<li Value="06" Code="06" />
|
||||
<li Value="07" Code="07" />
|
||||
</list>
|
||||
</field>
|
||||
<field x="57" type="Stringa" hidden="1" width="2" id="49" pattern="1">
|
||||
<source>IF(DOC.TIPODOC='BACQ',1,-1)</source>
|
||||
</field>
|
||||
<field x="83" type="Numero" align="right" width="10" id="50" pattern="1" hide_zero="1">
|
||||
<source>QTA</source>
|
||||
<prescript description="B1.50 PRESCRIPT">#THIS @
|
||||
"F4.1"
|
||||
#48 @
|
||||
+
|
||||
+!
|
||||
</prescript>
|
||||
</field>
|
||||
<field x="80" type="Stringa" width="2" id="52" pattern="1">
|
||||
<source>UMQTA</source>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Foot" />
|
||||
<section type="Foot" level="1" />
|
||||
<section type="Foot" level="2" />
|
||||
<section type="Foot" level="3" height="1" />
|
||||
<section type="Foot" level="4">
|
||||
<field x="1" type="Stringa" width="9" pattern="1">
|
||||
<source>CODART</source>
|
||||
</field>
|
||||
<field x="11" type="Stringa" bg_color="#FFFF80" width="45" pattern="1">
|
||||
<source>47.DESCR+' '+47.DESCRAGG</source>
|
||||
</field>
|
||||
<field border="1" x="57.5" type="Stringa" align="center" bg_color="#C0C0C0" width="3" pattern="1">
|
||||
<source>#B1.52</source>
|
||||
</field>
|
||||
<field border="1" x="60.5" type="Numero" align="right" width="9" id="101" pattern="1" text="###.###,@" />
|
||||
<field border="1" x="69.5" type="Numero" align="right" width="9" id="102" pattern="1" text="###.###,@" />
|
||||
<field border="1" x="78.5" type="Numero" align="right" width="9" id="103" pattern="1" text="###.###,@" />
|
||||
<field border="1" x="87.5" type="Numero" align="right" width="9" id="104" pattern="1" text="###.###,@" />
|
||||
<field border="1" x="96.5" type="Numero" align="right" width="9" id="105" pattern="1" text="###.###,@" />
|
||||
<field border="1" x="105.5" type="Numero" align="right" width="9" id="106" pattern="1" text="###.###,@" />
|
||||
<field border="1" x="114.5" type="Numero" align="right" width="9" id="107" pattern="1" text="###.###,@" />
|
||||
<field border="1" x="123.5" type="Numero" align="right" width="9" id="108" pattern="1" text="###.###,@" />
|
||||
<field border="1" x="132.5" type="Numero" align="right" width="9" id="109" pattern="1" text="###.###,@" />
|
||||
<field border="1" x="141.5" type="Numero" align="right" width="9" id="110" pattern="1" text="###.###,@" />
|
||||
<field border="1" x="150.5" type="Numero" align="right" width="9" id="111" pattern="1" text="###.###,@" />
|
||||
<field border="1" x="159.5" type="Numero" align="right" width="9" id="112" pattern="1" text="###.###,@" />
|
||||
</section>
|
||||
<sql>USE 34 SELECT (CODNUM="MAG")(CODCMS=#OR14_CDCT)
|
||||
BY 47.GRMERC
|
||||
JOIN DOC INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
|
||||
JOIN 47 INTO CODART==CODART
|
||||
FROM CODNUM='MAG' ANNO=#OR14_ANNO
|
||||
TO CODNUM='MAG' ANNO=#OR14_ANNO
|
||||
</sql>
|
||||
</report>
|
@ -34,9 +34,15 @@ ENDPAGE
|
||||
|
||||
PAGE "Ordini fornitori" 0 0 0 -3
|
||||
|
||||
DATE F_DATADOC
|
||||
BEGIN
|
||||
PROMPT 1 1 "Data documento "
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
SPREADSHEET F_ARTICLES
|
||||
BEGIN
|
||||
PROMPT 1 1 "Articoli"
|
||||
PROMPT 1 3 "Articoli"
|
||||
ITEM "Codice\nArticolo@20"
|
||||
ITEM "Descrizione@50"
|
||||
ITEM "UM"
|
||||
|
@ -63,6 +63,10 @@ Trasferimento a SERVUS
|
||||
Trasferimento a SPICS
|
||||
Esportazione documenti in formato testo formattato per Varauto verso il sistema Mercedes.
|
||||
|
||||
PS0001
|
||||
Esportazione Salus
|
||||
Esportazione prospetto scadenze Salus
|
||||
|
||||
PS0713 ATS
|
||||
Trasferimento dati contabili
|
||||
Trasferimento commesse
|
||||
@ -84,6 +88,8 @@ Stampa ordini di produzione DBService
|
||||
Aggiornamento IVA Documenti DBService
|
||||
Pianificazione impianti DBService
|
||||
|
||||
PS0925 Coseaespoertaxione estratti conti su piu' ditte
|
||||
|
||||
PS1104
|
||||
Importazione articoli da file .csv per ditta TENDER (pennari di prassiroma)
|
||||
|
||||
|
346
ps/pg0001600.cpp
346
ps/pg0001600.cpp
@ -12,13 +12,18 @@
|
||||
#include "textset.h"
|
||||
|
||||
|
||||
#include "clifo.h"
|
||||
#include "cfven.h"
|
||||
#include "comuni.h"
|
||||
#include "doc.h"
|
||||
#include "rdoc.h"
|
||||
#include <clifo.h>
|
||||
#include <cfven.h>
|
||||
#include <comuni.h>
|
||||
#include <doc.h>
|
||||
#include <rdoc.h>
|
||||
#include <causali.h>
|
||||
#include <mov.h>
|
||||
#include <rmov.h>
|
||||
#include <rmoviva.h>
|
||||
|
||||
#include "..\cg\cglib01.h"
|
||||
#include "..\cg\cg2101.h"
|
||||
#include "..\ve\velib.h"
|
||||
|
||||
|
||||
@ -56,7 +61,7 @@ void TClienti_recset::add_field(const char* name, char tipo, int len, int from,
|
||||
|
||||
|
||||
TClienti_recset::TClienti_recset(const char * query)
|
||||
: TAS400_recordset(TString("AS400(2138)\n") << query)
|
||||
: TAS400_recordset(TString("AS400(3002)\n") << query)
|
||||
{
|
||||
const char a = 'a';
|
||||
const char n = 'n';
|
||||
@ -68,10 +73,10 @@ TClienti_recset::TClienti_recset(const char * query)
|
||||
add_field("FLD003", a, 1, 7); // stato record se A annullata
|
||||
add_field(CLI_TIPOPERS, n, 1, 8); // società = 2 persona fisica = 1
|
||||
add_field(CLI_RAGSOC, a, 45, 9); // Ragione sociale
|
||||
add_field("FLD006", a, 30, 54); // indirizzo
|
||||
add_field("FLD007", a, 25, 84); // Comune di residenza
|
||||
add_field(CLI_INDCF, a, 30, 54); // indirizzo
|
||||
add_field(CLI_COMCF, a, 25, 84); // Comune di residenza
|
||||
add_field("FLD008", a, 2, 109); // Provincia di residenza
|
||||
add_field("FLD009", a, 5, 121); // C.a.p.
|
||||
add_field(CLI_CAPCF, a, 5, 121); // C.a.p.
|
||||
add_field(CLI_COFI, a, 16, 126); // Codice fiscale o partita I.v.a
|
||||
add_field(CLI_PAIV, a, 11, 142); // Partita I.v.a.
|
||||
add_field("FLD012", a, 30, 153); // Indirizzo domicilio fiscale
|
||||
@ -89,15 +94,99 @@ TClienti_recset::TClienti_recset(const char * query)
|
||||
add_field("FLD024", a, 30, 312); // Indirizzo domicilio fiscale
|
||||
add_field("FLD025", a, 23, 342); // Comune domicilio fiscale
|
||||
add_field("FLD026", a, 5, 375); // C.a.p. domicilio fiscale
|
||||
add_field(CLI_INDCF, a, 30, 394); // Indirizzo sede legale
|
||||
add_field(CLI_COMCF, a, 25, 424); // comune sede legale
|
||||
add_field("FLD027", a, 30, 394); // Indirizzo sede legale
|
||||
add_field("FLD028", a, 25, 424); // comune sede legale
|
||||
add_field("FLD029", a, 2, 449); // provincia sede legale
|
||||
add_field(CLI_CAPCF, a, 5, 461); // c..a.p. sede legale
|
||||
add_field("FLD030", a, 5, 461); // c..a.p. sede legale
|
||||
add_field(CLI_PTEL, a, 4, 466); // prefisso telefonico sede legale
|
||||
add_field(CLI_TEL, a, 10, 470); // numero telefonico sede legale
|
||||
add_field("FLD033", a, 2, 480); // provincia costituzione
|
||||
add_field("FLD034", n, 1, 494); // Domicilio fiscale diverso da legale se c'è 1 è diverso 0 è uguale}
|
||||
add_field("FILLER", n, 1642, 495); // Domicilio fiscale diverso da legale se c'è 1 è diverso 0 è uguale}
|
||||
add_field("FILLER", n, 2501, 495);
|
||||
add_field(CLI_CODCF, n, 5, 2996); // codice cliente
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TMov_textset
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TMov_recset : public TAS400_recordset
|
||||
{
|
||||
TAssoc_array _index;
|
||||
|
||||
protected:
|
||||
void add_field(const char* name = "Filler", char tipo = 'a', int len = 0, int from = -1,
|
||||
const char* def = NULL);
|
||||
|
||||
public:
|
||||
TMov_recset(const char * query);
|
||||
};
|
||||
|
||||
void TMov_recset::add_field(const char* name, char tipo, int len, int from,
|
||||
const char* def)
|
||||
{
|
||||
const bool required = false;
|
||||
const TFieldtypes t = tipo == 'n' ? _longzerofld : _alfafld;
|
||||
const int pos = from - 1;
|
||||
if (def && *def)
|
||||
{
|
||||
CHECKS(def == NULL || (int)strlen(def) <= len, "Invalid default value ", def);
|
||||
TVariant var(def); var.convert_to(t);
|
||||
create_field(name, pos, len, t, required, var);
|
||||
}
|
||||
else
|
||||
create_field(name, pos, len, t, required);
|
||||
}
|
||||
|
||||
|
||||
TMov_recset::TMov_recset(const char * query)
|
||||
: TAS400_recordset(TString("AS400(285)\n") << query)
|
||||
{
|
||||
const char a = 'a';
|
||||
const char n = 'n';
|
||||
const bool o = true;
|
||||
const bool f = false;
|
||||
|
||||
add_field(MOV_NUMDOC, a, 5, 1); // NUMERO DOCUMENTO,
|
||||
add_field(MOV_CODCAUS, a, 2, 6); // CAUSALE FATTURA
|
||||
add_field("ANNOD", n, 4, 8); // ANNO DATA DOCUMENTO
|
||||
add_field("MESED", n, 2, 12); // MEDE DATA DOCUMENTO
|
||||
add_field("GIORNOD", n, 2, 14); // GIORNO DATA DOCUMENTO
|
||||
add_field(MOV_CODCF, n, 4, 16); // CODICE CLIENTE ??????
|
||||
add_field("Filler", n, 20, 2); // CODICE FILIALE
|
||||
add_field("IMPONIBILE1", n, 15, 22); // PRIMO IMPONIBILE IVA
|
||||
add_field("IMPONIBILE2", n, 15, 37); // SECONDO IMPONIBILE IVA
|
||||
add_field("IMPONIBILE3", n, 15, 52); // TERZO IMPONIBILE IVA
|
||||
add_field("IMPONIBILE4", n, 15, 67); // QUARTO IMPONIBILE IVA
|
||||
add_field("CODIVA1", n, 2, 82); // PRIMA ALIQUOTA IVA
|
||||
add_field("CODIVA2", n, 2, 84); // SECCONDA ALIQUOTA IVA,
|
||||
add_field("CODIVA3", n, 2, 86); // TERZA ALIQUOTA IVA
|
||||
add_field("CODIVA4", n, 3, 88); // QUARTA ALIQUOTA IVA
|
||||
add_field("IMPOSTA1", n, 15, 90); // IVA SU PRIMO IMPONIBILE
|
||||
add_field("IMPOSTA2", n, 15, 105); // IVA SU SECONDO IMPONIBILE
|
||||
add_field("IMPOSTA3", n, 15, 120); // IVA SU TERZO IMPONIBILE
|
||||
add_field("IMPOSTA4", n, 15, 135); // IVA SU QUARTO IMPONIBILE
|
||||
add_field("FLD019", n, 15, 150); // TOTALE SPESE
|
||||
add_field("FLD020", n, 15, 165); // TOTALE COMPETENZE ????? i conti ?
|
||||
add_field("FLD021", n, 15, 180); // TOTALE ANTICIPO
|
||||
add_field(MOV_RITFIS, n, 15, 195); // TOTALE RITENUTA ACCONTO
|
||||
add_field("IMPOSTA", n, 15, 210); // TOTALE IVA
|
||||
add_field(MOV_TOTDOC, n, 15, 225); // TOTALE FATTURA
|
||||
add_field("MESEC", n, 2, 240); // MESE DI COMPETENZA
|
||||
add_field("ANNOC", n, 4, 242); // ANNO DI COMPETENZA
|
||||
add_field("FLSEZ", a, 1, 246); // DARE / AVERE = D o A
|
||||
add_field("FLD028", a, 1, 247); // RISERVATO FLAG PAGAMENTO ???
|
||||
add_field("FLD029", a, 1, 248); // RISERVATO,
|
||||
add_field("FLD030", a, 1, 249); // RISERVATO TIPO FATTURAZIONE, ???
|
||||
add_field(MOV_CODPAG, a, 3, 250); // CODICE PAGAMENTO
|
||||
add_field("FLD032", n, 15, 252); // CDA 2% PER AVVOCATI ???
|
||||
add_field("FLD033", a, 1, 267); // SOGGETTO RITENUTA ???
|
||||
add_field("FLD034", a, 1, 268); // MODALITA' PAGAMENTO
|
||||
add_field("FLD035", a, 1, 269); // PASSATO A COMPENSI A TERZI ???
|
||||
add_field("FLD036", a, 7, 270); // RISERVATO
|
||||
add_field("FLD037", n, 5, 277); // CODICE AZIENDA CONTABILITA'
|
||||
add_field("FLD038", a, 1); // DELEGA ???
|
||||
add_field("STATO", a, 1, 283); // STATO MOVIMENTO ???
|
||||
}
|
||||
|
||||
// TAutomask
|
||||
@ -185,6 +274,7 @@ public:
|
||||
virtual bool destroy();
|
||||
virtual void main_loop();
|
||||
void load_cli();
|
||||
void load_mov();
|
||||
TPaghe2mov() {}
|
||||
};
|
||||
|
||||
@ -239,38 +329,23 @@ void TPaghe2mov::load_cli()
|
||||
|
||||
if (clienti.get("FLD003").as_string() != "A")
|
||||
{
|
||||
bool found = false;
|
||||
long codcf = clienti.get(CLI_CODCF).as_int();
|
||||
|
||||
clifo.zero();
|
||||
clifo.put(CLI_TIPOCF, "C");
|
||||
clifo.put(CLI_CODCF, codcf);
|
||||
|
||||
const bool found = clifo.read(_isequal) == NOERR;
|
||||
|
||||
if (cf.full())
|
||||
{
|
||||
clifo.setkey(4);
|
||||
clifo.put(CLI_COFI, cf);
|
||||
found = clifo.read(_isequal) == NOERR;
|
||||
}
|
||||
if (!found && paiv.full())
|
||||
{
|
||||
clifo.setkey(5);
|
||||
clifo.put(CLI_PAIV, paiv);
|
||||
found = clifo.read(_isequal) == NOERR;
|
||||
}
|
||||
clifo.setkey(1);
|
||||
if (!found)
|
||||
{
|
||||
long codcf = 1L;
|
||||
|
||||
clifo.zero();
|
||||
clifo.put(CLI_TIPOCF, "F");
|
||||
if (clifo.read(_isgteq) == NOERR)
|
||||
clifo.prev() ;
|
||||
if (clifo.get(CLI_TIPOCF) == "C")
|
||||
codcf += clifo.get_long(CLI_CODCF);
|
||||
clifo.zero();
|
||||
clifo.put(CLI_TIPOCF, "C");
|
||||
clifo.put(CLI_CODCF, codcf);
|
||||
cfven.zero();
|
||||
cfven.put(CFV_TIPOCF, "C");
|
||||
cfven.put(CFV_CODCF, codcf);
|
||||
cfven.rewrite();
|
||||
cfven.write();
|
||||
}
|
||||
else
|
||||
if (!aggcli)
|
||||
@ -328,6 +403,202 @@ void TPaghe2mov::load_cli()
|
||||
}
|
||||
}
|
||||
|
||||
void TPaghe2mov::load_mov()
|
||||
{
|
||||
TString query("SELECT * FROM ");
|
||||
TFilename name = _m->get(F_INPATH);
|
||||
|
||||
name.add("arfat.txt");
|
||||
if (name.exist())
|
||||
{
|
||||
TLocalisamfile movf(LF_MOV);
|
||||
|
||||
query << name;
|
||||
|
||||
TMov_recset movim(query);
|
||||
TProgind pi(movim.items(), TR("Scansione movimenti"), true, true);
|
||||
const TDate datareg(_m->get_date(F_DATAREG));
|
||||
long numreg = 0L;
|
||||
TEsercizi_contabili esc;
|
||||
const int annoes = esc.date2esc(datareg);
|
||||
TLocalisamfile movimenti(LF_MOV);
|
||||
|
||||
if (movimenti.last() == NOERR)
|
||||
numreg = movimenti.get_long(MOV_NUMREG);
|
||||
for (bool ok = movim.move_first(); ok; ok = movim.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
TMovimentoPN mov;
|
||||
|
||||
int cg_rows = 0;
|
||||
|
||||
TString8 codcaus(movim.get(MOV_CODCAUS).as_string());
|
||||
|
||||
codcaus.insert("0");
|
||||
|
||||
const TRectype & rec = cache().get(LF_CAUSALI, codcaus);
|
||||
|
||||
if (rec.empty())
|
||||
{
|
||||
TString msg("Causale ");
|
||||
|
||||
msg << movim.get(MOV_CODCAUS).as_string() << " assente";
|
||||
_log->log(2, msg);
|
||||
continue;
|
||||
}
|
||||
|
||||
const TCausale caus(codcaus);
|
||||
const TString8 codreg = rec.get(CAU_REG);
|
||||
TRegistro & reg = caus.reg();
|
||||
|
||||
mov.lfile().put(MOV_NUMREG, ++numreg);
|
||||
mov.lfile().put(MOV_ANNOES, annoes);
|
||||
mov.lfile().put(MOV_DATAREG, datareg);
|
||||
mov.lfile().put(MOV_ANNOIVA, datareg.year());
|
||||
mov.lfile().put(MOV_TIPO, "C");
|
||||
mov.lfile().put(MOV_CODCF, movim.get(MOV_CODCF).as_int());
|
||||
|
||||
const TDate datadoc(movim.get("GIORNOD").as_int(),
|
||||
movim.get("MESED").as_int(),
|
||||
movim.get("ANNOD").as_int());
|
||||
|
||||
mov.lfile().put(MOV_DATADOC, datadoc);
|
||||
const TString16 numdoc = movim.get(MOV_NUMDOC).as_string();
|
||||
mov.lfile().put(MOV_NUMDOC, numdoc);
|
||||
mov.lfile().put(MOV_TIPODOC, caus.tipo_doc());
|
||||
const real totdoc = movim.get(MOV_TOTDOC).as_real();
|
||||
TRectype & rowtot = mov.cg(cg_rows++);
|
||||
|
||||
mov.lfile().put(MOV_TOTDOC, totdoc);
|
||||
rowtot.put(RMV_SEZIONE, caus.sezione(1));
|
||||
TBill c;
|
||||
caus.bill(1, c);
|
||||
rowtot.put(RMV_GRUPPO, c.gruppo());
|
||||
rowtot.put(RMV_CONTO, c.conto());
|
||||
rowtot.put(RMV_SOTTOCONTO, movim.get(MOV_CODCF).as_int());
|
||||
rowtot.put(RMV_IMPORTO, totdoc);
|
||||
rowtot.put(RMV_ROWTYPE, "T");
|
||||
|
||||
TRectype & rowric = mov.cg(cg_rows++);
|
||||
|
||||
rowric.put(RMV_SEZIONE, caus.sezione(2));
|
||||
TBill r;
|
||||
caus.bill(2, r);
|
||||
rowric.put(RMV_GRUPPO, r.gruppo());
|
||||
rowric.put(RMV_CONTO, r.conto());
|
||||
rowric.put(RMV_SOTTOCONTO, r.sottoconto());
|
||||
rowric.put(RMV_ROWTYPE, "I");
|
||||
|
||||
const real ritfis = movim.get(MOV_RITFIS).as_real();
|
||||
|
||||
if (ritfis != ZERO)
|
||||
{
|
||||
TBill c;
|
||||
TRectype & row = mov.cg(cg_rows++);
|
||||
|
||||
mov.lfile().put(MOV_RITFIS, ritfis);
|
||||
row.put(RMV_SEZIONE, caus.sezione(7));
|
||||
caus.bill(7, c);
|
||||
row.put(RMV_GRUPPO, c.gruppo());
|
||||
row.put(RMV_CONTO, c.conto());
|
||||
row.put(RMV_SOTTOCONTO, c.sottoconto());
|
||||
row.put(RMV_IMPORTO, ritfis);
|
||||
row.put(RMV_ROWTYPE, "F");
|
||||
}
|
||||
|
||||
const real imposta = movim.get("IMPOSTA").as_real();
|
||||
|
||||
if (imposta != ZERO)
|
||||
{
|
||||
TBill c;
|
||||
TRectype & row = mov.cg(cg_rows++);
|
||||
|
||||
row.put(RMV_SEZIONE, caus.sezione(3));
|
||||
caus.bill(3, c);
|
||||
row.put(RMV_GRUPPO, c.gruppo());
|
||||
row.put(RMV_CONTO, c.conto());
|
||||
row.put(RMV_SOTTOCONTO, c.sottoconto());
|
||||
row.put(RMV_IMPORTO, imposta);
|
||||
row.put(RMV_ROWTYPE, "D");
|
||||
}
|
||||
mov.lfile().put(MOV_CODCAUS, codcaus);
|
||||
|
||||
TString descr("Fattura n.ro ");
|
||||
|
||||
descr << numdoc << " del " << datadoc;
|
||||
mov.lfile().put(MOV_DESCR, descr);
|
||||
mov.lfile().put(MOV_REG, codreg);
|
||||
int protiva = reg.protocol() + 1;
|
||||
mov.lfile().put(MOV_PROTIVA, protiva);
|
||||
|
||||
TString8 codpag(movim.get(MOV_CODPAG).as_string());
|
||||
|
||||
if (codpag == "000")
|
||||
codpag.cut(0);
|
||||
mov.lfile().put(MOV_CODPAG, codpag);
|
||||
|
||||
const int annoc = movim.get("ANNOC").as_int();
|
||||
const int mesec = movim.get("MESEC").as_int();
|
||||
|
||||
if (annoc != 0 && (annoc != datareg.year() || mesec != datareg.month()))
|
||||
mov.lfile().put(MOV_DATACOMP, TDate(1, mesec, annoc));
|
||||
else
|
||||
mov.lfile().put(MOV_DATACOMP, datareg);
|
||||
|
||||
real totric;
|
||||
for (int i= 1; i <= 4 ; i++)
|
||||
{
|
||||
TString16 fname("IMPONIBILE");
|
||||
|
||||
fname << i;
|
||||
|
||||
const real imp = movim.get(fname).as_real();
|
||||
if (imp != ZERO)
|
||||
{
|
||||
TRectype & iva = mov.iva(i - 1);
|
||||
bool swap = caus.sezione(2) == 'D';
|
||||
|
||||
totric += imp;
|
||||
iva.put(RMI_IMPONIBILE, imp);
|
||||
fname = "CODIVA";
|
||||
fname << i;
|
||||
iva.put(RMI_CODIVA, movim.get(fname).as_string());
|
||||
fname = "IMPOSTA";
|
||||
fname << i;
|
||||
|
||||
const real imposta = movim.get(fname).as_real();
|
||||
|
||||
iva.put(RMI_IMPOSTA, imposta);
|
||||
iva.put(RMI_GRUPPO, r.gruppo());
|
||||
iva.put(RMI_CONTO, r.conto());
|
||||
iva.put(RMI_SOTTOCONTO, r.sottoconto());
|
||||
iva.put(RMI_RIGAIMP, 2);
|
||||
if (imposta != ZERO)
|
||||
iva.put(RMI_RIGAIVA, 3);
|
||||
}
|
||||
}
|
||||
rowric.put(RMV_IMPORTO, totric);
|
||||
mov.adjust_rowtypes();
|
||||
|
||||
const int err = mov.write();
|
||||
TString msg("Movimento n.ro ");
|
||||
|
||||
msg << numreg;
|
||||
if (err == NOERR)
|
||||
{
|
||||
reg.update(protiva, datareg);
|
||||
_log->log(0, msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg << " - errore n. " << err;
|
||||
_log->log(2, msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TPaghe2mov::main_loop()
|
||||
{
|
||||
// eliminazione files delle elaborazioni precedenti
|
||||
@ -338,12 +609,13 @@ void TPaghe2mov::main_loop()
|
||||
FOR_EACH_ARRAY_ROW(transactions, row, name)
|
||||
remove_file(*name);
|
||||
// main
|
||||
if (_m->run() == K_ENTER)
|
||||
while (_m->run() == K_ENTER)
|
||||
{
|
||||
const char* const title = TR("Importazione clienti");
|
||||
|
||||
_log = new TLog_report(title);
|
||||
load_cli();
|
||||
load_mov();
|
||||
TReport_book book;
|
||||
book.add(*_log);
|
||||
book.preview();
|
||||
|
@ -4,3 +4,4 @@
|
||||
#define F_RAGSOC 102
|
||||
#define F_INPATH 103
|
||||
#define F_AGGCLI 104
|
||||
#define F_DATAREG 105
|
@ -9,7 +9,7 @@ END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 3 2 "Codice "
|
||||
PROMPT 3 2 "Codice "
|
||||
FLAGS "FD"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
@ -25,12 +25,12 @@ END
|
||||
|
||||
GROUPBOX DLG_NULL 76 3
|
||||
BEGIN
|
||||
PROMPT 2 4 "Sorgente"
|
||||
PROMPT 2 4 "Sorgente"
|
||||
END
|
||||
|
||||
STRING F_INPATH 256 39
|
||||
BEGIN
|
||||
PROMPT 3 5 "Cartella "
|
||||
PROMPT 3 5 "Cartella "
|
||||
DSELECT
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD PagheInPath
|
||||
@ -42,6 +42,12 @@ BEGIN
|
||||
FIELD AggCli
|
||||
END
|
||||
|
||||
DATE F_DATAREG
|
||||
BEGIN
|
||||
PROMPT 3 8 "Data registrazione "
|
||||
FIELD DataReg
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
|
77
ps/pg0099100a.rep
Executable file
77
ps/pg0099100a.rep
Executable file
@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<report name="pg0099100a" lpi="6">
|
||||
<description>Elenco versamenti da effettuare</description>
|
||||
<font face="Arial" size="8" />
|
||||
<section type="Head">
|
||||
<font face="Arial" bold="1" size="8" />
|
||||
<field type="Testo" align="right" width="7" pattern="1" text="N.Doc." />
|
||||
<field x="10" type="Testo" width="10" pattern="1" text="Cliente" />
|
||||
<field x="68" type="Testo" align="right" width="10" pattern="1" text="Imponibile" />
|
||||
<field x="79" type="Testo" align="right" width="10" pattern="1" text="Imposta" />
|
||||
<field x="90" type="Testo" align="right" width="10" pattern="1" text="Rit. Prof." />
|
||||
<field x="101" type="Testo" align="right" width="10" pattern="1" text="Rit. Acc." />
|
||||
<field x="112" type="Testo" align="right" width="10" pattern="1" text="Tot. Doc." />
|
||||
<field border="1" x="1" y="1" type="Linea" width="130" height="0" pattern="1" />
|
||||
</section>
|
||||
<section type="Head" level="1">
|
||||
<field border="2" radius="100" x="33" y="0.5" type="Rettangolo" width="60" height="2" pattern="1" />
|
||||
<field x="33" y="1" type="Testo" align="center" width="60" height="2" pattern="1" text="Elenco versamenti da effettuare">
|
||||
<font face="Arial" size="14" />
|
||||
</field>
|
||||
</section>
|
||||
<section type="Body" />
|
||||
<section type="Body" level="1">
|
||||
<field x="1" type="Numero" align="right" width="6" pattern="1">
|
||||
<source>NDOC</source>
|
||||
</field>
|
||||
<field x="9" type="Numero" align="right" width="6" pattern="1">
|
||||
<source>CLIFO.CODCF</source>
|
||||
</field>
|
||||
<field x="16" type="Stringa" width="50" pattern="1">
|
||||
<source>CLIFO.RAGSOC</source>
|
||||
</field>
|
||||
<field x="68" type="Valuta" align="right" width="10" pattern="1" text="#########,@@">
|
||||
<source>IMPONIBILI</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">MESSAGE ADD,F1.101</postscript>
|
||||
</field>
|
||||
<field x="79" type="Valuta" align="right" width="10" pattern="1" text="#########,@@">
|
||||
<source>IMPOSTE</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">MESSAGE ADD,F1.102</postscript>
|
||||
</field>
|
||||
<field x="90" type="Valuta" align="right" width="10" pattern="1" text="#########,@@">
|
||||
<source>TOTRITSOC</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">MESSAGE ADD,F1.103</postscript>
|
||||
</field>
|
||||
<field x="101" type="Valuta" align="right" width="10" pattern="1" text="#########,@@">
|
||||
<source>TOTRITFIS</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">MESSAGE ADD,F1.104</postscript>
|
||||
</field>
|
||||
<field x="112" type="Valuta" align="right" width="10" pattern="1" text="#########,@@">
|
||||
<source>TOTDOC</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">MESSAGE ADD,F1.105</postscript>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Foot">
|
||||
<font face="Arial" bold="1" size="8" />
|
||||
<field border="1" type="Linea" width="130" height="0" pattern="1" />
|
||||
<field x="106" type="Testo" width="4" pattern="1" text="Pag." />
|
||||
<field x="110" type="Numero" align="right" width="3" pattern="1">
|
||||
<source>#REPORT.PAGE</source>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Foot" level="1">
|
||||
<font face="Arial" bold="1" size="8" />
|
||||
<field border="1" x="1" type="Linea" width="130" height="0" pattern="1" />
|
||||
<field x="50" y="0.5" type="Testo" width="10" pattern="1" text="TOTALI" />
|
||||
<field x="68" y="0.5" type="Valuta" align="right" width="10" id="101" pattern="1" text="#########,@@" />
|
||||
<field x="79" y="0.5" type="Valuta" align="right" width="10" id="102" pattern="1" text="#########,@@" />
|
||||
<field x="90" y="0.5" type="Valuta" align="right" width="10" id="103" pattern="1" text="#########,@@" />
|
||||
<field x="101" y="0.5" type="Valuta" align="right" width="10" id="104" pattern="1" text="#########,@@" />
|
||||
<field x="112" y="0.5" type="Valuta" align="right" width="10" id="105" pattern="1" text="#########,@@" />
|
||||
</section>
|
||||
<sql>USE DOC
|
||||
SELECT BETWEEN(DATADOC,#DADATA,#ADATA)
|
||||
JOIN CLIFO INTO TIPOCF=="C" CODCF==CODCF
|
||||
FROM PROVV="D" ANNO=#ANNO CODNUM=#CODNUM
|
||||
TO PROVV="D" ANNO=#ANNO CODNUM=#CODNUM</sql>
|
||||
</report>
|
93
ps/pg0099100a.uml
Executable file
93
ps/pg0099100a.uml
Executable file
@ -0,0 +1,93 @@
|
||||
PAGE "Stampa elenco versamenti da effettuare" -1 -1 80 10
|
||||
|
||||
NUMBER 251 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "Ditta "
|
||||
FLAGS "FRD"
|
||||
USE 9 KEY 1
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT CODDITTA 251
|
||||
DISPLAY "Codice" CODDITTA
|
||||
DISPLAY "Ragione sociale @50" RAGSOC
|
||||
OUTPUT 251 CODDITTA
|
||||
OUTPUT 252 RAGSOC
|
||||
END
|
||||
|
||||
STRING 252 50
|
||||
BEGIN
|
||||
PROMPT 15 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX -1 78 5
|
||||
BEGIN
|
||||
PROMPT 1 3 "@bParametri documenti di vendita"
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
STRING 253 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "Numerazione "
|
||||
USE %NUM
|
||||
INPUT CODTAB 253
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT 253 CODTAB
|
||||
OUTPUT 254 S0
|
||||
CHECKTYPE FORCED
|
||||
FLAGS "UPA"
|
||||
FIELD CODNUM
|
||||
END
|
||||
|
||||
STRING 254 50
|
||||
BEGIN
|
||||
PROMPT 22 4 ""
|
||||
USE %NUM KEY 2
|
||||
INPUT S0 254
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT 253
|
||||
END
|
||||
|
||||
NUMBER 255 4
|
||||
BEGIN
|
||||
PROMPT 2 5 "Anno "
|
||||
USE ESC
|
||||
INPUT CODTAB 255
|
||||
DISPLAY "Codice Esercizio" CODTAB
|
||||
DISPLAY "Data inizio esercizio" D0
|
||||
DISPLAY "Data fine esercizio " D1
|
||||
CHECKTYPE REQUIRED
|
||||
OUTPUT 255 CODTAB
|
||||
OUTPUT 256 D0
|
||||
OUTPUT 257 D1
|
||||
NUM_EXPR #F_ANNO>0
|
||||
FLAGS "AP"
|
||||
FIELD ANNO
|
||||
END
|
||||
|
||||
DATE 256
|
||||
BEGIN
|
||||
PROMPT 2 6 "Da data "
|
||||
FIELD DADATA
|
||||
END
|
||||
|
||||
DATE 257
|
||||
BEGIN
|
||||
PROMPT 30 6 "A data "
|
||||
FIELD ADATA
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
@ -528,6 +528,8 @@ void TListino_textset::add_field(const char* name, int len,
|
||||
TString80 fname(name);
|
||||
|
||||
const TFieldtypes t = tipo == 'n' ? _longzerofld : _alfafld;
|
||||
if (tipo == 'r')
|
||||
tipo = _realfld;
|
||||
const int pos = from - 1;
|
||||
if (def && *def)
|
||||
{
|
||||
@ -544,6 +546,7 @@ TListino_textset::TListino_textset(const char* query)
|
||||
{
|
||||
const char an = 'a';
|
||||
const char n = 'n';
|
||||
const char r = 'r';
|
||||
|
||||
add_field("LVALAR", 1, an, 1); // MFARLI00
|
||||
add_field("LGRUPP", 2, an, 2);
|
||||
@ -553,8 +556,8 @@ TListino_textset::TListino_textset(const char* query)
|
||||
add_field("LCFTAB", 6, an, 33);
|
||||
add_field("LCOPRI", 1, an, 39);
|
||||
add_field("LDESAR", 40, an, 40);
|
||||
add_field("LLISTI", 22, an, 80);
|
||||
add_field("LCOSTO", 22, an, 102);
|
||||
add_field("LLISTI", 22, r, 80);
|
||||
add_field("LCOSTO", 22, r, 102);
|
||||
add_field("LLIFVE", 22, an, 124);
|
||||
add_field("LDTSCA", 19, an, 146);
|
||||
add_field("LSCOD1", 22, an, 165);
|
||||
|
@ -9,4 +9,6 @@
|
||||
#define F_GI 109
|
||||
#define F_CS 110
|
||||
#define F_TB 111
|
||||
#define F_DATALIM 112
|
||||
#define F_DATAMOV 113
|
||||
|
||||
|
30
ps/ps0001.cpp
Executable file
30
ps/ps0001.cpp
Executable file
@ -0,0 +1,30 @@
|
||||
#include <xvt.h>
|
||||
|
||||
#include "ps0001.h"
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
const int op = argc < 2 ? 0 : argv[1][1]-'0';
|
||||
switch (op)
|
||||
{
|
||||
case 0:
|
||||
ps0001100(argc,argv);
|
||||
break;
|
||||
case 1:
|
||||
ps0001200(argc,argv);
|
||||
break;
|
||||
case 2:
|
||||
ps0001300(argc,argv);
|
||||
break;
|
||||
default:
|
||||
ps0001100(argc,argv);
|
||||
break;
|
||||
}
|
||||
exit(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
3
ps/ps0001.h
Executable file
3
ps/ps0001.h
Executable file
@ -0,0 +1,3 @@
|
||||
int ps0001100(int argc, char* argv[]);
|
||||
int ps0001200(int argc, char* argv[]);
|
||||
int ps0001300(int argc, char* argv[]);
|
1594
ps/ps0001100.cpp
Executable file
1594
ps/ps0001100.cpp
Executable file
File diff suppressed because it is too large
Load Diff
13
ps/ps0001100.h
Executable file
13
ps/ps0001100.h
Executable file
@ -0,0 +1,13 @@
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_PATH 103
|
||||
#define F_CL 104
|
||||
#define F_FO 105
|
||||
#define F_BC 106
|
||||
#define F_PC 107
|
||||
#define F_PF 108
|
||||
#define F_SA 110
|
||||
#define F_MO 111
|
||||
#define F_DATALIM 112
|
||||
#define F_DATAMOV 113
|
||||
|
94
ps/ps0001100.uml
Executable file
94
ps/ps0001100.uml
Executable file
@ -0,0 +1,94 @@
|
||||
#include "ps0001100.h"
|
||||
|
||||
PAGE "Invio dati contabilita'" -1 -1 80 14
|
||||
|
||||
GROUPBOX DLG_NULL 76 3
|
||||
BEGIN
|
||||
PROMPT 2 1 "@bDitta corrente"
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 3 2 "Codice "
|
||||
FLAGS "FD"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 23 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_DATALIM
|
||||
BEGIN
|
||||
PROMPT 2 4 "Data limite "
|
||||
FIELD datalim
|
||||
END
|
||||
|
||||
DATE F_DATAMOV
|
||||
BEGIN
|
||||
PROMPT 40 4 "Data movimenti "
|
||||
FIELD datamov
|
||||
END
|
||||
|
||||
BOOLEAN F_CL
|
||||
BEGIN
|
||||
PROMPT 2 6 "Clienti"
|
||||
FIELD cl
|
||||
END
|
||||
|
||||
BOOLEAN F_FO
|
||||
BEGIN
|
||||
PROMPT 14 6 "Fornitori"
|
||||
FIELD fo
|
||||
END
|
||||
|
||||
BOOLEAN F_PC
|
||||
BEGIN
|
||||
PROMPT 26 6 "Partite clienti"
|
||||
FIELD pc
|
||||
END
|
||||
|
||||
BOOLEAN F_PF
|
||||
BEGIN
|
||||
PROMPT 40 6 "Partite fornitori"
|
||||
FIELD pf
|
||||
END
|
||||
|
||||
BOOLEAN F_SA
|
||||
BEGIN
|
||||
PROMPT 59 6 "Saldi"
|
||||
FIELD cs
|
||||
END
|
||||
|
||||
BOOLEAN F_MO
|
||||
BEGIN
|
||||
PROMPT 69 6 "Movimenti"
|
||||
FIELD mo
|
||||
END
|
||||
|
||||
STRING F_PATH 256 30
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cartella di output "
|
||||
DSELECT
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD Outth
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
1158
ps/ps0001200.cpp
Executable file
1158
ps/ps0001200.cpp
Executable file
File diff suppressed because it is too large
Load Diff
13
ps/ps0001200.h
Executable file
13
ps/ps0001200.h
Executable file
@ -0,0 +1,13 @@
|
||||
#include "../sc/scselmsk.h"
|
||||
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_DATASTAMPA 103
|
||||
#define F_DATAOPERAZIONE 104
|
||||
#define F_DATASCADUTO 105
|
||||
#define F_GIORNI 106
|
||||
#define F_VALUTA 107
|
||||
#define F_SCADINFASCE 201
|
||||
#define F_SCADFASCE 202
|
||||
#define F_ASCADINFASCE 203
|
||||
#define F_ASCADFASCE 204
|
240
ps/ps0001200.uml
Executable file
240
ps/ps0001200.uml
Executable file
@ -0,0 +1,240 @@
|
||||
#include "ps0001200.h"
|
||||
|
||||
PAGE "Stampa Previsione Incassi/Pagamenti Salus" -1 -1 78 20
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Cod. "
|
||||
FLAGS "DFR"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50 46
|
||||
BEGIN
|
||||
PROMPT 14 1 "R.S. "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 68 7
|
||||
BEGIN
|
||||
PROMPT 1 2 ""
|
||||
END
|
||||
|
||||
DATE F_DATASTAMPA
|
||||
BEGIN
|
||||
PROMPT 2 3 "Data di stampa "
|
||||
HELP "Data di stampa"
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Si deve specificare la data di stampa"
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
DATE F_DATAOPERAZIONE
|
||||
BEGIN
|
||||
PROMPT 2 4 "Data limite operazione "
|
||||
HELP "Data limite operazione"
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
DATE F_DATASCADUTO
|
||||
BEGIN
|
||||
PROMPT 2 5 "Data limite scaduto "
|
||||
HELP "Data limite scaduto"
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Data limite scaduto non valida"
|
||||
END
|
||||
|
||||
NUMBER F_GIORNI 3
|
||||
BEGIN
|
||||
PROMPT 2 6 "Giorni per calcolo rischio "
|
||||
HELP "Inserire il numero di giorni per il calcolo del rischio"
|
||||
END
|
||||
|
||||
BOOLEAN F_VALUTA
|
||||
BEGIN
|
||||
PROMPT 2 7 "Stampa in valuta"
|
||||
HELP "Selezionare se si vuole la stampa in valuta"
|
||||
END
|
||||
|
||||
RADIOBUTTON SC_CLIFO 20
|
||||
BEGIN
|
||||
PROMPT 1 9 "Selezione"
|
||||
ITEM "C|Clienti" MESSAGE ENABLE, F_GIORNI|K_SPACE,SC_SORTCF
|
||||
ITEM "F|Fornitori" MESSAGE DISABLE, F_GIORNI|K_SPACE,SC_SORTCF
|
||||
//ITEM "P|Conti" MESSAGE DISABLE, F_GIORNI|K_SPACE,SC_SORTCF
|
||||
END
|
||||
|
||||
RADIOBUTTON SC_SORTCF 29
|
||||
BEGIN
|
||||
GROUP 1
|
||||
PROMPT 23 9 "Ordinamento"
|
||||
ITEM "1|Per codice/conto"
|
||||
ITEM "2|Per rag.soc./descrizione"
|
||||
END
|
||||
|
||||
BUTTON SC_SELECT 10 1
|
||||
BEGIN
|
||||
PROMPT 55 10 "S~elezione"
|
||||
END
|
||||
|
||||
BUTTON SC_RESET 10 1
|
||||
BEGIN
|
||||
PROMPT 55 11 "A~zzera"
|
||||
END
|
||||
|
||||
NUMBER SC_CFCODFR 6
|
||||
BEGIN
|
||||
PROMPT 2 14 "Da codice "
|
||||
FLAGS "B"
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
NUMBER SC_CFCODTO 6
|
||||
BEGIN
|
||||
PROMPT 37 14 "a codice "
|
||||
FLAGS "B"
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
STRING SC_CFDESFR 50 40
|
||||
BEGIN
|
||||
PROMPT 2 14 "Da ragione sociale "
|
||||
GROUP 4
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING SC_CFDESTO 50 40
|
||||
BEGIN
|
||||
PROMPT 2 15 "A ragione sociale "
|
||||
GROUP 4
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
NUMBER SC_PCONCODFR1 3
|
||||
BEGIN
|
||||
PROMPT 2 14 "Da conto "
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER SC_PCONCODFR2 3
|
||||
BEGIN
|
||||
PROMPT 15 14 ""
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER SC_PCONCODFR3 6
|
||||
BEGIN
|
||||
PROMPT 19 14 ""
|
||||
FLAGS "B"
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER SC_PCONCODTO1 3
|
||||
BEGIN
|
||||
PROMPT 31 14 "a conto "
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER SC_PCONCODTO2 3
|
||||
BEGIN
|
||||
PROMPT 43 14 ""
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER SC_PCONCODTO3 6
|
||||
BEGIN
|
||||
PROMPT 47 14 ""
|
||||
FLAGS "B"
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
STRING SC_PCONDESFR 50 40
|
||||
BEGIN
|
||||
PROMPT 2 14 "Da descrizione "
|
||||
GROUP 6
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING SC_PCONDESTO 50 40
|
||||
BEGIN
|
||||
PROMPT 2 15 "A descrizione "
|
||||
GROUP 6
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
NUMBER SC_NSEL 3
|
||||
BEGIN
|
||||
PROMPT 60 13 "N. "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_SCADINFASCE
|
||||
BEGIN
|
||||
PROMPT 2 16 "Scaduto suddiviso in fasce"
|
||||
HELP "Selezionare se si vuole la stampa scaduto suddiviso in fasce"
|
||||
MESSAGE TRUE ENABLE,F_SCADFASCE
|
||||
MESSAGE FALSE RESET,F_SCADFASCE|DISABLE,F_SCADFASCE
|
||||
END
|
||||
|
||||
LISTBOX F_SCADFASCE 3
|
||||
BEGIN
|
||||
PROMPT 35 16 "Fino alla fascia "
|
||||
ITEM "0|0"
|
||||
ITEM "1|30"
|
||||
ITEM "2|60"
|
||||
ITEM "3|90"
|
||||
ITEM "4|120"
|
||||
ITEM "5|150"
|
||||
ITEM "6|180"
|
||||
ITEM "7|210"
|
||||
ITEM "8|240"
|
||||
END
|
||||
|
||||
BOOLEAN F_ASCADINFASCE
|
||||
BEGIN
|
||||
PROMPT 2 17 "A scadere suddiviso in fasce"
|
||||
HELP "Selezionare se si vuole la stampa a scadere suddiviso in fasce"
|
||||
MESSAGE TRUE ENABLE,F_ASCADFASCE
|
||||
MESSAGE FALSE RESET,F_ASCADFASCE|DISABLE,F_ASCADFASCE
|
||||
END
|
||||
|
||||
LISTBOX F_ASCADFASCE 3
|
||||
BEGIN
|
||||
PROMPT 35 17 "Fino alla fascia "
|
||||
ITEM "0|0"
|
||||
ITEM "1|30"
|
||||
ITEM "2|60"
|
||||
ITEM "3|90"
|
||||
ITEM "4|120"
|
||||
ITEM "5|150"
|
||||
ITEM "6|180"
|
||||
ITEM "7|210"
|
||||
ITEM "8|240"
|
||||
NUM_EXPR {#F_SCADFASCE+#F_ASCADFASCE < 10}
|
||||
WARNING "E' possibile selezionare massimo 9 fasce in totale"
|
||||
END
|
||||
|
||||
BUTTON DLG_PRINT 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_EDIT 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
PICTURE BMP_EDIT
|
||||
MESSAGE EXIT,69
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
66
ps/ps0001300.cpp
Executable file
66
ps/ps0001300.cpp
Executable file
@ -0,0 +1,66 @@
|
||||
#include <tabapp.h>
|
||||
|
||||
#include "ps0001.h"
|
||||
#include "ps0001300.h"
|
||||
|
||||
class TSispac_multirel_app : public TMultirel_application
|
||||
{
|
||||
|
||||
protected:
|
||||
virtual void set_descr(TMask & m, const TString & desc);
|
||||
virtual void get_mask_name(TString& tabname) const;
|
||||
//magico metodo per impedire la navigazione su tabelle diverse da quella corrente del cursore
|
||||
virtual bool has_filtered_cursor() const { return true; }
|
||||
virtual bool user_create();
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_query_insert_mode(TMask& m);
|
||||
|
||||
public:
|
||||
|
||||
TSispac_multirel_app() {}
|
||||
virtual ~TSispac_multirel_app() {}
|
||||
};
|
||||
|
||||
void TSispac_multirel_app::set_descr(TMask & m, const TString & desc)
|
||||
{
|
||||
m.set(F_DESC, desc);
|
||||
}
|
||||
|
||||
void TSispac_multirel_app::get_mask_name(TString& tabname) const
|
||||
{
|
||||
TMultirel_application::get_mask_name(tabname);
|
||||
tabname.overwrite("dv", 2);
|
||||
}
|
||||
|
||||
void TSispac_multirel_app::init_query_mode(TMask& m)
|
||||
{
|
||||
TMultirel_application::init_query_mode(m);
|
||||
m.show(-1);
|
||||
m.hide(-2);
|
||||
}
|
||||
|
||||
void TSispac_multirel_app::init_query_insert_mode(TMask& m)
|
||||
{
|
||||
TMultirel_application::init_query_insert_mode(m);
|
||||
m.hide(-1);
|
||||
m.show(-2);
|
||||
}
|
||||
|
||||
bool TSispac_multirel_app::user_create()
|
||||
{
|
||||
bool ok = TMultirel_application::user_create();
|
||||
|
||||
if (ok)
|
||||
{
|
||||
TMask & m = *get_mask();
|
||||
|
||||
set_search_field(F_CODTAB);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
int ps0001300(int argc, char* argv[])
|
||||
{
|
||||
TSispac_multirel_app a;
|
||||
a.run(argc, argv, TR("Tabella"));
|
||||
return 0;
|
||||
}
|
5
ps/ps0001300.h
Executable file
5
ps/ps0001300.h
Executable file
@ -0,0 +1,5 @@
|
||||
#define F_COD 101
|
||||
#define F_CODTAB 102
|
||||
#define F_DESC 103
|
||||
#define F_COD_CAMPO 104
|
||||
#define F_CODTAB1 105
|
@ -9,7 +9,8 @@ int main(int argc, char** argv)
|
||||
{
|
||||
case 0: ps0713100(argc, argv); break; //Trasferimento dati contabili per ATS
|
||||
case 1: ps0713200(argc, argv); break; //Trasferimento commesse
|
||||
case 2: ps0713300(argc, argv); break; //Importazione fatture per ATS
|
||||
case 2: ps0713300(argc, argv); break; //Importazione fatture di acquisto per ATS
|
||||
case 3: ps0713400(argc, argv); break; //Importazione fatture di vendita per ATS
|
||||
default:
|
||||
ps0713100(argc, argv); break; //Trasferimento dati contabili per ATS
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
int ps0713100(int argc, char* argv[]);
|
||||
int ps0713200(int argc, char* argv[]);
|
||||
int ps0713300(int argc, char* argv[]);
|
||||
int ps0713400(int argc, char* argv[]);
|
||||
|
377
ps/ps0713400.cpp
Executable file
377
ps/ps0713400.cpp
Executable file
@ -0,0 +1,377 @@
|
||||
#include <automask.h>
|
||||
#include <progind.h>
|
||||
#include <utility.h>
|
||||
#include <textset.h>
|
||||
|
||||
#include "ps0713.h"
|
||||
#include "ps0713400a.h"
|
||||
|
||||
#include "../cg/cglib01.h"
|
||||
#include "../mg/anamag.h"
|
||||
#include "../ve/velib.h"
|
||||
|
||||
#include "clifo.h"
|
||||
#include "doc.h"
|
||||
#include "rdoc.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TAutomask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TImportaFatVen_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TImportaFatVen_mask();
|
||||
};
|
||||
|
||||
TImportaFatVen_mask::TImportaFatVen_mask() :TAutomask ("ps0713400a")
|
||||
{
|
||||
}
|
||||
|
||||
bool TImportaFatVen_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
|
||||
{
|
||||
switch (f.dlg())
|
||||
{
|
||||
//giochetto per avere la lista dei files validi nella directory di trasferimento!
|
||||
case F_NAME:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"),
|
||||
"File@32");
|
||||
TFilename path = get(F_PATH);
|
||||
path.add("*.csv"); //files delle testate
|
||||
list_files(path, as.rows_array());
|
||||
TFilename name;
|
||||
FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
|
||||
{
|
||||
name = *row;
|
||||
*row = name.name();
|
||||
}
|
||||
if (as.run() == K_ENTER)
|
||||
{
|
||||
f.set(as.row(as.selected()));
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////
|
||||
//// CLASSI DERIVATE PER IMPORTAZIONE DATI ////
|
||||
///////////////////////////////////////////////
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
// Recordset specifici per i dati da trasferire
|
||||
/////////////////////////////////////////////////////////////
|
||||
|
||||
class TImportaFatVen_recordset : public TCSV_recordset
|
||||
{
|
||||
protected:
|
||||
virtual TRecnotype new_rec(const char* buf = NULL);
|
||||
|
||||
public:
|
||||
TImportaFatVen_recordset(const char * fileName);
|
||||
};
|
||||
|
||||
TRecnotype TImportaFatVen_recordset::new_rec(const char* buf)
|
||||
{
|
||||
TToken_string str(256,'\t'); //nuovo record tab separator
|
||||
|
||||
if(buf && *buf)
|
||||
{
|
||||
bool apici=false;
|
||||
|
||||
for (const char* c = buf; *c ; c++)
|
||||
{
|
||||
if (*c == '"')
|
||||
{
|
||||
apici = !apici;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*c == ',')
|
||||
{
|
||||
if (!apici)
|
||||
str << str.separator();
|
||||
else
|
||||
str << *c;
|
||||
}
|
||||
else
|
||||
str << *c;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const TRecnotype n = TText_recordset::new_rec(str);
|
||||
|
||||
if (n >= 0)
|
||||
row(n).separator(str.separator());
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
TImportaFatVen_recordset::TImportaFatVen_recordset(const char * fileName)
|
||||
: TCSV_recordset("CSV(,)")
|
||||
{
|
||||
load_file(fileName);
|
||||
}
|
||||
|
||||
///////////////////////////////////////
|
||||
// TSkeleton_application
|
||||
///////////////////////////////////////
|
||||
class TImportaFatVen_applicat : public TSkeleton_application
|
||||
{
|
||||
virtual bool check_autorization() const {return false;}
|
||||
virtual const char * extra_modules() const {return "ve";}
|
||||
|
||||
TImportaFatVen_mask* _msk;
|
||||
|
||||
|
||||
protected:
|
||||
long togli_apici_numero(TImportaFatVen_recordset & s, int i);
|
||||
const TString& togli_apici(TImportaFatVen_recordset & s, int i);
|
||||
bool find_clifo(long& codcf, TString& paiv, long& abi, long& cab, TString& codpag);
|
||||
|
||||
public:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual void main_loop();
|
||||
bool transfer(const TFilename& file);
|
||||
|
||||
TImportaFatVen_applicat() {}
|
||||
};
|
||||
|
||||
long TImportaFatVen_applicat::togli_apici_numero(TImportaFatVen_recordset & s, int i)
|
||||
{
|
||||
TString80 tmp = s.get(i).as_string();
|
||||
tmp.strip("\"");
|
||||
return atol(tmp);
|
||||
}
|
||||
|
||||
const TString& TImportaFatVen_applicat::togli_apici(TImportaFatVen_recordset & s, int i)
|
||||
{
|
||||
TString& tmp = get_tmp_string();
|
||||
tmp = s.get(i).as_string();
|
||||
tmp.strip("\"");
|
||||
tmp.trim();
|
||||
return tmp;
|
||||
}
|
||||
|
||||
bool TImportaFatVen_applicat::find_clifo(long& codcf, TString& paiv, long& abi, long& cab, TString& codpag)
|
||||
{
|
||||
if (!paiv.blank())
|
||||
{
|
||||
TISAM_recordset clienti("USE CLIFO KEY 5\nFROM TIPOCF='C' STATOPAIV="" PAIV=#PAIV\nTO TIPOCF='C' STATOPAIV="" PAIV=#PAIV");
|
||||
clienti.set_var("#PAIV", TVariant(paiv));
|
||||
if (clienti.move_first())
|
||||
{
|
||||
codcf = clienti.get(CLI_CODCF).as_int();
|
||||
paiv = clienti.get(CLI_PAIV).as_string();
|
||||
abi = clienti.get(CLI_CODABI).as_int();
|
||||
cab = clienti.get(CLI_CODCAB).as_int();
|
||||
codpag = clienti.get(CLI_CODPAG).as_string();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TImportaFatVen_applicat::transfer(const TFilename& file)
|
||||
{
|
||||
const TString4 codnum = "F01"; //??????????????????????????
|
||||
const TString4 tpdoc = "F01"; //??????????????????????????
|
||||
|
||||
TImportaFatVen_recordset s(file);
|
||||
|
||||
TProgind pi(s.items(),"Importazione fatture in corso ...",true,true);
|
||||
|
||||
for (bool ok=s.move_first();ok;ok=s.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
if (s.get(0).as_string().blank())
|
||||
break;
|
||||
|
||||
//leggo il contenuto del tracciato record
|
||||
//campi documento
|
||||
const long ndoc = togli_apici_numero(s,0); //ndoc
|
||||
const TDate datadoc = togli_apici(s,1); //datadoc
|
||||
//campi articolo 1
|
||||
TString descr1 = togli_apici(s,2); //descrizione aritcolo 1
|
||||
const TString80 art1 = togli_apici(s,3); //articolo 1
|
||||
const real imp1 = togli_apici(s,4); //imponibile articolo 1
|
||||
//campi articolo 2
|
||||
const TString descr2 = togli_apici(s,5); //descrizione articolo 2
|
||||
const real imp2 = togli_apici(s,6); //imponibile articolo 2
|
||||
//campi articolo 3
|
||||
const TString16 descr3 = togli_apici(s,7); //articolo 3
|
||||
const real impives = togli_apici(s,8); //imponibile iva esente
|
||||
|
||||
//partita iva, mi serve per sapere se un cliente esiste già in clifo
|
||||
TString16 paiv = togli_apici(s,9); //partita iva
|
||||
|
||||
//prendo codiva da anamag
|
||||
const TRectype& anamag = cache().get(LF_ANAMAG,art1);
|
||||
const TString16 codiva = anamag.get(ANAMAG_CODIVA);
|
||||
|
||||
//codice commessa
|
||||
const TString16 codcms = togli_apici(s,17);
|
||||
|
||||
//cerco gli altri dati di interesse
|
||||
const int anno = datadoc.year(); //anno documento
|
||||
long codcf;
|
||||
long abi;
|
||||
long cab;
|
||||
TString4 codpag;
|
||||
|
||||
|
||||
if (!find_clifo(codcf, paiv, abi, cab, codpag))
|
||||
{
|
||||
//campi cliente (da utilizzare se non esiste già)
|
||||
|
||||
const TString80 ragsoc = togli_apici(s,10); //ragione sociale
|
||||
const TString80 ind = togli_apici(s,11); //indirizzo
|
||||
const TString4 nciv = togli_apici_numero(s,12); //numero civico
|
||||
const long cap = togli_apici_numero(s,13); //CAP
|
||||
const TString80 comune = togli_apici(s,14); //comune
|
||||
const TString80 loc = togli_apici(s,15); //località
|
||||
const TString4 prov = togli_apici(s,16); //provincia
|
||||
|
||||
const TString& codcom = cap2comune(cap, comune); //codice comune
|
||||
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
|
||||
//calcolo il prossimo codice cliente libero
|
||||
codcf = 1L ;
|
||||
if (!clifo.empty())
|
||||
{
|
||||
clifo.put(CLI_TIPOCF, 'F');
|
||||
if (clifo.read(_isgteq) == NOERR)
|
||||
clifo.prev();
|
||||
else
|
||||
clifo.last();
|
||||
|
||||
if (clifo.get_char(CLI_TIPOCF) == 'C')
|
||||
codcf += clifo.get_long(CLI_CODCF);
|
||||
}
|
||||
|
||||
//inserisco i dati di interesse
|
||||
clifo.put(CLI_TIPOCF, "C");
|
||||
clifo.put(CLI_CODCF, codcf);
|
||||
clifo.put(CLI_RAGSOC, ragsoc);
|
||||
clifo.put(CLI_PAIV, paiv);
|
||||
clifo.put(CLI_INDCF, ind);
|
||||
clifo.put(CLI_CIVCF, nciv);
|
||||
clifo.put(CLI_CAPCF, cap);
|
||||
clifo.put(CLI_COMCF, codcom);
|
||||
clifo.put(CLI_LOCCF, loc);
|
||||
|
||||
clifo.write();
|
||||
abi = 0;
|
||||
cab = 0;
|
||||
codpag = "";
|
||||
}
|
||||
|
||||
TDocumento doc('D', anno, codnum, ndoc);
|
||||
|
||||
doc.put(DOC_TIPODOC, tpdoc);
|
||||
doc.put(DOC_DATADOC, datadoc);
|
||||
doc.put(DOC_TIPOCF, 'C');
|
||||
doc.put(DOC_CODCF, codcf);
|
||||
doc.put(DOC_CODABIA, abi);
|
||||
doc.put(DOC_CODCABA, cab);
|
||||
doc.put(DOC_CODPAG, codpag);
|
||||
doc.put(DOC_CODCMS, codcms);
|
||||
|
||||
if (imp1 != 0)
|
||||
{
|
||||
TRiga_documento& rdoc = doc.new_row("01");
|
||||
|
||||
if (descr1.len() <= 50)
|
||||
rdoc.put(RDOC_DESCR, descr1);
|
||||
else
|
||||
{
|
||||
rdoc.put(RDOC_DESCR, descr1.sub(0,49));
|
||||
rdoc.put(RDOC_DESCLUNGA, true);
|
||||
rdoc.put(RDOC_DESCEST, descr1.sub(50));
|
||||
}
|
||||
rdoc.put(RDOC_PREZZO, imp1);
|
||||
rdoc.put(RDOC_QTA, 1);
|
||||
rdoc.put(RDOC_CODART, art1);
|
||||
rdoc.put(RDOC_CODARTMAG, art1);
|
||||
rdoc.put(RDOC_CHECKED, "X");
|
||||
rdoc.put(RDOC_CODIVA, codiva);
|
||||
}
|
||||
|
||||
if (imp2 != 0)
|
||||
{
|
||||
TRiga_documento& rdoc = doc.new_row("01");
|
||||
|
||||
rdoc.put(RDOC_DESCR, descr2);
|
||||
rdoc.put(RDOC_PREZZO, imp2);
|
||||
rdoc.put(RDOC_QTA, 1);
|
||||
rdoc.put(RDOC_CODART, art1);
|
||||
rdoc.put(RDOC_CODARTMAG, art1);
|
||||
rdoc.put(RDOC_CHECKED, "X");
|
||||
rdoc.put(RDOC_CODIVA, codiva);
|
||||
}
|
||||
|
||||
if (impives != 0)
|
||||
{
|
||||
TRiga_documento& rdoc = doc.new_row("01");
|
||||
|
||||
rdoc.put(RDOC_PREZZO, impives);
|
||||
rdoc.put(RDOC_QTA, 1);
|
||||
rdoc.put(RDOC_CHECKED, "X");
|
||||
rdoc.put(RDOC_CODIVA, codiva); //??????????????????????????????????
|
||||
}
|
||||
doc.write();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TImportaFatVen_applicat::create()
|
||||
{
|
||||
_msk = new TImportaFatVen_mask();
|
||||
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
bool TImportaFatVen_applicat::destroy()
|
||||
{
|
||||
delete _msk;
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
void TImportaFatVen_applicat::main_loop()
|
||||
{
|
||||
KEY tasto;
|
||||
tasto = _msk->run();
|
||||
if (tasto == K_ENTER)
|
||||
{
|
||||
//genero il nome del file da caricare
|
||||
TFilename name = _msk->get(F_PATH);
|
||||
name.add(_msk->get(F_NAME));
|
||||
transfer(name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TImportaFatVen_applicat& app() { return (TImportaFatVen_applicat&) main_app(); }
|
||||
|
||||
|
||||
int ps0713400 (int argc, char* argv[])
|
||||
{
|
||||
TImportaFatVen_applicat main_app;
|
||||
main_app.run(argc, argv, TR("Importazione Fatture"));
|
||||
return true;
|
||||
}
|
6
ps/ps0713400a.h
Executable file
6
ps/ps0713400a.h
Executable file
@ -0,0 +1,6 @@
|
||||
//campi maschera ps0713400a
|
||||
|
||||
#define F_CODITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_PATH 103
|
||||
#define F_NAME 104
|
71
ps/ps0713400a.uml
Executable file
71
ps/ps0713400a.uml
Executable file
@ -0,0 +1,71 @@
|
||||
#include "ps0713400a.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_ELABORA 10 2
|
||||
BEGIN
|
||||
PICTURE BMP_ELABORA
|
||||
MESSAGE EXIT,K_ENTER
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
STRING DLG_PROFILE 50
|
||||
BEGIN
|
||||
PROMPT 9 0 "Profilo "
|
||||
PSELECT
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Inserimento fatture" 0 0 0 -3
|
||||
|
||||
GROUPBOX DLG_NULL 90 3
|
||||
BEGIN
|
||||
PROMPT 2 1 "@bDitta corrente"
|
||||
END
|
||||
|
||||
NUMBER F_CODITTA 5
|
||||
BEGIN
|
||||
PROMPT 3 2 "Codice "
|
||||
FLAGS "FD"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 23 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 90 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "@bSorgente"
|
||||
END
|
||||
|
||||
STRING F_PATH 256 39
|
||||
BEGIN
|
||||
PROMPT 3 5 "Cartella "
|
||||
DSELECT
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD ComInPath
|
||||
END
|
||||
|
||||
STRING F_NAME 18
|
||||
BEGIN
|
||||
PROMPT 3 6 "File "
|
||||
FIELD ComInFile
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
16
ps/ps0925.cpp
Executable file
16
ps/ps0925.cpp
Executable file
@ -0,0 +1,16 @@
|
||||
#include <xvt.h>
|
||||
|
||||
#include "ps0925.h"
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
int n = argc > 1 ? atoi(argv[1]+1) : 0;
|
||||
switch(n)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
ps0925100(argc, argv); break; //Stampa ordini di produzione DBService
|
||||
}
|
||||
exit(0);
|
||||
return 0;
|
||||
}
|
1
ps/ps0925.h
Executable file
1
ps/ps0925.h
Executable file
@ -0,0 +1 @@
|
||||
int ps0925100(int argc, char* argv[]);
|
1985
ps/ps0925100.cpp
Executable file
1985
ps/ps0925100.cpp
Executable file
File diff suppressed because it is too large
Load Diff
25
ps/ps0925100a.h
Executable file
25
ps/ps0925100a.h
Executable file
@ -0,0 +1,25 @@
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_CODPROF 103
|
||||
#define F_LINPROF 104
|
||||
#define F_DESPROF 105
|
||||
#define F_DATALIMOP 110
|
||||
#define F_DATALIMSC 111
|
||||
#define F_GIORISCH 112
|
||||
#define F_STAMPCHIU 113
|
||||
#define F_DATACHIU 114
|
||||
#define F_LUOGOSEND 115
|
||||
#define F_DATASEND 116
|
||||
#define F_CLIFO 117
|
||||
#define F_STAMPSALDO 118
|
||||
#define F_ULTIMOEC 119
|
||||
#define F_GROUPAGENT 120
|
||||
#define F_FROM_AGENT 121
|
||||
#define F_FROM_AGENT_D 122
|
||||
#define F_TO_AGENT 123
|
||||
#define F_TO_AGENT_D 124
|
||||
#define F_CODDITTATO 125
|
||||
#define F_RAGSOCTO 126
|
||||
|
||||
// basename of profile
|
||||
#define BASE_EC_PROFILE "PEC"
|
283
ps/ps0925100a.uml
Executable file
283
ps/ps0925100a.uml
Executable file
@ -0,0 +1,283 @@
|
||||
#include "scselmsk.h"
|
||||
#include "ps0925100a.h"
|
||||
|
||||
TOOLBAR "Toobar" 0 -3 0 3
|
||||
|
||||
BUTTON DLG_PRINT 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -11 ""
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_EDIT 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -11 ""
|
||||
PICTURE BMP_EDIT
|
||||
MESSAGE EXIT,69
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -11 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Stampa estratti conto" -1 -1 70 20
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 1 0 "@bDitta"
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Da codice "
|
||||
FLAGS "FR"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
DISPLAY "Codice@7" CODDITTA
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50 44
|
||||
BEGIN
|
||||
PROMPT 22 1 "Rag. Soc. "
|
||||
FLAGS "DP"
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTATO 5
|
||||
BEGIN
|
||||
PROMPT 3 2 "A codice "
|
||||
FLAGS "FR"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODDITTATO
|
||||
COPY DISPLAY F_CODDITTA
|
||||
OUTPUT F_CODDITTATO CODDITTA
|
||||
OUTPUT F_RAGSOCTO RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOCTO 44
|
||||
BEGIN
|
||||
PROMPT 22 2 "Rag. Soc. "
|
||||
FLAGS "DP"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 8
|
||||
BEGIN
|
||||
PROMPT 1 3 ""
|
||||
END
|
||||
|
||||
NUMBER F_CODPROF 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "Profilo "
|
||||
FLAGS "Z"
|
||||
USE LF_FORM
|
||||
INPUT TIPOPROF BASE_EC_PROFILE
|
||||
INPUT CODPROF[1,4] F_CODPROF
|
||||
INPUT CODPROF[5,5] F_LINPROF
|
||||
DISPLAY "Codice" CODPROF[1,4]
|
||||
DISPLAY "Lingua" CODPROF[5,5]
|
||||
DISPLAY "Descrizione@50" DESC
|
||||
OUTPUT F_CODPROF CODPROF[1,4]
|
||||
OUTPUT F_LINPROF CODPROF[5,5]
|
||||
OUTPUT F_DESPROF DESC
|
||||
FIELD ANTICLEAR
|
||||
WARNING "Codice profilo o lingua errato"
|
||||
ADD RUN sc3 -0
|
||||
END
|
||||
|
||||
STRING F_LINPROF 1
|
||||
BEGIN
|
||||
PROMPT 19 4 ""
|
||||
FLAGS "U"
|
||||
COPY ALL F_CODPROF
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice profilo o lingua errato"
|
||||
END
|
||||
|
||||
STRING F_DESPROF 50
|
||||
BEGIN
|
||||
PROMPT 26 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
DATE F_DATALIMOP
|
||||
BEGIN
|
||||
PROMPT 2 5 "Data limite operazione "
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
NUMBER F_ULTIMOEC 5
|
||||
BEGIN
|
||||
PROMPT 39 5 "Ultimo estratto conto "
|
||||
END
|
||||
|
||||
DATE F_DATALIMSC
|
||||
BEGIN
|
||||
PROMPT 2 6 "Data limite scaduto "
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_GIORISCH 3
|
||||
BEGIN
|
||||
PROMPT 2 7 "Giorni calcolo rischio "
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_STAMPCHIU
|
||||
BEGIN
|
||||
PROMPT 2 8 "Stampa partite chiuse"
|
||||
MESSAGE FALSE CLEAR,F_DATACHIU
|
||||
MESSAGE TRUE ENABLE,F_DATACHIU
|
||||
END
|
||||
|
||||
DATE F_DATACHIU
|
||||
BEGIN
|
||||
PROMPT 26 8 " dal "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_STAMPSALDO
|
||||
BEGIN
|
||||
PROMPT 44 8 "Stampa saldo partita"
|
||||
END
|
||||
|
||||
STRING F_LUOGOSEND 50 32
|
||||
BEGIN
|
||||
PROMPT 2 9 "Luogo d'invio "
|
||||
END
|
||||
|
||||
DATE F_DATASEND
|
||||
BEGIN
|
||||
PROMPT 51 9 "data "
|
||||
FLAGS "A"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
RADIOBUTTON SC_CLIFO 20
|
||||
BEGIN
|
||||
PROMPT 1 11 "@bSelezione"
|
||||
ITEM "C|Clienti" MESSAGE ENABLE,1@
|
||||
ITEM "F|Fornitori" MESSAGE CLEAR,1@
|
||||
END
|
||||
|
||||
RADIOBUTTON SC_SORTCF 25
|
||||
BEGIN
|
||||
PROMPT 25 11 "@bOrdinamento"
|
||||
ITEM "1|Per codice" MESSAGE HIDE,2@|SHOW,3@
|
||||
ITEM "2|Per ragione sociale" MESSAGE HIDE,3@|SHOW,2@
|
||||
END
|
||||
|
||||
BUTTON SC_SELECT 10 1
|
||||
BEGIN
|
||||
PROMPT 52 12 "S~elezione"
|
||||
END
|
||||
|
||||
BUTTON SC_RESET 10 1
|
||||
BEGIN
|
||||
PROMPT 65 13 "A~zzera"
|
||||
END
|
||||
|
||||
NUMBER SC_NSEL 4
|
||||
BEGIN
|
||||
PROMPT 52 13 "Selezionati "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
NUMBER SC_CFCODFR 6
|
||||
BEGIN
|
||||
PROMPT 2 15 "Da codice "
|
||||
GROUP 3
|
||||
FLAGS "B"
|
||||
END
|
||||
|
||||
NUMBER SC_CFCODTO 6
|
||||
BEGIN
|
||||
PROMPT 37 15 "a codice "
|
||||
GROUP 3
|
||||
FLAGS "B"
|
||||
END
|
||||
|
||||
STRING SC_CFDESFR 50
|
||||
BEGIN
|
||||
PROMPT 2 15 "Da ragione sociale "
|
||||
GROUP 2
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING SC_CFDESTO 50
|
||||
BEGIN
|
||||
PROMPT 2 16 "A ragione sociale "
|
||||
GROUP 2
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUPAGENT
|
||||
BEGIN
|
||||
PROMPT 2 17 "Raggruppamento per agente"
|
||||
MESSAGE FALSE HIDE,5@
|
||||
MESSAGE TRUE SHOW,5@
|
||||
END
|
||||
|
||||
STRING F_FROM_AGENT 5
|
||||
BEGIN
|
||||
PROMPT 2 18 "Dall'agente "
|
||||
FLAGS "HZU"
|
||||
USE LF_AGENTI
|
||||
INPUT CODAGE F_FROM_AGENT
|
||||
DISPLAY "Codice agente" CODAGE
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
OUTPUT F_FROM_AGENT CODAGE
|
||||
OUTPUT F_FROM_AGENT_D RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
STRING F_FROM_AGENT_D 50
|
||||
BEGIN
|
||||
PROMPT 22 18 ""
|
||||
FLAGS "H"
|
||||
USE LF_AGENTI KEY 2
|
||||
INPUT RAGSOC F_FROM_AGENT_D
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice agente" CODAGE
|
||||
COPY OUTPUT F_FROM_AGENT
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
STRING F_TO_AGENT 5
|
||||
BEGIN
|
||||
PROMPT 2 19 "All'agente "
|
||||
FLAGS "HZU"
|
||||
COPY USE F_FROM_AGENT
|
||||
INPUT CODAGE F_TO_AGENT
|
||||
COPY DISPLAY F_FROM_AGENT
|
||||
OUTPUT F_TO_AGENT CODAGE
|
||||
OUTPUT F_TO_AGENT_D RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
STRING F_TO_AGENT_D 50
|
||||
BEGIN
|
||||
PROMPT 22 19 ""
|
||||
FLAGS "H"
|
||||
COPY USE F_FROM_AGENT_D
|
||||
INPUT RAGSOC F_TO_AGENT_D
|
||||
COPY DISPLAY F_FROM_AGENT_D
|
||||
COPY OUTPUT F_TO_AGENT
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
@ -1,17 +1,14 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
#include <progind.h>
|
||||
#include <relation.h>
|
||||
#include <reprint.h>
|
||||
#include "../ve/velib.h"
|
||||
|
||||
#include <doc.h>
|
||||
#include <rdoc.h>
|
||||
|
||||
#include "pt0003.h"
|
||||
#include "pt0003100a.h"
|
||||
|
||||
#include <rdoc.h>
|
||||
|
||||
class TMaskPt00031 : public TAutomask
|
||||
{
|
||||
@ -156,11 +153,12 @@ void TMaskPt00031::update_sheet()
|
||||
TDocumento & doc = (TDocumento &)_cur->curr();
|
||||
|
||||
const long items = _cur->items();
|
||||
|
||||
TProgind pi(items, "Caricamento fatture", true, true);
|
||||
|
||||
for ((*_cur) = 0L; _cur->pos() < items; ++(*_cur))
|
||||
{
|
||||
if (pi.iscancelled())
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
if (sheet.items() > 900) // Anche troppe righe
|
||||
break;
|
||||
@ -176,10 +174,10 @@ void TMaskPt00031::update_sheet()
|
||||
row.add(totdoc.string());
|
||||
row.add(doc.get(DOC_NDOC));
|
||||
row.add(doc.get(DOC_DATADOC));
|
||||
pi.addstatus(1);
|
||||
}
|
||||
if (olditems == 0 && sheet.items == 0)
|
||||
return;
|
||||
|
||||
if (olditems == 0 && items == 0)
|
||||
return;
|
||||
sheet.force_update();
|
||||
}
|
||||
|
||||
@ -226,6 +224,7 @@ public:
|
||||
|
||||
void TIncassoFatture0003::main_loop()
|
||||
{
|
||||
open_files(LF_DOC, LF_RIGHEDOC, 0);
|
||||
TMaskPt00031 m;
|
||||
|
||||
while (m.run() == K_ENTER)
|
||||
|
@ -11,8 +11,8 @@ END
|
||||
BUTTON DLG_SAVEREC 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 "~Registra"
|
||||
PICTURE BMP_SAVEREC
|
||||
PICTURE BMP_SAVERECDN
|
||||
PICTURE BMP_SAVEREC
|
||||
PICTURE BMP_SAVERECDN
|
||||
END
|
||||
|
||||
|
||||
|
@ -681,6 +681,11 @@ void TProspettoScadenze::print_totali_rows(int nriga, bool what)
|
||||
{
|
||||
reset_print();
|
||||
TAssoc_array& xassoc = (TAssoc_array&) _t[what];
|
||||
if (_cod_pre.blank())
|
||||
{
|
||||
xassoc.destroy();
|
||||
return;
|
||||
}
|
||||
TString_array as;
|
||||
const int items = xassoc.items();
|
||||
|
||||
@ -799,6 +804,8 @@ void TProspettoScadenze::print_totali_rows(int nriga, bool what)
|
||||
void TProspettoScadenze::export_totali_rows()
|
||||
// If what is 0 prints single total... else prints also general total
|
||||
{
|
||||
if (_cod_pre.blank())
|
||||
return;
|
||||
TAssoc_array& xassoc = (TAssoc_array&) _t[0];
|
||||
TString_array as;
|
||||
const int items = xassoc.items();
|
||||
@ -810,9 +817,16 @@ void TProspettoScadenze::export_totali_rows()
|
||||
TVariant var(_cod_pre);
|
||||
TString k(as.row(i)); // Chiave di ordinamento(valuta)
|
||||
TLineTotal& v = (TLineTotal&)xassoc[k];
|
||||
|
||||
real t1;
|
||||
real t2;
|
||||
|
||||
calcola_saldo();
|
||||
for (int j = NUMERO_FASCE; j >= 0; j--)
|
||||
t1 += v._s[j];
|
||||
for (int jj = 0; jj <= NUMERO_FASCE; jj++)
|
||||
t2 += v._ns[jj];
|
||||
if (t1 == ZERO && t2 == ZERO && v._es == ZERO && v._sl == ZERO)
|
||||
continue;
|
||||
_recset->new_rec();
|
||||
_recset->set("Cliente", var);
|
||||
var = _des_pre;
|
||||
|
@ -70,7 +70,7 @@ TSelection_mask::~TSelection_mask()
|
||||
bool TSelection_mask::stop_run(KEY k)
|
||||
{
|
||||
const bool ok = TMask::stop_run(k);
|
||||
if (ok && k == K_ENTER)
|
||||
if (ok && k != K_QUIT)
|
||||
update_assoc();
|
||||
return ok;
|
||||
}
|
||||
|
BIN
tc/IMPPN.v2008.0.7.doc
Executable file
BIN
tc/IMPPN.v2008.0.7.doc
Executable file
Binary file not shown.
@ -1,8 +1,7 @@
|
||||
#include "tc0.h"
|
||||
#include "tc0701.h"
|
||||
#include "tc0700.h"
|
||||
#include "tc0700a.h"
|
||||
|
||||
#include <automask.h>
|
||||
#include <progind.h>
|
||||
#include <reprint.h>
|
||||
|
||||
@ -21,27 +20,6 @@
|
||||
#include "../cg/cglib01.h"
|
||||
#include "../cg/cg2103.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TTS_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TTS_mask : public TAutomask
|
||||
{
|
||||
clock_t _next_update;
|
||||
bool _updating;
|
||||
|
||||
private:
|
||||
bool apply_filter(const TRecordset& righe) const;
|
||||
void serialize(bool bSave);
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TTS_mask();
|
||||
~TTS_mask();
|
||||
};
|
||||
|
||||
bool TTS_mask::apply_filter(const TRecordset& righe) const
|
||||
{
|
||||
const TDate dal = get(F_DATA_DA);
|
||||
@ -87,8 +65,8 @@ void TTS_mask::serialize(bool bSave)
|
||||
}
|
||||
}
|
||||
|
||||
TTS_mask::TTS_mask()
|
||||
: TAutomask("tc0700a"), _updating(false), _next_update(0)
|
||||
TTS_mask::TTS_mask(const char * maskname)
|
||||
: TAutomask(maskname), _updating(false), _next_update(0)
|
||||
{
|
||||
serialize(false);
|
||||
}
|
||||
@ -98,41 +76,6 @@ TTS_mask::~TTS_mask()
|
||||
serialize(true);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TTS_campo_sender
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TTS_campo_sender : public TTS_sender
|
||||
{
|
||||
TTS_mask * _mask;
|
||||
TAssoc_array _caus_regolarizzazione;
|
||||
|
||||
protected:
|
||||
virtual TRecordset & movrecset();
|
||||
virtual TRecordset & rmovrecset(const TRecordset & mov);
|
||||
virtual TRecordset & rivarecset(const TRecordset & mov);
|
||||
virtual const TRecordset & clirecset(const char tipocf, const long codcf);
|
||||
virtual TMask & get_mask();
|
||||
|
||||
protected:
|
||||
virtual bool find_regolarizzazione(TRecordset& mov);
|
||||
virtual const char * decode_causale(const TRecordset& mov);
|
||||
virtual bool test_swap(const TRecordset& mov);
|
||||
virtual bool swap_ritsoc(const TRecordset& mov);
|
||||
virtual bool mov_regolarizzazione(const TRecordset& mov);
|
||||
virtual bool mov_intra(const TRecordset& mov);
|
||||
virtual bool mov_reverse_charge(const TRecordset& mov);
|
||||
virtual long iva11_reverse(const TRecordset & mov);
|
||||
|
||||
public:
|
||||
virtual void postprocess_movs(TRecordset & mov);
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
|
||||
TTS_campo_sender() : TTS_sender(), _mask(NULL) {}
|
||||
~TTS_campo_sender() {}
|
||||
};
|
||||
|
||||
bool TTS_campo_sender::destroy()
|
||||
{
|
||||
delete _mask;
|
||||
@ -263,12 +206,13 @@ TMask & TTS_campo_sender::get_mask()
|
||||
{
|
||||
if (_mask == NULL)
|
||||
{
|
||||
_mask = new TTS_mask;
|
||||
_mask = new TTS_mask(mask_name());
|
||||
TDate to(TODAY);
|
||||
TConfig configtc(CONFIG_DITTA, "tc");
|
||||
const TDate from(configtc.get("TSULTINV"));
|
||||
|
||||
to.addmonth(-1);
|
||||
if (from.ok())
|
||||
to.addmonth(-1);
|
||||
to.set_end_month();
|
||||
if (to <= from)
|
||||
{
|
||||
|
61
tc/tc0700.h
Executable file
61
tc/tc0700.h
Executable file
@ -0,0 +1,61 @@
|
||||
#include <automask.h>
|
||||
#include "tc0701.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TTS_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TTS_mask : public TAutomask
|
||||
{
|
||||
clock_t _next_update;
|
||||
bool _updating;
|
||||
|
||||
private:
|
||||
bool apply_filter(const TRecordset& righe) const;
|
||||
void serialize(bool bSave);
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TTS_mask(const char * maskname);
|
||||
~TTS_mask();
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TTS_campo_sender
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TTS_campo_sender : public TTS_sender
|
||||
{
|
||||
TTS_mask * _mask;
|
||||
TAssoc_array _caus_regolarizzazione;
|
||||
|
||||
protected:
|
||||
virtual TRecordset & movrecset();
|
||||
virtual TRecordset & rmovrecset(const TRecordset & mov);
|
||||
virtual TRecordset & rivarecset(const TRecordset & mov);
|
||||
virtual const TRecordset & clirecset(const char tipocf, const long codcf);
|
||||
virtual TMask & get_mask();
|
||||
virtual const char * mask_name() const {return "tc0700a"; }
|
||||
|
||||
protected:
|
||||
virtual bool find_regolarizzazione(TRecordset& mov);
|
||||
virtual const char * decode_causale(const TRecordset& mov);
|
||||
virtual bool test_swap(const TRecordset& mov);
|
||||
virtual bool swap_ritsoc(const TRecordset& mov);
|
||||
virtual bool mov_regolarizzazione(const TRecordset& mov);
|
||||
virtual bool mov_intra(const TRecordset& mov);
|
||||
virtual bool mov_reverse_charge(const TRecordset& mov);
|
||||
virtual long iva11_reverse(const TRecordset & mov);
|
||||
|
||||
public:
|
||||
virtual void postprocess_movs(TRecordset & mov);
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
|
||||
TTS_campo_sender() : TTS_sender(), _mask(NULL) {}
|
||||
~TTS_campo_sender() {}
|
||||
};
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include <rmov.h>
|
||||
#include <rmoviva.h>
|
||||
#include <multirel.h>
|
||||
#include <pconti.h>
|
||||
|
||||
#include "../cg/cglib01.h"
|
||||
|
||||
@ -100,6 +101,8 @@ class TIVA_item : public TObject
|
||||
long _codiva11;
|
||||
real _imponibile;
|
||||
real _imposta;
|
||||
TString4 _codcomp;
|
||||
|
||||
public:
|
||||
int & row() { return _row;}
|
||||
long & conto() { return _conto;}
|
||||
@ -107,7 +110,8 @@ public:
|
||||
long & codiva11() { return _codiva11;}
|
||||
real & imponibile() { return _imponibile;}
|
||||
real & imposta() { return _imposta;}
|
||||
TIVA_item(int row, long conto, long codiva, long codiva11) : _row(row), _conto(conto), _codiva(codiva), _codiva11(codiva11) {}
|
||||
const TString & codcomp() { return _codcomp;}
|
||||
TIVA_item(int row, long conto, long codiva, long codiva11, const char * codcomp) : _row(row), _conto(conto), _codiva(codiva), _codiva11(codiva11), _codcomp(codcomp) {}
|
||||
virtual ~TIVA_item() {}
|
||||
};
|
||||
|
||||
@ -877,7 +881,7 @@ void TTS_sender::add_conti_ricavo_costo(const TRecordset& mov)
|
||||
|
||||
if (item == NULL)
|
||||
{
|
||||
item = new TIVA_item(j++, contoricl, 0L, 0L);
|
||||
item = new TIVA_item(j++, contoricl, 0L, 0L, "");
|
||||
_iva.add(key, item);
|
||||
}
|
||||
item->imponibile() += imponibile;
|
||||
@ -947,15 +951,19 @@ void TTS_sender::add_datiiva(const TRecordset& mov)
|
||||
{
|
||||
real imponibile = rmoviva.get(RMI_IMPONIBILE).as_real() * fattore;
|
||||
real imposta = rmoviva.get(RMI_IMPOSTA).as_real() * fattore;
|
||||
TCodiceIVA c(rmoviva.get(RMI_CODIVA).as_string());
|
||||
bool agricolo = c.get_int("S4") == 1;
|
||||
TString16 codcomp;
|
||||
|
||||
if (corrispettivo)
|
||||
{
|
||||
if (imposta == ZERO)
|
||||
{
|
||||
TCodiceIVA c(rmoviva.get(RMI_CODIVA).as_string());
|
||||
|
||||
imposta = c.scorpora(imponibile);
|
||||
}
|
||||
if (agricolo)
|
||||
{
|
||||
TString key;
|
||||
key.format("%03ld|%03ld|%06ld", rmoviva.get(RMI_GRUPPO).as_int(), rmoviva.get(RMI_CONTO).as_int(), rmoviva.get(RMI_SOTTOCONTO).as_int());
|
||||
const TRectype & pcon = cache().get(LF_PCON, key);
|
||||
codcomp = pcon.get(PCN_IVACOMP);
|
||||
}
|
||||
long codiva = cod2ricl("TSIVA", rmoviva.get(RMI_CODIVA));
|
||||
long codiva11 = 0L;
|
||||
@ -978,7 +986,7 @@ void TTS_sender::add_datiiva(const TRecordset& mov)
|
||||
|
||||
if (item == NULL)
|
||||
{
|
||||
item = new TIVA_item(j++, 0L, codiva, codiva11);
|
||||
item = new TIVA_item(j++, 0L, codiva, codiva11, codcomp);
|
||||
_iva.add(key, item);
|
||||
}
|
||||
item->imponibile() += imponibile;
|
||||
@ -1003,7 +1011,7 @@ void TTS_sender::add_datiiva(const TRecordset& mov)
|
||||
field.format("TRF-ALIQ_%d", row);
|
||||
set(field, item.codiva());
|
||||
field.format("TRF-ALIQ_AGRICOLA_%d", row);
|
||||
//set(field,field // dato non presente CHIEDERE
|
||||
set(field, item.codcomp());
|
||||
field.format("TRF-IVA11_%d", row);
|
||||
set(field, item.codiva11());
|
||||
field.format("TRF-IMPOSTA_%d", row);
|
||||
@ -1052,7 +1060,7 @@ void TTS_sender::add_header(const TRecordset& mov, const bool fullhesd)
|
||||
const bool send_clifo = !_riclassifica.is_key("TSNOHCLI");
|
||||
|
||||
if (send_clifo)
|
||||
set("TRF-COD-CLIFOR", mov.get(MOV_CODCF));
|
||||
set("TRF-COD-CLIFOR", mov.get(MOV_CODCF));
|
||||
|
||||
if (moviva)
|
||||
{
|
||||
@ -1092,7 +1100,8 @@ void TTS_sender::get_citta_provincia(const TRecordset& cli, TString & dencom, TS
|
||||
const TString& localita = cli.get(CLI_LOCCF).as_string();
|
||||
if (localita.full() && xvt_str_fuzzy_compare(localita, dencom) < 0.75)
|
||||
{
|
||||
dencom.insert(", ");
|
||||
if (dencom.full())
|
||||
dencom.insert(", ");
|
||||
dencom.insert(localita);
|
||||
}
|
||||
}
|
||||
@ -1126,8 +1135,11 @@ void TTS_sender::add_clifor(char tipocf, long codcf)
|
||||
divide = ragsoc.len() + 1;
|
||||
ragsoc << " " << r2;
|
||||
}
|
||||
const bool send_clifo = !_riclassifica.is_key("TSNOHCLI");
|
||||
|
||||
set("TRF-RASO", ragsoc);
|
||||
if (send_clifo)
|
||||
set("TRF-COD-CLIFOR", codcf);
|
||||
set("TRF-RASO", ragsoc);
|
||||
set("TRF-IND", indirizzo);
|
||||
set("TRF-CAP", cli.get(CLI_CAPCF));
|
||||
|
||||
@ -1267,7 +1279,23 @@ const long TTS_sender::bill2ricl(char & t, int gr, int co, long so, const bool h
|
||||
}
|
||||
}
|
||||
else
|
||||
codricl = gr*100000+co*1000+so;
|
||||
{
|
||||
if (t > ' ')
|
||||
{
|
||||
if (header_cli)
|
||||
{
|
||||
if (t == 'C')
|
||||
codricl = 9999999L;
|
||||
else
|
||||
codricl = 9999998L;
|
||||
}
|
||||
else
|
||||
codricl = gr*100000+so;
|
||||
|
||||
}
|
||||
else
|
||||
codricl = gr*100000+co*1000+so;
|
||||
}
|
||||
}
|
||||
return codricl;
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ protected:
|
||||
bool new_rec(const char* t);
|
||||
void remove_last();
|
||||
void set(const char* field, const TVariant& var);
|
||||
void set(const char* field, const TString & str) { set(field, TVariant(str)); }
|
||||
void set(const char* field, const int n) { set(field, TVariant((long)n)); }
|
||||
void set(const char* field, const char* s) { set(field, TVariant(s)); }
|
||||
void set(const char* field, const TDate& d) { set(field, TVariant(d)); }
|
||||
@ -80,7 +81,7 @@ protected:
|
||||
public:
|
||||
void log(int sev, const char* msg);
|
||||
virtual bool multi_activity() const { return true; }
|
||||
const TString & dittamulti(const TRecordset& mov) const ;
|
||||
virtual const TString & dittamulti(const TRecordset& mov) const ;
|
||||
TAssoc_array & riclassifica() {return _riclassifica;}
|
||||
|
||||
virtual void postprocess_movs(TRecordset & mov) {}
|
||||
|
@ -21,6 +21,7 @@
|
||||
#define F_SHEET_ATTIV 130
|
||||
#define F_PROFESS 131
|
||||
#define F_VENT 132
|
||||
#define F_STOCLI 133
|
||||
|
||||
#define SI_GRUPPO 101
|
||||
#define SI_CONTO 102
|
||||
|
11
tp/tp0100.h
11
tp/tp0100.h
@ -21,6 +21,14 @@
|
||||
class TProgind;
|
||||
#endif
|
||||
|
||||
#ifndef __MODAUT_H
|
||||
#include <modaut.h>
|
||||
#endif
|
||||
|
||||
#ifndef __CLIFOR_H
|
||||
#include "../ve/clifor.h"
|
||||
#endif
|
||||
|
||||
class TPack_log;
|
||||
class TCache_tp;
|
||||
|
||||
@ -174,6 +182,7 @@ class TPack_ddt : public TPack_transfer
|
||||
bool _cms_ref, _order_paper_info, _extended_discount;
|
||||
TDate _data_limite;
|
||||
TAssoc_array _iva; // Codici IVA PACK
|
||||
TCli_for _cli;
|
||||
|
||||
protected:
|
||||
bool signal_row_error(const char* msg);
|
||||
@ -183,7 +192,7 @@ protected:
|
||||
bool get_clifo(char& tipocf, long& codcf);
|
||||
const TString& get_indsped() const;
|
||||
const TRectype& get_articolo(TString& um, real& qta, TString& custcode);
|
||||
const TString& get_codice_iva();
|
||||
const TString& get_codice_iva(const TDate & datadoc);
|
||||
const TString& get_customer_reference() const;
|
||||
bool get_paper_from_order(TString& desc) const;
|
||||
|
||||
|
@ -317,7 +317,17 @@ bool TPack_ddt::get_clifo(char& tipocf, long& codcf)
|
||||
}
|
||||
|
||||
if (codcf > 0 && (tipocf == 'C' || tipocf == 'F'))
|
||||
{
|
||||
const int err = _cli.read(tipocf, codcf);
|
||||
|
||||
if (err != NOERR)
|
||||
{
|
||||
TString msg; msg.format("Errore %d durante la lettura del %s %ld ", err, tipocf == 'C' ? "Cliente" : "Fornitore", codcf);
|
||||
|
||||
return log_error(msg);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return log_error(TR("Impossibile determinare il codice del cliente/fornitore"));
|
||||
}
|
||||
@ -333,13 +343,19 @@ void TPack_ddt::activate_customer_code(bool cc)
|
||||
_cust_code = cc && !cache().get("%TRI", "14").empty();
|
||||
}
|
||||
|
||||
const TString& TPack_ddt::get_codice_iva()
|
||||
const TString& TPack_ddt::get_codice_iva(const TDate& datadoc)
|
||||
{
|
||||
TString4 codiva;
|
||||
if (_cli.use_lettere() && _cli.read_lettera(datadoc))
|
||||
{
|
||||
const TString& codiva = _cli.vendite().get(CFV_ASSFIS);
|
||||
if (codiva.full())
|
||||
return codiva; // Codice IVA di Campo gia' decodificato!
|
||||
}
|
||||
|
||||
TString8 codiva; // Codice IVA di PACK da decodificare!
|
||||
|
||||
TString qry(256);
|
||||
qry << query_header();
|
||||
qry << "SELECT * FROM IVA WHERE IVACode=#CODIVA";
|
||||
qry << query_header() << "SELECT * FROM IVA WHERE IVACode=#CODIVA";
|
||||
TODBC_recordset iva(qry);
|
||||
|
||||
const TString& codivani = get_str("CodIvaNI");
|
||||
@ -617,7 +633,7 @@ bool TPack_ddt::trasferisci()
|
||||
rdoc.put(RDOC_CHECKED, "X");
|
||||
rdoc.put(RDOC_UMQTA, um);
|
||||
rdoc.put(RDOC_QTA, qta);
|
||||
rdoc.put(RDOC_CODIVA, get_codice_iva());
|
||||
rdoc.put(RDOC_CODIVA, get_codice_iva(doc->get_date(DOC_DATADOC)));
|
||||
rdoc.put(RDOC_PREZZO, get_real_str("Price"));
|
||||
|
||||
TString sconto = get_real_str("DiscountRowDesc");
|
||||
|
@ -71,21 +71,27 @@ bool TCli_for::read_lettera(const TDate & data, bool extended)
|
||||
{
|
||||
_letint.zero();
|
||||
TRelation * r = new TRelation(LF_LETINT);
|
||||
TRectype from(r->curr());
|
||||
TRectype to(r->curr());
|
||||
|
||||
from.put(LETINT_ANNO, data.year());
|
||||
from.put(LETINT_CODCLI, codice());
|
||||
to.put(LETINT_ANNO, data.year());
|
||||
to.put(LETINT_CODCLI, codice());
|
||||
|
||||
TCursor c(r, "", 2 ,&from, &from);
|
||||
TRectype from(to);
|
||||
|
||||
from.put(LETINT_ANNO, data.year() - 1);
|
||||
|
||||
TCursor c(r, "", 2 ,&from, &to);
|
||||
const int items = c.items();
|
||||
|
||||
if (items > 0)
|
||||
{
|
||||
TDate dal;
|
||||
TDate al(31, 12, data.year());
|
||||
|
||||
for (c = items - 1; c.pos() >= 0L; --c)
|
||||
|
||||
for (long pos = items - 1; pos >= 0L; pos--)
|
||||
{
|
||||
c = pos;
|
||||
|
||||
const int tipo = c.curr().get_int(LETINT_TIPOOP);
|
||||
|
||||
if (tipo == 3)
|
||||
|
@ -161,6 +161,7 @@ bool TConf_vendite::preprocess_config (TMask& mask, TConfig& config)
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool TConf_vendite::postprocess_config (TMask& mask, TConfig& config)
|
||||
{
|
||||
enable_menu_item(M_FILE_NEW);
|
||||
|
@ -172,9 +172,39 @@ BEGIN
|
||||
OUTPUT F_IVASTORNO CODTAB
|
||||
END
|
||||
|
||||
LISTBOX F_FLDVALMAT 17
|
||||
BEGIN
|
||||
PROMPT 2 16 "Campo per i valore dei materiali "
|
||||
FIELD FldValMat
|
||||
ITEM "|Nessuno"
|
||||
ITEM "ULTCOS1|Ultimo Costo"
|
||||
ITEM "ULTCOS2|Penultimo Costo"
|
||||
ITEM "COSTSTD|Costo Standard"
|
||||
ITEM "USER1|Campo Utente 1"
|
||||
ITEM "USER2|Campo Utente 2"
|
||||
ITEM "USER3|Campo Utente 3"
|
||||
ITEM "USER4|Campo Utente 4"
|
||||
ITEM "USER5|Campo Utente 5"
|
||||
ITEM "USER6|Campo Utente 6"
|
||||
ITEM "USER7|Campo Utente 7"
|
||||
ITEM "USER8|Campo Utente 8"
|
||||
ITEM "USER9|Campo Utente 9"
|
||||
ITEM "USER10|Campo Utente 10"
|
||||
ITEM "USER11|Campo Utente 11"
|
||||
ITEM "USER12|Campo Utente 12"
|
||||
ITEM "USER13|Campo Utente 13"
|
||||
ITEM "USER14|Campo Utente 14"
|
||||
ITEM "USER15|Campo Utente 15"
|
||||
ITEM "USER16|Campo Utente 16"
|
||||
ITEM "USER17|Campo Utente 17"
|
||||
ITEM "USER18|Campo Utente 18"
|
||||
ITEM "USER19|Campo Utente 19"
|
||||
ITEM "USER20|Campo Utente 20"
|
||||
END
|
||||
|
||||
BOOLEAN F_CHECKPREVCONT
|
||||
BEGIN
|
||||
PROMPT 2 16 "Controlla che i documenti precedenti siano contabilizzati"
|
||||
PROMPT 2 17 "Controlla che i documenti precedenti siano contabilizzati"
|
||||
FIELD CHECKPREVCONT
|
||||
END
|
||||
|
||||
|
@ -716,23 +716,26 @@ size_t TReport_doc::get_usr_words(TString_array& words) const
|
||||
|
||||
bool TReport_doc::execute_usr_word(unsigned int opcode, TVariant_stack& stack)
|
||||
{
|
||||
if (opcode < _first_msg)
|
||||
return TReport::execute_usr_word(opcode, stack);
|
||||
opcode -= _first_msg;
|
||||
switch (opcode)
|
||||
bool ok = true;
|
||||
|
||||
if (opcode >= _first_msg)
|
||||
{
|
||||
case 0 : msg_cliente(stack); break;
|
||||
case 1 : msg_parent_doc(stack); break;
|
||||
case 2 : msg_parent_row(stack); break;
|
||||
case 3 : msg_riepilogo_iva(stack); break;
|
||||
case 4 : msg_scadenze(stack); break;
|
||||
case 5 : msg_tot_imponibili(stack); break;
|
||||
default: break;
|
||||
switch (opcode - _first_msg)
|
||||
{
|
||||
case 0: msg_cliente(stack); break;
|
||||
case 1: msg_parent_doc(stack); break;
|
||||
case 2: msg_parent_row(stack); break;
|
||||
case 3: msg_riepilogo_iva(stack); break;
|
||||
case 4: msg_scadenze(stack); break;
|
||||
case 5: msg_tot_imponibili(stack); break;
|
||||
default: ok = false; break;
|
||||
}
|
||||
stack.reset(); // Svuota eventuali parametri variabili inutilizzati
|
||||
}
|
||||
else
|
||||
ok = TReport::execute_usr_word(opcode, stack);
|
||||
|
||||
while (!stack.pop().is_null()); // Svuota eventuali parametri variabili inutilizzati
|
||||
|
||||
return true;
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TReport_doc::include_libraries(bool reload)
|
||||
|
@ -58,6 +58,7 @@ Item_12 = "Attrezzature", "ve0 -4 ATR", "F"
|
||||
Item_13 = "Banche di presentazione", "ef0 -6 BNP", "F"
|
||||
Item_14 = "Zone", "ba3 -0 ZON", "F"
|
||||
Item_15 = "Fatture da emettere/ricevere", "ve0 -4 MRE", "F"
|
||||
Item_16 = "Conti ricavo dei materiali", "ba3 -0 CMT", "F"
|
||||
|
||||
[ACQVEN_005]
|
||||
Caption = "Tabelle contabili"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user