Patch level : 10.0 163

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 3.2 patch 1262


git-svn-id: svn://10.65.10.50/trunk@17631 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2008-11-14 00:40:30 +00:00
parent bcda798e5d
commit baa1e34d5c
81 changed files with 4118 additions and 635 deletions

View File

@ -1258,6 +1258,19 @@ bool TStampa_bilanci::bil_verifica()
//controllo sui gr/co/sc selezionati
if (_bill_from.gruppo() > 0) //se ho un gruppo iniziale valido...
{
if (_bill_from.sottoconto() > 0L)
{
_pcn->zero();
_pcn->put(PCN_GRUPPO,_bill_from.gruppo()); //lo metto nel file del pianodeiconticorrente..
_pcn->put(PCN_CONTO,_bill_from.conto()); //un valore alla volta
if (_pcn->read(_isequal) == NOERR)
{
indbil_conto = _pcn->get_int(PCN_INDBIL);
tipo_conto = _pcn->get_char(PCN_TMCF);
}
}
_pcn->zero();
_pcn->put(PCN_GRUPPO,_bill_from.gruppo()); //lo metto nel file del pianodeiconticorrente..
_pcn->put(PCN_CONTO,_bill_from.conto()); //un valore alla volta
_pcn->put(PCN_SOTTOCONTO,_bill_from.sottoconto());

View File

@ -160,7 +160,6 @@ BEGIN
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT 106
CHECKTYPE NORMAL
WARNING "Sottoconto inesistente o mancante sulla riga contabile"
ADD RUN cg0 -0
END
@ -179,7 +178,6 @@ BEGIN
COPY OUTPUT 206
MESSAGE COPY,107
ADD RUN cg0 -1 C
CHECKTYPE SEARCH
WARNING "Cliente inesistente sulla riga contabile"
END
@ -197,7 +195,6 @@ BEGIN
COPY OUTPUT 306
MESSAGE COPY,107
ADD RUN cg0 -1 F
CHECKTYPE SEARCH
WARNING "Fornitore inesistente sulla riga contabile"
END

View File

@ -182,7 +182,6 @@ BEGIN
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "C/R" TIPOSPRIC
COPY OUTPUT IVA_SOTTOCONTO
CHECKTYPE NORMAL
ADD RUN cg0 -0
END
@ -200,7 +199,6 @@ BEGIN
COPY OUTPUT 209
MESSAGE COPY,110
ADD RUN cg0 -1 C
CHECKTYPE SEARCH
END
STRING 310 50
@ -217,7 +215,6 @@ BEGIN
COPY OUTPUT 309
MESSAGE COPY,110
ADD RUN cg0 -1 F
CHECKTYPE SEARCH
END
LIST IVA_TIPOCOSTORIC 1 51

View File

@ -126,16 +126,8 @@ public:
void TCoop_soci_application::show_socio(TMask& m, const bool show)
{
if (show)
{
m.show(-1);
m.hide(-2);
}
else
{
m.show(-2);
m.hide(-1);
}
m.show(-1, show);
m.show(-2, !show);
}
void TCoop_soci_application::init_query_mode(TMask& m)
{
@ -149,12 +141,13 @@ void TCoop_soci_application::init_query_insert_mode(TMask& m)
void TCoop_soci_application::init_insert_mode(TMask& m)
{
show_socio(m, false);
show_socio(m);
}
void TCoop_soci_application::init_modify_mode(TMask& m)
{
show_socio(m);
m.check_fields();
}
bool TCoop_soci_application::user_create()

View File

@ -24,22 +24,12 @@ BEGIN
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" 20->RAGSOC
DISPLAY "Codice fiscale@16" 20->COFI
OUTPUT F_CODSOCIO CODCF
OUTPUT F_DESSOCIO 20->RAGSOC
OUTPUT F_CODCF CODCF
OUTPUT F_CODSOCIO 20->CODCF
OUTPUT F_RAGSOC 20->RAGSOC
OUTPUT F_COFISOCIO 20->COFI
CHECKTYPE REQUIRED
GROUP 1
END
STRING F_DESSOCIO 50
BEGIN
PROMPT 25 2 ""
FLAGS "D"
GROUP 1
END
NUMBER F_CODCF 6
BEGIN
PROMPT 2 2 "Fornitore "
@ -51,8 +41,12 @@ BEGIN
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice fiscale@16" COFI
COPY OUTPUT F_CODSOCIO
OUTPUT F_CODCF CODCF
OUTPUT F_RAGSOC 20->RAGSOC
OUTPUT F_COFISOCIO 20->COFI
OUTPUT F_CODSOCIO CODCF
CHECKTYPE REQUIRED
FLAGS "G"
ADD RUN cg0 -1 F
GROUP 2
END
@ -69,7 +63,6 @@ BEGIN
COPY OUTPUT F_CODCF
CHECKTYPE REQUIRED
ADD RUN cg0 -1 F
GROUP 2
END
STRING F_COFISOCIO 16

View File

@ -95,8 +95,8 @@ int TConferimenti_application::rewrite( const TMask& m )
doc.put("SPESEUPD", false);
doc.put("RAGGR", true);
update_spese_doc(codmercato, doc);
err = TMotore_application::rewrite(m);
}
err = TMotore_application::rewrite(m);
return err;
}

View File

@ -10,7 +10,7 @@ END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 2 "Codice "
FLAGS "FD"
FLAGS "F"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC

View File

@ -1,183 +1,236 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="co1200a" orientation="2" lpi="6" command="ve1 -3">
<description>STAMPA CONFERIMENTI</description>
<font face="Courier New" size="8" />
<section type="Head" />
<section type="Head" level="1">
<prescript description="H1 PRESCRIPT">MESSAGE RESET,F1.101|RESET,F1.102|RESET,F1.103|RESET,F1.104|RESET,F1.105|RESET,F1.106|RESET,F1.107|RESET,F1.108</prescript>
<field border="2" y="0.43" type="Linea" width="196" height="0" pattern="1" />
<field y="1" type="Testo" width="5" pattern="1" text="Ditta" />
<field y="2" type="Testo" width="10" pattern="1" text="Dalla data" />
<field x="11" y="2" type="Data" align="right" width="5" pattern="1">
<section type="Head">
<field x="133.08" y="0.18" type="Testo" valign="bottom" width="6" pattern="1" text="Data" />
<field x="139.08" y="0.18" type="Data" valign="bottom" align="right" width="12" pattern="1">
<source>#SYSTEM.DATE</source>
</field>
<field x="157.08" y="0.18" type="Testo" valign="bottom" width="5" pattern="1" text="Pag." />
<field x="165.08" y="0.18" type="Numero" valign="bottom" align="right" width="4" pattern="1">
<source>#REPORT.PAGE</source>
</field>
<field x="71.18" y="0.62" type="Testo" valign="center" align="center" width="42" height="2" pattern="1" text="STAMPA CONFERIMENTI">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="0.18" y="2.62" type="Linea" width="170" height="0" pattern="1" />
<field x="3.18" y="3.62" type="Testo" width="6" pattern="1" text="Ditta" />
<field x="10.18" y="3.62" type="Stringa" width="60" pattern="1">
<source>#SYSTEM.RAGSOC</source>
</field>
<field x="3.18" y="4.62" type="Testo" valign="bottom" width="12" pattern="1" text="Dalla data" />
<field x="15.18" y="4.62" type="Data" valign="bottom" align="right" width="12" pattern="1">
<source>#DADATA</source>
</field>
<field x="22" y="2" type="Testo" width="10" pattern="1" text="alla data" />
<field x="32" y="2" type="Data" width="10" pattern="1">
<field x="28.18" y="4.62" type="Testo" valign="bottom" align="center" width="10" pattern="1" text="alla data" />
<field x="40.18" y="4.62" type="Data" valign="bottom" align="right" width="12" pattern="1">
<source>#ADATA</source>
</field>
<field x="48" y="2" type="Testo" width="11" pattern="1" text="Dal mercato" />
<field x="60" y="2" type="Numero" align="right" width="4" pattern="1">
<source>#DAMERCATO</source>
</field>
<field x="67" y="2" type="Testo" width="10" pattern="1" text="al mercato" />
<field x="78" y="2" type="Numero" align="right" width="4" pattern="1">
<source>#AMERCATO</source>
</field>
<field x="87" y="2" type="Testo" width="18" pattern="1" text="Dal tipo movimento" />
<field x="107" y="2" type="Stringa" align="right" width="4" pattern="1">
<source>#DACODART</source>
</field>
<field x="113" y="2" type="Testo" width="18" pattern="1" text="Dal tipo movimento" />
<field x="133" y="2" type="Stringa" width="4" pattern="1">
<source>#DACODART</source>
</field>
<field border="2" x="0.12" y="3.68" type="Linea" width="196" height="0" pattern="1" />
<field y="4" type="Testo" width="4" pattern="1" text="Data">
<field border="2" x="0.18" y="6.62" type="Linea" width="170" height="0" pattern="1" />
<field x="2" y="7" type="Testo" width="12" pattern="1" text="Data">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="10" y="4" type="Testo" width="12" pattern="1" text="Codice socio">
<field x="18" y="7" type="Testo" width="27" pattern="1" text="Codice socio">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="44.5" y="4" type="Testo" width="8" pattern="1" text="N.f.asta ">
<field x="50" y="7" type="Testo" align="right" width="12" pattern="1" text="N.f.asta ">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="56" y="4" type="Testo" width="14" pattern="1" text="Tipo movimento">
<field x="63" y="7" type="Testo" width="55" pattern="1" text="Tipo movimento">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="92" y="4" type="Testo" width="14" pattern="1" text="Codice mercato">
<field x="118" y="7" type="Testo" width="37" pattern="1" text="Codice mercato">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="131" y="4" type="Testo" width="6" pattern="1" text="N.reg.">
<field x="160" y="7" type="Testo" align="right" width="8" pattern="1" text="N.reg.">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="15" y="5" type="Testo" width="8" pattern="1" text="Quantit&#E0;" />
<field x="26" y="5" type="Testo" width="6" pattern="1" text="Prezzo" />
<field x="52" y="5" type="Testo" width="11" pattern="1" text="Spese varie" />
<field x="67" y="5" type="Testo" width="13" pattern="1" text="Totale ricavo" />
<field x="82" y="5" type="Testo" width="5" pattern="1" text="A.iva" />
<field x="91" y="5" type="Testo" width="7" pattern="1" text="Imposta" />
<field x="109" y="5" type="Testo" width="6" pattern="1" text="Totale" />
<field x="124" y="5" type="Testo" width="13" pattern="1" text="Rit.acc.spese" />
<field x="38.62" y="5.12" type="Testo" width="7" pattern="1" text="Importo" />
<field border="2" x="-5.13" y="6.5" type="Linea" width="196" height="0" pattern="1" />
<field x="12" y="8" type="Testo" valign="bottom" align="right" width="10" pattern="1" text="Quantit&#E0;" />
<field x="25" y="8" type="Testo" valign="bottom" align="right" width="8" pattern="1" text="Prezzo" />
<field x="37" y="8" type="Testo" valign="bottom" align="right" width="10" pattern="1" text="Importo" />
<field x="55" y="8" type="Testo" valign="bottom" align="right" width="15" pattern="1" text="Spese varie" />
<field x="75" y="8" type="Testo" valign="bottom" align="right" width="15" pattern="1" text="Totale ricavo" />
<field x="100" y="8" type="Testo" valign="bottom" align="right" width="8" pattern="1" text="A.iva" />
<field x="116" y="8" type="Testo" valign="bottom" align="right" width="8" pattern="1" text="Imposta" />
<field x="130" y="8" type="Testo" valign="bottom" align="right" width="18" pattern="1" text="Detr. su quantita" />
<field x="153" y="8" type="Testo" valign="bottom" align="right" width="15" pattern="1" text="Rit.acc.spese" />
<field border="2" y="10" type="Linea" width="170" height="0" pattern="1" />
</section>
<section type="Head" level="1">
<prescript description="H1 PRESCRIPT">MESSAGE RESET,F1.101|RESET,F1.102|RESET,F1.103|RESET,F1.104|RESET,F1.105|RESET,F1.106|RESET,F1.107|RESET,F1.108</prescript>
</section>
<section type="Body" />
<section type="Body" level="1" />
<section type="Head" level="11" />
<section type="Body" level="11">
<sql>USE RDOC
JOIN 47 INTO CODART==CODARTMAG
SELECT BETWEEN(CODART,#PARENT.#DACODART,#PARENT.#ACODART)&#26;&#26;(TIPORIGA=="CO")
JOIN ANAMAG INTO CODART==CODARTMAG
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="1" y="1" type="Data" width="10" pattern="1">
<field x="2" y="1" type="Data" width="12" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>#PARENT.DATADOC</source>
</field>
<field x="15" y="1" type="Stringa" width="10" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>#PARENT.CODCF</source>
</field>
<field x="26" y="1" type="Stringa" width="35" pattern="1">
<font face="Courier New" bold="1" size="10" />
<prescript description="B11.0 PRESCRIPT">MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#PARENT.CODCF,RAGSOC</prescript>
</field>
<field x="71" y="1" type="Stringa" width="10" pattern="1">
<field x="50" y="1" type="Numero" align="right" width="12" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>#PARENT.NFASTA</source>
</field>
<field x="83" y="1" type="Stringa" width="10" pattern="1">
<field x="63" y="1" type="Stringa" width="3" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>RDOC.CODARTMAG</source>
</field>
<field x="94" y="1" type="Stringa" width="35" pattern="1">
<field x="67" y="1" type="Stringa" width="51" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>ANAMAG.DESCR</source>
<source>DESCR</source>
</field>
<field x="140" y="1" type="Stringa" width="10" pattern="1">
<field x="118" y="1" type="Numero" align="right" width="4" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>#PARENT.MERCATO</source>
</field>
<field x="151" y="1" type="Stringa" width="10" pattern="1">
<field x="123" y="1" type="Stringa" width="37" pattern="1">
<font face="Courier New" bold="1" size="10" />
<prescript description="B11.0 PRESCRIPT">MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#PARENT.MERCATO,RAGSOC</prescript>
</field>
<field x="161.5" y="1" type="Numero" align="right" width="10" pattern="1">
<field x="160" y="1" type="Numero" align="right" width="8" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>#PARENT.NDOC</source>
<source>RDOC.NDOC</source>
</field>
<field x="1" y="3" type="Testo" width="12" pattern="1" text="Cooperativa:">
<source>#PARENT.101@.CODCF</source>
</field>
<field x="15" y="3" type="Numero" align="right" width="15" pattern="1">
<source>RDOC.QTAGG1</source>
<prescript>MESSAGE ADD,F1.101</prescript>
</field>
<field x="32" y="3" type="Numero" align="right" width="4" pattern="1">
<source>RDOC.PREZZONN</source>
</field>
<field x="65" y="3" type="Valuta" align="right" width="11" pattern="1" text="#########,@@">
<field x="37" y="2" type="Valuta" valign="bottom" align="right" width="10" pattern="1" text="###.###.###,@@">
<source>RDOC.IMPCNN</source>
<prescript>MESSAGE ADD,F1.103</prescript>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.103</prescript>
</field>
<field x="101" y="3" type="Testo" align="right" width="13" pattern="1" text="Numero casse:">
<field x="55" y="2" type="Valuta" valign="bottom" align="right" width="15" pattern="1" hide_zero="1" text="###.###.###,@@">
<source>#PARENT.SPESMER</source>
<prescript description="B11.0 PRESCRIPT">#THIS @
-1 *
#THIS !
</prescript>
<postscript description="B11.0 POSTSCRIPT">MESSAGE ADD,F1.109</postscript>
</field>
<field x="80" y="2" type="Testo" valign="bottom" width="15" pattern="1" text="Numero casse:">
<source>N1</source>
</field>
<field x="115" y="3" type="Numero" align="right" width="10" pattern="1">
<field x="93" y="2" type="Numero" valign="bottom" align="right" width="7" pattern="1" hide_zero="1" text="###,@@">
<source>RDOC.NCOLLI</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.108</prescript>
</field>
<field x="141" y="3" type="Testo" align="right" width="23" pattern="1" text="Detrazione su quantit&#E0;:">
<source>N1</source>
</field>
<field x="1" y="5" type="Testo" width="10" pattern="1" text="Pescatore:">
<field x="2" y="3" type="Testo" valign="bottom" width="12" pattern="1" text="Cooperativa:">
<source>#PARENT.101@.CODCF</source>
</field>
<field x="15" y="5" type="Numero" align="right" width="13" pattern="1">
<field x="12" y="3" type="Numero" valign="bottom" align="right" width="10" pattern="1" hide_zero="1" text="#######,@@">
<source>RDOC.QTAGG1</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.101</prescript>
</field>
<field x="25" y="3" type="Prezzo" valign="bottom" align="right" width="8" pattern="1" hide_zero="1" text="###.###.###,@@">
<prescript description="B11.0 PRESCRIPT">"RDOC.PREZZONN" @
"ANAMAG.USER1" @
"X"
=
IF
"QTA" @
DUP
0
&#3C;&#3E;
IF
&#2F;
THEN
THEN
#THIS !
</prescript>
</field>
<field x="37" y="3" type="Valuta" valign="bottom" align="right" width="10" pattern="1" text="###.###.###,@@">
<source>RDOC.IMPCNS</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.104</prescript>
</field>
<field x="55" y="3" type="Valuta" valign="bottom" align="right" width="15" pattern="1" hide_zero="1" text="###.###.###,@@">
<source>#PARENT.SPESMER</source>
<prescript description="B11.0 PRESCRIPT">#THIS @
-1 *
#THIS !
</prescript>
<postscript description="B11.0 POSTSCRIPT">MESSAGE ADD,F1.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>
</field>
<field x="100" y="3" type="Stringa" valign="bottom" align="right" width="8" pattern="1">
<source>RDOC.CODIVA</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE TABLEREAD,%IVA,#THIS,S1</prescript>
</field>
<field x="116" y="3" type="Valuta" valign="bottom" align="right" width="8" pattern="1" hide_zero="1" text="###.###.###,@@">
<source>RDOC.IMPOSTA</source>
</field>
<field x="130" y="3" type="Valuta" valign="bottom" align="right" width="18" pattern="1" hide_zero="1" text="###.###.###,@@">
<source>(RDOC.QTAGG1-RDOC.QTA)*RDOC.PREZZO</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.106</prescript>
</field>
<field x="155" y="3" type="Valuta" valign="bottom" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
<source>RDOC.SCONTOR</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.107</prescript>
</field>
<field x="2" y="4" type="Testo" valign="bottom" width="10" pattern="1" text="Pescatore:">
<source>#PARENT.101@.CODCF</source>
</field>
<field x="12" y="4" type="Numero" valign="bottom" align="right" width="10" pattern="1" hide_zero="1" text="#######,@@">
<source>RDOC.QTA</source>
<prescript>MESSAGE ADD,F1.102</prescript>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.102</prescript>
</field>
<field x="32" y="5" type="Prezzo" align="right" width="11" pattern="1" text="#########,@@">
<source>RDOC.PREZZONS</source>
<field x="25" y="4" type="Prezzo" valign="bottom" align="right" width="8" pattern="1" hide_zero="1" text="###.###.###,@@">
<prescript description="B11.0 PRESCRIPT">"RDOC.PREZZONS" @
"ANAMAG.USER1" @
"X"
=
IF
"QTA" @
DUP
0
&#3C;&#3E;
IF
&#2F;
THEN
THEN
#THIS !
</prescript>
</field>
<field x="65" y="5" type="Valuta" align="right" width="11" pattern="1" text="#########,@@">
<source>RDOC.IMPCNS</source>
<prescript>MESSAGE ADD,F1.104</prescript>
<field x="18" y="1" type="Stringa" width="4" id="100" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>#PARENT.CODCF</source>
</field>
<field x="101" y="5" type="Valuta" align="right" width="11" pattern="1" text="#########,@@">
<source>RDOC.IMPCNS</source>
<prescript>MESSAGE ADD,F1.105</prescript>
</field>
<field x="141" y="5" type="Valuta" align="right" width="11" pattern="1" text="#########,@@">
<source>RDOC.IMPCNS</source>
<prescript>MESSAGE ADD,F1.106</prescript>
</field>
<field x="158.5" y="5" type="Valuta" align="right" width="13" pattern="1" text="#########,@@">
<source>RDOC.RITENUTA</source>
<prescript>MESSAGE ADD,F1.107</prescript>
<field x="23" y="1" type="Stringa" width="27" id="102" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>TRIM(20.RAGSOC[1,30])+' '+TRIM(20.RAGSOC[31,50])</source>
</field>
</section>
<section type="Foot" level="11" />
<section type="Foot" />
<section type="Foot" level="1">
<field x="1" y="0.5" type="Testo" align="right" width="10" pattern="1" text="Totali :">
<field border="2" y="1" type="Linea" width="170" height="0" pattern="1" />
<field x="2" y="2" type="Testo" valign="bottom" width="10" pattern="1" text="Totali :">
<source>RDOC.IMPCNS</source>
</field>
<field x="60" y="0.5" type="Testo" align="right" width="15" pattern="1" text="Numero casse :">
<field x="80" y="2" type="Testo" valign="bottom" width="15" pattern="1" text="Numero casse :">
<source>RDOC.IMPCNS</source>
</field>
<field x="13" y="0.5" type="Numero" align="right" width="11" id="101" pattern="1" />
<field x="13" y="2" type="Numero" align="right" width="11" id="102" pattern="1" />
<field x="35" y="0.5" type="Valuta" align="right" width="11" id="103" pattern="1" text="#########,@@" />
<field x="35" y="2" type="Valuta" align="right" width="11" id="104" pattern="1" text="#########,@@" />
<field x="76" y="2" type="Valuta" align="right" width="11" id="105" pattern="1" text="#########,@@" />
<field x="100" y="2" type="Valuta" align="right" width="11" id="106" pattern="1" text="#########,@@" />
<field x="117" y="2" type="Valuta" align="right" width="11" id="107" pattern="1" text="#########,@@" />
<field x="76" y="0.5" type="Numero" align="right" width="10" id="108" pattern="1" />
<field x="12" y="2" type="Numero" valign="bottom" align="right" width="10" id="101" pattern="1" hide_zero="1" text="###.###,@@" />
<field x="12" y="3" type="Numero" valign="bottom" align="right" width="10" id="102" pattern="1" hide_zero="1" text="###.###,@@" />
<field x="37" y="2" type="Valuta" valign="bottom" align="right" width="10" id="103" pattern="1" hide_zero="1" text="###.###.###,@@" />
<field x="37" y="3" type="Valuta" valign="bottom" align="right" width="10" id="104" pattern="1" hide_zero="1" text="###.###.###,@@" />
<field x="75" y="3" type="Valuta" valign="bottom" align="right" width="15" id="105" pattern="1" hide_zero="1" text="###.###.###,@@" />
<field x="130" y="3" type="Valuta" align="right" width="18" id="106" pattern="1" hide_zero="1" text="###.###.###,@@" />
<field x="155" y="3" type="Valuta" align="right" width="13" id="107" pattern="1" hide_zero="1" text="###.###.###,@@" />
<field x="93" y="2" type="Numero" valign="bottom" align="right" width="7" id="108" pattern="1" hide_zero="1" />
<field x="55" y="2" type="Valuta" valign="bottom" align="right" width="15" id="109" pattern="1" hide_zero="1" text="###.###.###,@@" />
<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 (NUM(ANSI(DATADOC))&#3E;=NUM(ANSI(#DADATA)))&#26;&#26;(NUM(ANSI(DATADOC))&#3C;=NUM(ANSI(#ADATA)))
FROM PROVV='D' ANNO=#ANNO CODNUM=#CODNUM
TO PROVV='D' ANNO=#ANNO CODNUM=#CODNUM
SELECT (BETWEEN(DATADOC,#DADATA,#ADATA))&#26;&#26;(BETWEEN(G1:MERCATO,#DAMERCATO,#AMERCATO))
JOIN 20 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF
FROM PROVV=D ANNO=#ANNO CODNUM=#CODNUM
TO PROVV=D ANNO=#ANNO CODNUM=#CODNUM
</sql>
</report>
</report>

View File

@ -2,30 +2,31 @@
PAGE "Stampa Conferimenti" -1 -1 78 10
NUMBER F_FROMCLIENTE 6
STRING F_FROMCLIENTE 6
BEGIN
PROMPT 5 1 "Da mercato "
USE LF_CLIFO
INPUT TIPOCF "C"
USE LF_MERCATICOOP
JOIN LF_CLIFO INTO TIPOCF=='C' CODCF==CODCF
INPUT CODCF F_FROMCLIENTE
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Descrizione@50" LF_CLIFO->RAGSOC
OUTPUT F_FROMCLIENTE CODCF
FLAG "U"
CHECKTYPE NORMAL
FIELD #DAMERCATO
END
NUMBER F_TOCLIENTE 6
STRING F_TOCLIENTE 6
BEGIN
PROMPT 5 2 "A mercato "
USE LF_CLIFO
INPUT TIPOCF "C"
COPY USE F_FROMCLIENTE
INPUT CODCF F_TOCLIENTE
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
COPY DISPLAY F_FROMCLIENTE
OUTPUT F_TOCLIENTE CODCF
NUM_EXPR #F_TOCLIENTE>=#F_FROMCLIENTE
WARNING "Range codice cliente non corretto"
WARNING "Intervallo codice cliente non corretto"
FIELD #AMERCATO
GROUP 2
END
DATE F_DADATA
@ -87,6 +88,7 @@ BEGIN
OUTPUT F_CODNUM CODTAB
CHECKTYPE REQUIRED
FIELD #CODNUM
FLAG "U"
END
BUTTON DLG_PRINT 10 2

View File

@ -1,5 +1,7 @@
#include <applicat.h>
#include <automask.h>
#include <form.h>
#include <report.h>
#include <reprint.h>
#include <textset.h>
@ -39,24 +41,133 @@ bool TEstrattoConto_mask::on_field_event(TOperable_field& f, TField_event e, lon
class TEstrattoConto_rep : public TDocument_report
{
int _riga;
protected:
virtual bool use_mask() {return false;}
virtual bool set_usr_val(const TString& name, const TVariant& var);
bool incr_field(int idx, const TVariant& var);
public:
TEstrattoConto_rep();
};
bool TEstrattoConto_rep::incr_field(int idx, const TVariant& var)
{
if (_riga > 0)
{
TReport_section& f1 = section('F',1);
TReport_field* rf = f1.find_field(_riga * 1000 + 100 + idx);
if (rf != NULL)
{
TVariant v = rf->get();
v += var;
rf->set(v);
return true;
}
}
return false;
}
bool TEstrattoConto_rep::set_usr_val(const TString& name, const TVariant& var)
{
if(name == "#EC_TIPOMOV")
{
TReport_section& f1 = section('F',1);
TReport_field* rf = NULL;
for (int id = 1100; ; id += 1000)
{
rf = f1.find_field(id);
if (rf == NULL)
break;
const TVariant& rfv = rf->get();
if (rfv == var)
break;
if (rfv.is_empty())
{
rf->set(var);
break;
}
}
if (rf != NULL)
_riga = id / 1000;
else
_riga = 0;
return true;
}
if (name == "#EC_QTA")
{
incr_field(2, var);
return true;
}
if (name == "#EC_MER")
{
incr_field(5, var);
return true;
}
if (name == "#EC_ACC")
{
incr_field(6, var);
return true;
}
if (name == "#EC_IMPCRE")
{
incr_field(7, var);
return true;
}
if (name == "#EC_IMPDEB")
{
incr_field(8, var);
return true;
}
if (name == "#EC_IMPO")
{
incr_field(9, var);
return true;
}
return TDocument_report::set_usr_val(name,var);
}
TEstrattoConto_rep::TEstrattoConto_rep()
{
load("co1300a");
TReport_section& b11 = section('B',11);
TReport_section& f1 = section('F',1);
long y = 400;
for (int i = 1000; i <= 8000; i += 1000)
{
for (int j = 100; j <= 109; ++j)
{
if (j == 101 || j == 103 || j == 104)
continue;
TReport_field* rf_b11 = b11.find_field(j);
TReport_field* rf_f1 = new TReport_field(*rf_b11);
f1.add(rf_f1);
const int id = rf_f1->id() + i;
rf_f1->set_id(id);
rf_f1->set_row(y);
rf_f1->set_postscript("");
rf_f1->set_prescript("");
rf_f1->set_field("");
}
y += 100;
}
}
////////////////////////////////////////////////////////
// APPLICAZIONE
////////////////////////////////////////////////////////
struct TRiga_totale
{
TString80 _descr;
real _qta;
real _acc;
real _impcredito;
real _impdebito;
};
class TEstrattoConto : public TSkeleton_application
{
public:
@ -70,7 +181,6 @@ void TEstrattoConto::main_loop()
{
TReport_book book;
TEstrattoConto_rep rep;
rep.load("co1300a");
const TDate dataini = m.get_date(F_DATAINI);
const TDate datafin = m.get_date(F_DATAFIN);
@ -83,47 +193,13 @@ void TEstrattoConto::main_loop()
for (bool ok = soci.move_first(); ok; ok = soci.move_next())
{
TRecordset * r = rep.recordset();
TRecordset* r = rep.recordset();
long codcf = soci.get(SC_CODCF).as_int();
r->set_var("#SOCIO", soci.get("CODCF"));
r->set_var("#ANNO", TVariant(long(anno)));
r->set_var("#DATAINI", dataini);
r->set_var("#DATAFIN", datafin);
// calcolo totali per articolo
TAssoc_array totali_art;
TReport_section& body2 = rep.section('B', 12);
for (bool ok = r->move_first(); ok; ok = r->move_next())
{
TRecordset* rr = rep.section('B', 11).recordset();
for (bool okr = rr->move_first(); okr; okr = rr->move_next())
{
const TString& codart = rr->get(RDOC_CODART).as_string();
TRiga_totale* rt = (TRiga_totale*) totali_art.objptr(codart);
if (rt == NULL)
{
rt = new TRiga_totale;
rt->_descr = rr->get(RDOC_DESCR).as_string();
totali_art.add(codart, (TObject*) rt);
}
// sommare qta e importi
real qta = rr->get(RDOC_QTA).as_real();
rt->_qta += qta;
}
}
// devo passare il recordset al report
TCSV_recordset csv("");
FOR_EACH_ASSOC_OBJECT(totali_art, o, k, it)
{
TRiga_totale& rt = (TRiga_totale&) *it;
csv.new_rec("");
TVariant descr = rt._descr;
csv.set(0, descr);
csv.set(1, rt._qta);
}
body2.set_recordset(&csv);
book.add(rep);
}
book.print_or_preview();

View File

@ -3,227 +3,370 @@
<description>Stampa Estratto Conto Socio</description>
<font face="Courier New" size="8" />
<section type="Head">
<field x="1" y="1" type="Stringa" width="10" pattern="1">
<source>101@.CODCF</source>
<field x="50" y="0.5" type="Testo" width="32" pattern="1" text="Estratto conto dal">
<font face="Courier New" bold="1" size="14" />
</field>
<field x="133" y="1" type="Data" width="12" pattern="1">
<source>#SYSTEM.DATE</source>
</field>
<field x="1" y="2" type="Stringa" width="50" pattern="1">
<source>101@.RAGSOC</source>
</field>
<field x="68" y="2" type="Testo" width="20" pattern="1" text="Estratto conto">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="90" y="2" type="Data" width="12" pattern="1">
<font face="Courier New" bold="1" size="10" />
<field x="85" y="0.5" type="Data" width="18" pattern="1">
<font face="Courier New" bold="1" size="14" />
<source>#DATAINI</source>
</field>
<field x="107" y="2" type="Testo" width="1" pattern="1" text="-">
<font face="Courier New" bold="1" size="10" />
<field x="106" y="0.5" type="Testo" width="4" pattern="1" text="al">
<font face="Courier New" bold="1" size="14" />
</field>
<field x="110" y="2" type="Data" width="12" pattern="1">
<font face="Courier New" bold="1" size="10" />
<field x="113.5" y="0.5" type="Data" width="18" pattern="1">
<font face="Courier New" bold="1" size="14" />
<source>#DATAFIN</source>
</field>
<field x="1" y="3" type="Stringa" width="50" pattern="1">
<field x="157.5" y="0.5" type="Testo" width="5" pattern="1" text="Pag." />
<field x="163.5" y="0.5" type="Numero" align="right" width="5" pattern="1" text="#####">
<source>#REPORT.PAGE</source>
</field>
<field border="2" y="2" type="Linea" width="170" height="0" pattern="1" />
<field x="2" y="2.5" type="Stringa" width="60" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>101@.CODCF+' '+TRIM(101@.RAGSOC[1,30])+' '+TRIM(101@.RAGSOC[31,50])</source>
</field>
<field x="2" y="3.5" type="Stringa" width="50" pattern="1">
<source>101@.INDCF+" ,"+101@.CIVCF</source>
</field>
<field x="1" y="4" type="Stringa" width="50" pattern="1">
<field x="2" y="4.5" type="Stringa" width="50" pattern="1">
<source>101@.LOCALITACF</source>
</field>
<field x="1" y="5" type="Stringa" width="50" pattern="1">
<source>101@.CAPCF+" "+COMUNI.DENCOM+" "+COMUNI.PROVCOM</source>
<field x="2" y="5.5" type="Stringa" width="50" pattern="1">
<source>101@.CAPCF+" "+COMUNI.DENCOM+" ("+COMUNI.PROVCOM+")"</source>
</field>
<field x="1" y="8" type="Testo" width="10" pattern="1" text="Data">
<field border="2" y="7" type="Linea" width="170" height="0" pattern="1" />
<field x="1" y="7.5" type="Testo" width="8" pattern="1" text="Data">
<font face="Courier New" size="7" />
<source>#PARENT.DATADOC</source>
</field>
<field x="12" y="8" type="Testo" width="30" pattern="1" text="Articolo">
<field x="10" y="7.5" type="Testo" width="22" pattern="1" text="Tipo movimento">
<font face="Courier New" size="7" />
<source>DESCR</source>
</field>
<field x="43" y="8" type="Testo" width="10" pattern="1" text="N.f.asta">
<field x="36" y="7.5" type="Testo" align="right" width="8" pattern="1" text="N.f.asta">
<font face="Courier New" size="7" />
<source>#PARENT.NFASTA</source>
</field>
<field x="52" y="8" type="Testo" align="right" width="10" pattern="1" text="Q.ta">
<field x="46" y="7.5" type="Testo" align="right" width="8" pattern="1" text="Peso">
<font face="Courier New" size="7" />
<source>Q.ta</source>
</field>
<field x="63" y="8" type="Testo" align="right" width="10" pattern="1" text="Prezzo">
<field x="56" y="7.5" type="Testo" align="right" width="10" pattern="1" text="Prezzo">
<font face="Courier New" size="7" />
<source>34.PREZZONN</source>
</field>
<field x="74" y="8" type="Testo" align="right" width="10" pattern="1" text="Prz.-acc.">
<field x="68" y="7.5" type="Testo" align="right" width="8" pattern="1" text="Prz-8%">
<font face="Courier New" size="7" />
<source>PREZZONS</source>
</field>
<field x="85" y="8" type="Testo" align="right" width="10" pattern="1" text="Acc.">
<field x="78" y="7.5" type="Testo" align="right" width="9" pattern="1" text="Dir. Merc.">
<font face="Courier New" size="7" />
</field>
<field x="89" y="7.5" type="Testo" align="right" width="8" pattern="1" text="Acc. 8%">
<font face="Courier New" size="7" />
<source>RITENUTA</source>
</field>
<field x="96" y="8" type="Testo" align="right" width="15" pattern="1" text="Imp.a credito">
<field x="99" y="7.5" type="Testo" align="right" width="15" pattern="1" text="Imp.a credito">
<font face="Courier New" size="7" />
<source>IMPCNS</source>
</field>
<field x="112" y="8" type="Testo" align="right" width="15" pattern="1" text="Imp.a debito">
<field x="116" y="7.5" type="Testo" align="right" width="15" pattern="1" text="Imp.a debito">
<font face="Courier New" size="7" />
<source>IMPCNS</source>
</field>
<field x="128" y="8" type="Testo" align="right" width="10" pattern="1" text="Imposta" />
<field x="140" y="8" type="Testo" width="20" pattern="1" text="Mercato" />
<field x="133" y="7.5" type="Testo" align="right" width="10" pattern="1" text="Imposta">
<font face="Courier New" size="7" />
</field>
<field x="145" y="7.5" type="Testo" width="25" pattern="1" text="Mercato">
<font face="Courier New" size="7" />
</field>
</section>
<section type="Head" level="1" />
<section type="Head" level="2" />
<section type="Body" />
<section type="Body" level="1" />
<section type="Head" level="11" />
<section type="Body" level="11">
<sql>USE RDOC
SELECT (TIPORIGA='CO')||(TIPORIGA='06')
<sql>USE RDOC SELECT ((TIPORIGA=="CO")||(TIPORIGA=="02"))
JOIN %SPP ALIAS 201 INTO CODTAB==CODART
JOIN ANAMAG INTO CODART==CODARTMAG
FROM CODNUM=#PARENT.CODNUM ANNO=#PARENT.ANNO PROVV=#PARENT.PROVV NDOC=#PARENT.NDOC
TO CODNUM=#PARENT.CODNUM ANNO=#PARENT.ANNO PROVV=#PARENT.PROVV NDOC=#PARENT.NDOC
</sql>
<field type="Data" width="11" pattern="1">
<field x="1" type="Data" width="9" pattern="1">
<font face="Courier New" size="7" />
<source>#PARENT.DATADOC</source>
</field>
<field x="12" type="Stringa" width="30" pattern="1">
<field x="36" type="Numero" align="right" width="8" pattern="1" hide_zero="1">
<font face="Courier New" size="7" />
<source>#PARENT.NFASTA</source>
</field>
<field x="10" type="Stringa" width="28" id="100" pattern="1">
<font face="Courier New" size="7" />
<source>DESCR</source>
<postscript description="B11.100 POSTSCRIPT">#THIS @
#EC_TIPOMOV !</postscript>
</field>
<field x="43" type="Data" width="8" pattern="1">
<source>33.NFASTA</source>
</field>
<field x="141" type="Stringa" hidden="1" align="right" bg_color="#00FFFF" width="12" id="100" pattern="1">
<font face="Arial" size="10" />
<source>34.TIPORIGA</source>
<prescript description="B11.100 PRESCRIPT">#THIS @
"CO" = \ confronta tiporiga con "CO"
IF
#101 ENABLE
#102 ENABLE
#103 ENABLE
#104 ENABLE
#105 ENABLE
#106 DISABLE
#107 ENABLE
ELSE
#101 DISABLE
#102 DISABLE
#103 DISABLE
#104 DISABLE
#105 DISABLE
#106 ENABLE
#107 ENABLE
THEN</prescript>
</field>
<field x="52" type="Numero" align="right" width="10" id="101" pattern="1" hide_zero="1" text="###.###,@@">
<field x="46" type="Numero" align="right" width="8" id="102" pattern="1" hide_zero="1" text="###.###,@@">
<font face="Courier New" size="7" />
<groups>1</groups>
<source>QTA</source>
<postscript description="B11.101 POSTSCRIPT">MESSAGE ADD,F2.101</postscript>
<postscript description="B11.102 POSTSCRIPT">#THIS @
DUP
"F1.102" +!
#EC_QTA !</postscript>
</field>
<field x="63" type="Prezzo" align="right" width="10" codval="33.CODVAL" id="102" pattern="1" hide_zero="1" text="#########,@@">
<field x="56" type="Prezzo" align="right" width="10" codval="33.CODVAL" id="103" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Courier New" size="7" />
<groups>1</groups>
<source>PREZZONN</source>
<prescript description="B11.103 PRESCRIPT">"CODNUM" @
"CONF"
=
IF
"PREZZONN" @
"ANAMAG.USER1" @
"X"
=
IF
"QTA" @
DUP
0
&#3C;&#3E;
IF
&#2F;
THEN
THEN
ELSE
0
THEN
#THIS !
</prescript>
</field>
<field x="74" type="Prezzo" align="right" width="10" id="103" pattern="1" hide_zero="1" text="#########,@@">
<field x="67" type="Prezzo" align="right" width="8" id="104" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Courier New" size="7" />
<groups>1</groups>
<source>PREZZONS</source>
<prescript description="B11.104 PRESCRIPT">"CODNUM" @
"CONF"
=
IF
"PREZZONS" @
"ANAMAG.USER1" @
"X"
=
IF
"QTA" @
DUP
0
&#3C;&#3E;
IF
&#2F;
THEN
THEN
ELSE
0
THEN
#THIS !
</prescript>
</field>
<field x="85" type="Prezzo" align="right" width="10" id="104" pattern="1" hide_zero="1" text="#########,@@">
<field x="78.5" type="Valuta" align="right" width="9" id="105" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Courier New" size="7" />
<groups>1</groups>
<source>IMPCNN-IMPCNS</source>
<postscript description="B11.104 POSTSCRIPT">MESSAGE ADD,F2.104</postscript>
<source>#PARENT.SPESMER</source>
<prescript description="B11.105 PRESCRIPT">#THIS @ \ leggo il val corrente
-1 * \ cambio segno
#THIS ! \ scrivo il valore</prescript>
<postscript description="B11.105 POSTSCRIPT">#THIS @
DUP
"F1.105" +!
#EC_MER !
</postscript>
</field>
<field x="96" type="Prezzo" align="right" width="15" id="105" pattern="1" hide_zero="1" text="#########,@@">
<field x="89" type="Valuta" align="right" width="8" id="106" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Courier New" size="7" />
<source>SCONTOR</source>
<postscript description="B11.106 POSTSCRIPT">#THIS @
DUP
"F1.106" +!
#EC_ACC !
</postscript>
</field>
<field x="99" type="Valuta" align="right" width="15" id="107" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Courier New" size="7" />
<groups>1</groups>
<source>IMPCNS</source>
<postscript description="B11.105 POSTSCRIPT">MESSAGE ADD,F2.105
MESSAGE ADD,F2.115</postscript>
<prescript description="B11.107 PRESCRIPT">#PARENT.CODNUM @ \ legge il tipodoc
"CONF" = IF \ controlla se &#E8; un conferimento
#PARENT.NETCRED @ \ se &#E8; un conferimento scrivo TOTMER
DUP
0 &#3E;= IF \ se &#E8; maggiore di zero lo scrivo in B11.107
"B11.107"
ELSE \ altrimenti ci scrivo 0
0 *
"B11.107"
THEN
ELSE \ se non &#E8; un conferimento
#PARENT.IMPONIBILI @ \ se non un conferimento scrivo IMPONIBILI
DUP
0 &#3C;= IF \ se &#E8; minore di zero gli cambio segno e lo scrivo in B11.107
-1 *
"B11.107"
ELSE \ altrimenti scrivo 0
0 *
"B11.107"
THEN
THEN
! \ lo scrivo effettivamente</prescript>
<postscript description="B11.107 POSTSCRIPT">#THIS @
DUP
"F1.107" +!
#EC_IMPCRE !</postscript>
</field>
<field x="112" type="Prezzo" align="right" width="15" id="106" pattern="1" hide_zero="1" text="#########,@@">
<field x="116" type="Valuta" align="right" width="15" id="108" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Courier New" size="7" />
<groups>2</groups>
<source>IMPCNS</source>
<postscript description="B11.106 POSTSCRIPT">MESSAGE ADD,F2.106</postscript>
<prescript description="B11.108 PRESCRIPT">#PARENT.CODNUM @ \ legge il tipodoc
"CONF" = IF \ controlla se &#E8; un conferimento
#PARENT.NETCRED @ \ se &#E8; un conferimento scrivo TOTMER
DUP
0 &#3C;= IF \ se &#E8; minore di zero gli cambio segno e lo scrivo in B11.108
-1 *
"B11.108"
ELSE \ altrimenti ci scrivo 0
0 *
"B11.108"
THEN
ELSE \ se non &#E8; un conferimento
#PARENT.IMPONIBILI @ \ se non &#E8; un conferimento scrivo IMPONIBILI
DUP
0 &#3E;= IF \ se &#E8; maggiore di zero lo scrivo in B11.108
"B11.108"
ELSE \ altrimenti scrivo 0
0 *
"B11.108"
THEN
THEN
! \ lo scrivo effettivamente</prescript>
<postscript description="B11.108 POSTSCRIPT">#THIS @
DUP
"F1.108" +!
#EC_IMPDEB !</postscript>
</field>
<field x="128" type="Prezzo" align="right" width="10" id="107" pattern="1" hide_zero="1" text="#########,@@">
<source>IMPOSTA</source>
<postscript description="B11.107 POSTSCRIPT">MESSAGE ADD,F2.107</postscript>
<field x="133" type="Prezzo" hidden="1" align="right" width="10" id="109" pattern="1" hide_zero="1" text="#########,@@">
<font face="Courier New" size="7" />
<source>#PARENT.IMPOSTE</source>
<prescript description="B11.109 PRESCRIPT">#THIS @
-1 *
#THIS !</prescript>
<postscript description="B11.109 POSTSCRIPT">#THIS @
#EC_IMPO !</postscript>
</field>
<field x="144" type="Numero" hidden="1" align="right" width="10" id="110" pattern="1">
<source>#PARENT.MERCATO</source>
</field>
<field x="145" type="Stringa" bg_color="#00FFFF" width="40" id="111" pattern="1">
<font face="Courier New" size="7" />
<prescript description="B11.111 PRESCRIPT">MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#PARENT.MERCATO,RAGSOC</prescript>
</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>
<prescript description="B11.208 PRESCRIPT">#THIS @ \ leggo il val corrente
-1 * \ cambio segno
#THIS ! \ scrivo il valore</prescript>
<postscript description="B11.208 POSTSCRIPT">#THIS @
DUP
"F1.98" +!
"F1.108" +!</postscript>
</field>
</section>
<section type="Foot" level="11" />
<section type="Head" level="12" />
<section deactivated="1" type="Body" level="12" hidden="1">
<sql>USE RDOC
SELECT (TIPORIGA='CO')||(TIPORIGA='06')
JOIN %SPP ALIAS 201 INTO CODTAB==CODART
FROM CODNUM=#PARENT.CODNUM ANNO=#PARENT.ANNO PROVV=#PARENT.PROVV NDOC=#PARENT.NDOC
TO CODNUM=#PARENT.CODNUM ANNO=#PARENT.ANNO PROVV=#PARENT.PROVV NDOC=#PARENT.NDOC
</sql>
<field x="13" type="Stringa" width="30" pattern="1">
<section type="Foot" />
<section type="Foot" level="1">
<field border="2" type="Linea" width="170" height="0" pattern="1" />
<field x="10" type="Testo" width="30" pattern="1" text="Ritenute mensili (12%)">
<font face="Courier New" size="7" />
</field>
<field x="30" y="1" type="Testo" width="10" pattern="1" text="Totali">
<font face="Courier New" size="7" />
</field>
<field border="2" y="2.5" type="Linea" width="170" height="0" pattern="1" />
<field x="12" y="2.5" type="Testo" valign="center" width="25" pattern="1" text="Riepilogo per tipo movimento">
<font face="Courier New" size="7" />
<source>DESCR</source>
</field>
<field x="142" type="Stringa" hidden="1" align="right" bg_color="#00FFFF" width="12" id="100" pattern="1">
<font face="Arial" size="10" />
<source>34.TIPORIGA</source>
<prescript>#THIS @
"CO" = \ confronta tiporiga con "CO"
IF
#101 ENABLE
#102 ENABLE
#103 ENABLE
#104 ENABLE
#105 ENABLE
#106 DISABLE
#107 ENABLE
<field x="46" y="2.5" type="Testo" valign="center" align="right" width="8" pattern="1" text="Peso">
<font face="Courier New" size="7" />
<source>Q.ta</source>
</field>
<field x="78" y="2.5" type="Testo" valign="center" align="right" width="9" pattern="1" text="Dir. Merc.">
<font face="Courier New" size="7" />
</field>
<field x="89" y="2.5" type="Testo" valign="center" align="right" width="8" pattern="1" text="Acc. 8%">
<font face="Courier New" size="7" />
<source>RITENUTA</source>
</field>
<field x="99" y="2.5" type="Testo" valign="center" align="right" width="15" pattern="1" text="Imp.a credito">
<font face="Courier New" size="7" />
<source>IMPCNS</source>
</field>
<field x="116" y="2.5" type="Testo" valign="center" align="right" width="15" pattern="1" text="Imp.a debito">
<font face="Courier New" size="7" />
<source>IMPCNS</source>
</field>
<field x="133" y="2.5" type="Testo" valign="center" align="right" width="10" pattern="1" text="Imposta">
<font face="Courier New" size="7" />
</field>
<field border="2" y="3.5" type="Linea" width="170" height="0" pattern="1" />
<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" />
</field>
<field x="46" y="1" type="Numero" align="right" width="8" id="102" pattern="1" text="###.###,@@">
<font face="Courier New" size="7" />
</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" />
</field>
<field x="89" y="1" type="Valuta" align="right" width="8" id="106" pattern="1" text="###.###.###,@@">
<font face="Courier New" size="7" />
</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" />
</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" />
</field>
<field x="141" y="1" type="Stringa" align="right" width="16" id="109" pattern="1">
<font face="Courier New" bold="1" size="8" />
<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
0 &#3E;= IF \ se il risultato &#E8; maggiore di zero, scrivo "saldo a credito"
"Saldo a credito" "F1.109"
ELSE
#101 DISABLE
#102 DISABLE
#103 DISABLE
#104 DISABLE
#105 DISABLE
#106 ENABLE
#107 ENABLE
THEN</prescript>
"Saldo a debito" "F1.109" \ altrimenti scrivo saldo a debito
THEN
!</prescript>
</field>
<field x="53" type="Numero" align="right" width="10" id="101" pattern="1" hide_zero="1" text="###.###.@@">
<source>QTA</source>
<postscript>MESSAGE ADD,F2.101</postscript>
<field x="158" y="1" type="Valuta" align="right" width="12" id="110" pattern="1" text="#########,@@">
<font face="Courier New" bold="1" size="8" />
<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
DUP \ duplico il risultato
0 &#3C;= IF \ se il risultato &#E8; negativo, gli cambio segno
* -1
THEN \ e lo scrivo nel campo 110
"F1.110" !
</prescript>
</field>
<field x="64" type="Prezzo" align="right" width="10" id="102" pattern="1" hide_zero="1" text="#########,@@">
<source>PREZZONN</source>
</field>
<field x="75" type="Prezzo" align="right" width="10" id="103" pattern="1" hide_zero="1" text="#########,@@">
<source>PREZZONS</source>
</field>
<field x="86" type="Prezzo" align="right" width="10" id="104" pattern="1" hide_zero="1" text="#########,@@">
<source>IMPCNN-IMPCNS</source>
<prescript>MESSAGE ADD,F2.104</prescript>
</field>
<field x="97" type="Prezzo" align="right" width="15" id="105" pattern="1" hide_zero="1" text="#########,@@">
<source>IMPCNS</source>
<postscript>MESSAGE ADD,F2.105</postscript>
</field>
<field x="113" type="Prezzo" align="right" width="15" id="106" pattern="1" hide_zero="1" text="#########,@@">
<source>IMPCNS</source>
<postscript>MESSAGE ADD,F2.106</postscript>
</field>
<field x="129" type="Prezzo" align="right" width="10" id="107" pattern="1" hide_zero="1" text="#########,@@">
<source>IMPOSTA</source>
<postscript>MESSAGE ADD,F2.107</postscript>
</field>
</section>
<section type="Foot" level="12" />
<section type="Foot" />
<section type="Foot" level="1" />
<section type="Foot" level="2">
<field x="30" type="Testo" width="10" pattern="1" text="TOTALI" />
<field x="92" y="3" type="Testo" width="35" pattern="1" text="Progressivo annuo conferimenti" />
<field x="52" type="Numero" align="right" width="10" id="101" pattern="1" hide_zero="1" text="###.###,@@">
<postscript description="F2.101 POSTSCRIPT">MESSAGE ADD,F2.101</postscript>
</field>
<field x="96" type="Prezzo" align="right" width="15" id="105" pattern="1" hide_zero="1" text="#########,@@" />
<field x="112" type="Prezzo" align="right" width="15" id="106" pattern="1" hide_zero="1" text="#########,@@" />
<field x="128" type="Prezzo" align="right" width="15" id="107" pattern="1" hide_zero="1" text="#########,@@" />
<field x="128" y="3" type="Prezzo" align="right" width="15" id="115" pattern="1" text="###.###.###,@@" />
</section>
<sql>USE DOC
KEY 2
SELECT (NUM(ANSI(DATADOC)&#3E;=ANSI(#DATAINI)))&#26;&#26;(NUM(ANSI(DATADOC)&#3C;=ANSI(#DATAFIN)))
SELECT BETWEEN(DATADOC,#DATAINI,#DATAFIN)
JOIN CLIFO ALIAS 101 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN COMUNI TO 101@ INTO STATO==STATOCF COM==COMCF
FROM TIPOCF='F' CODCF=#SOCIO PROVV='D' ANNO=#ANNO DATADOC=#DATAINI
TO TIPOCF='F' CODCF=#SOCIO PROVV='D' ANNO=#ANNO DATADOC=#DATAFIN</sql>
TO TIPOCF='F' CODCF=#SOCIO PROVV='D' ANNO=#ANNO DATADOC=#DATAFIN
</sql>
</report>

View File

@ -22,7 +22,7 @@ public:
void TFatturazione_cooperative::campi_raggruppamento_righe(TToken_string& campi_riga) const
{
campi_riga = "CODART|UMQTA!CODIVA"; // Uguali sempre
campi_riga = "CODART|UMQTA"; // Uguali sempre
}
void TFatturazione_cooperative::campi_raggruppamento(TToken_string& campi) const
@ -33,9 +33,13 @@ void TFatturazione_cooperative::campi_raggruppamento(TToken_string& campi) const
void TFatturazione_cooperative::add_rows(TRiga_documento & rout, TRiga_documento & rin)
{
real valore = rout.get_real(RDOC_PREZZO);
real qta = rout.get_real(RDOC_QTA);
valore += rin.doc().imponibile();
valore += rin.doc().get_real("TOTMER")+rin.doc().get_real("SPESMER");
valore.round(2);
rout.put(RDOC_PREZZO, valore);
qta += rin.get_real(RDOC_QTA);
rout.put(RDOC_QTA, qta);
}
bool TFatturazione_cooperative::doc_raggruppabile(const TDocumento & doc_in, const TDocumento & doc_out, TToken_string & campi) const
@ -50,8 +54,10 @@ bool TFatturazione_cooperative::doc_raggruppabile(const TDocumento & doc_in, con
if (raggruppa)
{
const TString iva_in = rin.get(RDOC_CODIVA);
const TString & art = rin.get(RDOC_CODARTMAG);
const TString & iva_in = cache().get(LF_ANAMAG, art, ANAMAG_USER4);
const TString iva_out = rout.get(RDOC_CODIVA);
raggruppa = iva_in == iva_out;
}
return raggruppa;
@ -65,11 +71,18 @@ void TFatturazione_cooperative::create_row(TDocumento& doc_out, const TRiga_docu
{
TFatturazione_bolle::create_row(doc_out, rin);
TRiga_documento & rout = doc_out[1];
const real valore = rin.doc().imponibile();
real valore = rin.doc().get_real("TOTMER")+rin.doc().get_real("SPESMER");
rout.put(RDOC_QTA, 1);
valore.round(2);
rout.put(RDOC_PREZZO, valore);
rout.zero(RDOC_SCONTO);
rout.put(RDOC_CODAGG1, "X");
const TString & art = rout.get(RDOC_CODARTMAG);
const TString & codiva= cache().get(LF_ANAMAG, art, ANAMAG_USER4);
if (codiva.full())
rout.put(RDOC_CODIVA, codiva);
}
}

11
co/co1600a.h Executable file
View File

@ -0,0 +1,11 @@
// campi per la maschera co1600a
#define F_DATAINI 101
#define F_DATAFIN 102
#define F_DASOCIO 103
#define F_DESDASOCIO 104
#define F_ASOCIO 105
#define F_DESASOCIO 106
#define F_CODABI 107
#define F_CODCAB 108
#define F_DESBAN 109

127
co/co1600a.rep Executable file
View File

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="co1600a" orientation="2" lpi="6">
<description>Stampa Saldi Estratto Conto</description>
<font face="Courier New" size="8" />
<section type="Head">
<field x="58" type="Testo" align="right" width="15" pattern="1" text="Nr. c&#2F;corrente">
<source>101.NUMCC</source>
</field>
<field x="75" type="Testo" align="right" width="17" pattern="1" text="Saldo a credito" />
<field x="94" type="Testo" align="right" width="17" pattern="1" text="Saldo a debito">
<source>Saldo a debito</source>
</field>
<field x="113" type="Testo" width="50" pattern="1" text="Banca &#2F; dipendenza">
<source>102.S0</source>
</field>
<field border="2" y="1" type="Linea" width="170" height="0" pattern="1" />
<field x="2" type="Testo" width="54" id="101" pattern="1" text="Socio">
<source>101.CODCF</source>
</field>
</section>
<section type="Head" level="1">
<field x="71" type="Testo" valign="center" align="center" width="50" height="2" pattern="1" text="STAMPA SALDI ESTRATTO CONTO">
<font face="Courier New" bold="1" size="14" />
</field>
<field x="157.75" y="0.12" type="Testo" width="5" pattern="1" text="Pag." />
<field x="163.75" y="0.12" type="Numero" align="right" width="5" pattern="1" text="#####">
<source>#REPORT.PAGE</source>
</field>
<field border="2" y="2" type="Linea" width="170" height="0" pattern="1" />
<field x="3" y="3" type="Testo" width="6" pattern="1" text="Ditta" />
<field x="10" y="3" type="Stringa" width="60" pattern="1">
<source>#SYSTEM.RAGSOC</source>
</field>
<field x="3" y="4" type="Testo" valign="bottom" width="12" pattern="1" text="Dalla data" />
<field x="16" y="4" type="Data" valign="bottom" align="right" width="15" pattern="1">
<source>#DATAINI</source>
</field>
<field x="32" y="4" type="Testo" valign="bottom" align="center" width="12" pattern="1" text="alla data" />
<field x="45" y="4" type="Data" valign="bottom" align="right" width="15" pattern="1">
<source>#DATAFIN</source>
</field>
<field border="2" y="6" type="Linea" width="170" height="0" pattern="1" />
</section>
<section type="Head" level="2" hidden="1">
<groupby>DOC.TIPOCF+DOC.CODCF</groupby>
<prescript description="H2 PRESCRIPT">MESSAGE RESET,F2.104
MESSAGE RESET,F2.105</prescript>
</section>
<section type="Body" />
<section type="Body" level="1" hidden="1">
<field x="2" type="Numero" align="right" width="3" id="101" pattern="1">
<source>DOC.CODCF</source>
<prescript description="B1.101 PRESCRIPT">#THIS @ \ leggo il valore attuale
"F2.101" ! \ lo scrivo nel riepilogo</prescript>
</field>
<field x="6" type="Stringa" dynamic_height="1" width="25" height="2" id="102" pattern="1">
<source>TRIM(CLIFO.RAGSOC[1,30])+" "+TRIM(CLIFO.RAGSOC[31,50])</source>
<prescript description="B1.102 PRESCRIPT">#THIS @
"F2.102" !</prescript>
</field>
<field x="34" type="Stringa" align="right" width="15" id="103" pattern="1">
<source>CLIFO.IBAN</source>
<alt_source>CLIFO.NUMCC</alt_source>
<prescript description="B1.103 PRESCRIPT">#THIS @
"F2.103" !</prescript>
</field>
<field x="52" type="Prezzo" 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" @
"F2.104" \ lo devo mettere nella coda del gruppo
ELSE \ se non &#E8; un conferimento
"DOC.IMPONIBILI" @
-1 * \ gli cambio segno
"F2.104" \ lo metto nella coda del gruppo
THEN
+! \ lo sommo</prescript>
</field>
<field x="52" y="1" type="Prezzo" 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>
</field>
<field x="70" type="Stringa" dynamic_height="1" width="30" height="2" id="106" pattern="1">
<source>CLIFO.CODABI+' '+CLIFO.CODCAB+' '+101@.S0+' '+102@.S0</source>
<prescript description="B1.106 PRESCRIPT">#THIS @
"F2.106" !</prescript>
</field>
</section>
<section type="Foot" />
<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="###.###.###,@@" />
</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="###.###.###,@@">
<prescript description="F2.104 PRESCRIPT">#THIS @ \ leggo il valore attuale
DUP \ lo duplico
0 &#3E;= IF \ se &#E8; maggiore di zero
"0" "F2.105" ! \ scrivo 0 in saldo a debito
ELSE
-1 * \ canbio segno al valore attuale
"F2.105" ! \ lo scrivo in saldo a debito
0 "F2.104" ! \ scrivo 0 in saldo a credito
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="###.###.###,@@">
<postscript description="F2.105 POSTSCRIPT">MESSAGE ADD,F1.102</postscript>
</field>
<field x="113" type="Stringa" width="70" id="106" pattern="1" />
</section>
<sql>USE DOC
KEY 2
SELECT BETWEEN(DATADOC,#DATAINI,#DATAFIN)
JOIN CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN %BAN TO CLIFO ALIAS 101 INTO CODTAB==CODABI
JOIN %BAN TO CLIFO ALIAS 102 INTO CODTAB==CODABI+CODCAB
FROM TIPOCF='F' CODCF=#DASOCIO
TO TIPOCF='F' CODCF=#ASOCIO
</sql>
</report>

89
co/co1600a.uml Executable file
View File

@ -0,0 +1,89 @@
#include "co1600a.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Stampa saldi estratto conto" 0 -1 0 19
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 1 "Selezione periodo"
END
DATE F_DATAINI
BEGIN
PROMPT 2 2 "Data iniziale "
FIELD DATAINI
CHECKTYPE REQUIRED
END
DATE F_DATAFIN
BEGIN
PROMPT 37 2 "Data fin. "
FIELD DATAFIN
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 4 "Selezione soci"
END
NUMBER F_DASOCIO 6
BEGIN
PROMPT 2 5 "Da socio "
FIELD DASOCIO
USE LF_SOCICOOP KEY 1
JOIN LF_CLIFO TO LF_SOCICOOP INTO TIPOCF=='F' CODCF==CODCF
INPUT CODCF F_DASOCIO
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" 20->RAGSOC
DISPLAY "Codice fiscale@16" 20->COFI
OUTPUT F_DASOCIO CODCF
OUTPUT F_DESDASOCIO 20->RAGSOC
CHECKTYPE NORMAL
END
STRING F_DESDASOCIO 50
BEGIN
PROMPT 25 5 ""
FLAGS "D"
END
NUMBER F_ASOCIO 6
BEGIN
PROMPT 2 6 "A socio "
FIELD ASOCIO
USE LF_SOCICOOP KEY 1
JOIN LF_CLIFO TO LF_SOCICOOP INTO TIPOCF=='F' CODCF==CODCF
INPUT CODCF F_ASOCIO
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" 20->RAGSOC
DISPLAY "Codice fiscale@16" 20->COFI
OUTPUT F_ASOCIO CODCF
OUTPUT F_DESASOCIO 20->RAGSOC
CHECKTYPE NORMAL
GROUP 2
END
STRING F_DESASOCIO 50
BEGIN
PROMPT 25 6 ""
FLAGS "D"
END
ENDPAGE
ENDMASK

11
co/co1700a.h Executable file
View File

@ -0,0 +1,11 @@
// campi per la maschera co1600a
#define F_DATAINI 101
#define F_DATAFIN 102
#define F_DASOCIO 103
#define F_DESDASOCIO 104
#define F_ASOCIO 105
#define F_DESASOCIO 106
#define F_CODABI 107
#define F_CODCAB 108
#define F_DESBAN 109

137
co/co1700a.rep Executable file
View File

@ -0,0 +1,137 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="co1700a" orientation="2" lpi="6">
<description>Stampa Saldi Estratto Conto per Banca</description>
<font face="Courier New" size="8" />
<section type="Head">
<field x="58" type="Testo" align="right" width="15" pattern="1" text="Nr. c&#2F;corrente">
<source>101.NUMCC</source>
</field>
<field x="75" type="Testo" align="right" width="17" pattern="1" text="Saldo a credito" />
<field x="94" type="Testo" align="right" width="17" pattern="1" text="Saldo a debito">
<source>Saldo a debito</source>
</field>
<field x="112" type="Testo" width="50" pattern="1" text="Banca &#2F; dipendenza">
<source>102.S0</source>
</field>
<field border="2" y="1" type="Linea" width="170" height="0" pattern="1" />
<field x="2" type="Testo" width="54" id="101" pattern="1" text="Socio">
<source>101.CODCF</source>
</field>
</section>
<section type="Head" level="1">
<field x="61" type="Testo" valign="center" align="center" width="60" height="2" pattern="1" text="STAMPA SALDI ESTRATTO CONTO PER BANCA">
<font face="Courier New" bold="1" size="14" />
</field>
<field x="157.78" y="0.12" type="Testo" width="5" pattern="1" text="Pag." />
<field x="163.78" y="0.12" type="Numero" align="right" width="5" pattern="1" text="#####">
<source>#REPORT.PAGE</source>
</field>
<field border="2" y="2" type="Linea" width="170" height="0" pattern="1" />
<field x="3" y="3" type="Testo" width="6" pattern="1" text="Ditta" />
<field x="10" y="3" type="Stringa" width="60" pattern="1">
<source>#SYSTEM.RAGSOC</source>
</field>
<field x="3" y="4" type="Testo" valign="bottom" width="12" pattern="1" text="Dalla data" />
<field x="16" y="4" type="Data" valign="bottom" align="right" width="15" pattern="1">
<source>#DATAINI</source>
</field>
<field x="32" y="4" type="Testo" valign="bottom" align="center" width="12" pattern="1" text="alla data" />
<field x="45" y="4" type="Data" valign="bottom" align="right" width="15" pattern="1">
<source>#DATAFIN</source>
</field>
<field border="2" y="6" type="Linea" width="170" height="0" pattern="1" />
</section>
<section type="Head" level="2" page_break="1">
<groupby>CLIFO.CODABI+CLIFO.CODCAB</groupby>
<prescript description="H2 PRESCRIPT">MESSAGE RESET,F2.101
MESSAGE RESET,F2.102</prescript>
<field border="2" y="1.25" type="Linea" width="170" height="0" pattern="1" />
<field x="4" type="Stringa" width="120" id="106" pattern="1">
<font face="Courier New" bold="1" size="8" />
<source>CLIFO.CODABI+' '+CLIFO.CODCAB+' '+101@.S0+' '+102@.S0</source>
<prescript description="H2.106 PRESCRIPT">#THIS @
"F3.106" !</prescript>
</field>
</section>
<section type="Head" level="3">
<groupby>DOC.TIPOCF+DOC.CODCF</groupby>
<prescript description="H3 PRESCRIPT">MESSAGE RESET,F3.103
MESSAGE RESET,F3.104
MESSAGE RESET,F3.105</prescript>
</section>
<section type="Body" />
<section type="Body" level="1" hidden="1">
<field x="3.5" type="Numero" align="right" width="3" id="101" pattern="1">
<source>DOC.CODCF</source>
<prescript description="B1.101 PRESCRIPT">#THIS @ \ leggo il valore attuale
"F3.101" ! \ lo scrivo nel riepilogo</prescript>
</field>
<field x="7.5" type="Stringa" dynamic_height="1" width="25" height="2" id="102" pattern="1">
<source>TRIM(20.RAGSOC[1,30])+" "+TRIM(20.RAGSOC[31,50])</source>
<prescript description="B1.102 PRESCRIPT">#THIS @
"F3.102" !</prescript>
</field>
<field x="35.5" type="Stringa" align="right" width="15" id="103" pattern="1">
<source>CLIFO.IBAN</source>
<alt_source>CLIFO.NUMCC</alt_source>
<prescript description="B1.103 PRESCRIPT">#THIS @
"F3.103" !</prescript>
</field>
<field x="53.5" type="Prezzo" 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" @
"F3.104" \ lo devo mettere nella coda del gruppo
ELSE \ se non &#E8; un conferimento
"DOC.IMPONIBILI" @
-1 * \ gli cambio segno
"F3.104" \ lo metto nella coda del gruppo
THEN
+! \ lo sommo</prescript>
</field>
<field x="53.5" y="1" type="Prezzo" align="right" width="15" id="105" pattern="1" text="###.###.###,@@">
<prescript description="B1.105 PRESCRIPT">"DOC.TOTRITACC" @
"F3.104" \ lo metto nella coda del gruppo
+! \ lo sommo</prescript>
</field>
</section>
<section type="Foot" />
<section type="Foot" level="1" />
<section type="Foot" level="2">
<field border="2" x="-0.04" y="0.25" type="Linea" width="170" height="0" pattern="1" />
<field x="54.96" y="1.25" type="Testo" width="15" pattern="1" text="TOTALE" />
<field x="75" y="1.25" type="Valuta" align="right" width="17" id="101" pattern="1" hide_zero="1" text="###.###.###,@@" />
<field x="94" y="1.25" type="Valuta" align="right" width="17" id="102" pattern="1" hide_zero="1" text="###.###.###,@@" />
</section>
<section type="Foot" level="3">
<field x="0.75" y="-0.13" type="Numero" align="right" width="3" id="101" pattern="1" />
<field x="4.75" y="-0.13" type="Stringa" width="49" id="102" pattern="1" />
<field x="55.75" y="-0.13" type="Stringa" align="right" width="15" id="103" pattern="1" />
<field x="75" y="-0.13" type="Valuta" align="right" width="17" id="104" pattern="1" hide_zero="1" text="###.###.###,@@">
<prescript description="F3.104 PRESCRIPT">#THIS @ \ leggo il valore attuale
DUP \ lo duplico
0 &#3E;= IF \ se &#E8; maggiore di zero
"0" "F3.105" ! \ scrivo 0 in saldo a debito
ELSE
-1 * \ canbio segno al valore attuale
"F3.105" ! \ lo scrivo in saldo a debito
0 "F3.104" ! \ scrivo 0 in saldo a credito
THEN</prescript>
<postscript description="F3.104 POSTSCRIPT">MESSAGE ADD,F2.101</postscript>
</field>
<field x="94" y="-0.13" type="Valuta" align="right" width="17" id="105" pattern="1" hide_zero="1" text="###.###.###,@@">
<postscript description="F3.105 POSTSCRIPT">MESSAGE ADD,F2.102</postscript>
</field>
<field x="112" y="-0.13" type="Stringa" width="50" id="106" pattern="1" />
</section>
<sql>USE DOC
KEY 2
SELECT BETWEEN(DATADOC,#DATAINI,#DATAFIN)&#26;&#26;((#CODABI=="")||(CLIFO.CODABI==#CODABI))&#26;&#26;((#CODCAB=="")||(CLIFO.CODCAB==#CODCAB))
BY 20.CODABI 20.CODCAB TIPOCF CODCF
JOIN CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN %BAN TO CLIFO ALIAS 101 INTO CODTAB==CODABI
JOIN %BAN TO CLIFO ALIAS 102 INTO CODTAB==CODABI+CODCAB
FROM TIPOCF='F' CODCF=#DASOCIO
TO TIPOCF='F' CODCF=#ASOCIO
</sql>
</report>

137
co/co1700a.uml Executable file
View File

@ -0,0 +1,137 @@
#include "co1600a.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Stampa saldi estratto conto" 0 -1 0 19
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 1 "Selezione periodo"
END
DATE F_DATAINI
BEGIN
PROMPT 2 2 "Data iniziale "
FIELD DATAINI
CHECKTYPE REQUIRED
END
DATE F_DATAFIN
BEGIN
PROMPT 37 2 "Data fin. "
FIELD DATAFIN
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 4 "Selezione soci"
END
NUMBER F_DASOCIO 6
BEGIN
PROMPT 2 5 "Da socio "
FIELD DASOCIO
USE LF_SOCICOOP KEY 1
JOIN LF_CLIFO TO LF_SOCICOOP INTO TIPOCF=='F' CODCF==CODCF
INPUT CODCF F_DASOCIO
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" 20->RAGSOC
DISPLAY "Codice fiscale@16" 20->COFI
OUTPUT F_DASOCIO CODCF
OUTPUT F_DESDASOCIO 20->RAGSOC
CHECKTYPE NORMAL
END
STRING F_DESDASOCIO 50
BEGIN
PROMPT 25 5 ""
FLAGS "D"
END
NUMBER F_ASOCIO 6
BEGIN
PROMPT 2 6 "A socio "
FIELD ASOCIO
USE LF_SOCICOOP KEY 1
JOIN LF_CLIFO TO LF_SOCICOOP INTO TIPOCF=='F' CODCF==CODCF
INPUT CODCF F_ASOCIO
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" 20->RAGSOC
DISPLAY "Codice fiscale@16" 20->COFI
OUTPUT F_ASOCIO CODCF
OUTPUT F_DESASOCIO 20->RAGSOC
CHECKTYPE NORMAL
GROUP 2
END
STRING F_DESASOCIO 50
BEGIN
PROMPT 25 6 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 8 "Selezione banca"
END
STRING F_CODABI 5
BEGIN
PROMPT 2 9 "Banca d'appoggio "
FIELD CODABI
FLAGS "Z"
USE %BAN SELECT CODTAB ?= "?????"
INPUT CODTAB F_CODABI
DISPLAY "Codice ABI" CODTAB[1,5]
DISPLAY "Denominazione@50" S0
OUTPUT F_CODABI CODTAB[1,5]
HELP "Codice ABI banca del C/F"
CHECKTYPE NORMAL
END
STRING F_CODCAB 5
BEGIN
PROMPT 28 9 ""
FIELD CODCAB
FLAGS "Z"
USE %BAN SELECT CODTAB ?= "??????????"
INPUT CODTAB[1,5] F_CODABI
INPUT CODTAB[6,10] F_CODCAB
DISPLAY "Codice ABI" CODTAB[1,5]
DISPLAY "Codice CAB" CODTAB[6,10]
DISPLAY "Denominazione@50" S0
OUTPUT F_CODABI CODTAB[1,5]
OUTPUT F_CODCAB CODTAB[6,10]
OUTPUT F_DESBAN S0
HELP "Codice CAB banca del C/F"
CHECKTYPE NORMAL
END
STRING F_DESBAN 50 37
BEGIN
PROMPT 37 9 ""
USE %BAN KEY 2 SELECT CODTAB ?= "??????????"
INPUT S0 F_DESBAN
DISPLAY "Denominazione@50" S0
DISPLAY "Codice ABI" CODTAB[1,5]
DISPLAY "Codice CAB" CODTAB[6,10]
COPY OUTPUT F_CODCAB
END
ENDPAGE
ENDMASK

31
co/cofrd.txt Executable file
View File

@ -0,0 +1,31 @@
[Header]
Version=199519
File=4
Fields=COD,3|CODTAB,25|S0,70|S1,70|S2,70|S3,70|S4,20|S5,20|S6,5|S7,5
Fields=S8,5|S9,5|S10,5|S11,5|I0,7|I1,7|I2,7|I3,7|I4,7|I5,7
Fields=I6,7|I7,7|I8,7|I9,7|I10,7|I11,7|I12,7|I13,7|I14,7|R0,18
Fields=R1,18|R2,18|R3,18|R4,18|R5,18|R6,18|R7,18|R8,18|R9,18|R10,18
Fields=R11,18|R12,18|R13,18|R14,18|R15,18|R16,18|R17,18|R18,18|R19,18|R20,18
Fields=R21,18|R22,18|R23,18|R24,18|R25,18|D0,10|D1,10|D2,10|D3,10|D4,10
Fields=B0,1|B1,1|B2,1|B3,1|B4,1|B5,1|B6,1|B7,1|B8,1|B9,1
Fields=B10,1|B11,1|B12,1|B13,1|B14,1|B15,1|FPC,1
[Data]
FRD|NETCRED|Importo netto a credito conferimenti|TOTMER+SPESMER|||||||||||||||||||||||||||||||||||||||||||||||||||||||||X| |||||||||||||||
FRD|TOTLORDCON|Totali lordi conferimento|SOMMA("IMPCNN","TIPO()=='M'")|||||||||||||||||||||||||||||||||||||||||||||||||||||||||X| | | | | | | | | | | | | | | |
FRD|TOTPNS|Totale prestazioni non scontate|SOMMA("IMPORTO()","TIPO()=='P'")||||||||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|||||||X| | | | | | | | | |||||||
FRR|IMPCLN|Importo riga lordo non scontato - per conferimento|IF(NUM(CODAGG1=="X");PREZZOLN;IMPLN)||||||||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|||||||X| | | | | | | | | | | | | | | |
FRR|IMPCLS|Importo riga lordo scontato - per conferimenti|IF(NUM(CODAGG1=="X");PREZZOLS;IMPLS)||||||||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|||||||X| | | | | | | | | | | | | | | |
FRR|IMPCNN|Importo riga netto non scontato - per conferimenti|IF(NUM(CODAGG1=="X");PREZZONN;IMPNN)||||||||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|||||||X| | | | | | | | | | | | | | | |
FRR|IMPCNS|Importo riga netto - per conferimenti|IF(NUM(CODAGG1=="X");PREZZONS;IMPNS)||||||||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|||||||X| | | | | | | | | | | | | | | |
FRR|SCONTOCONF|Calcolo sconto per conferimenti|IMPCLN-IMPCLS|||||||||||||||||||||||||||||||||||||||||||||||||||||||||X| | | | | | | | | |||||||
FRR|SCONTONORM|Sconto di riga normale|SCONTO()|||||||||||||||||||||||||||||||||||||||||||||||||||||||||X| | | | | | | | | |||||||
FRR|SCONTOR|Sconto riga|IF(NUM(CODAGG1=="X");SCONTOCONF;SCONTONORM)||###.###.###.##@,@@@||||||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|||||||X| | | | | | | | | | | | | | | |
NUM|CONF|Conferimenti soci cooperative||CONF|||||A||||||5||||||||||||||||||||||||||||||||||||||||||||| |X|X| |X| | | | | | | | | | | |
NUM|PRES|Prestazioni a soci cooperative||PRES|||||||||||6||||||||||||||||||||||||||||||||||||||||||||| |X| | | | | | | | | | | | | | |
TIP|AF1|Autofattura Allevamento||129 1 159 1||FATACQ|vefatBMP||||||||2||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | | ||||||
TIP|AF2|Autofattura Pesca||129 1 159 1||FATACQ|VEFATBMP||||||||2||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | | ||||||
TIP|CONF|Conferimento soci cooperative||||conferim|||||||||5|||||||||||||||||||||||||||||||||||||||||||||X| | | | | | | | | | | | | | | |
TIP|F01|Fattura Agricoltura||129 1 159 1||FATTURAC|fatPT|030|||||||2||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000||||||| | |X| | | |X| | | | ||||||
TIP|F02|Fattura pesca||129 1 159 1||FATTURAC|FatPT|030|||||||2||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000||||||| | |X| | | | | | | | ||||||
TIP|PRES|Prestazione a socio coop||||prestazi|||||||||6||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | | | | | | | |

View File

@ -1,5 +1,7 @@
#include <config.h>
#include "../ve/velib.h"
#include "colib.h"
#include "socicoop.h"
#include "mercaticoop.h"

View File

@ -45,4 +45,6 @@ Module = 29
Flags = ""
Item_01 = "Stampa libro soci", "ba8 -4 co1100a", "F"
Item_02 = "Stampa conferimenti", "ve1 -3 co1200a", "F"
Item_03 = "Stampa estratto conto", "ve1 -3 co1300a", "F"
Item_03 = "Stampa estratto conto", "co1 -2", "F"
Item_04 = "Stampa saldi estratto conto", "ve1 -3 co1600a", "F"
Item_05 = "Stampa saldi estratto conto per banca", "ve1 -3 co1700a", "F"

View File

@ -16,6 +16,192 @@
#include "db0500a.h"
class TMov_mask : public TAutomask
{
TArticolo _art;
TSheet_field * _sh;
TAssoc_array _costs;
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TAssoc_array & costs() { return _costs;}
TMov_mask(const char * codice, TSheet_field * s) : TAutomask("db0500d"), _art(codice), _sh(s) {}
virtual ~TMov_mask() { }
};
bool TMov_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case F_TIPOVAL:
if (e == fe_init || e == fe_modify)
{
TDistinta_tree d;
const int tipo = o.mask().get_int(F_TIPOVAL);
real val;
real cos;
real lav;
_costs.destroy();
d.set_root(_sh->mask().get(F_CODICE));
switch (tipo)
{
case 1 : // Costo
case 2 : // Complessivo
{
const int rows = _sh->items();
for (int i = 0; i < rows; i++)
{
TToken_string row = _sh->row(i);
const TString4 tipo = row.get(_sh->cid2index(F_TIPOCOMP));
if (tipo == "A")
{
TArticolo comp(row.get(_sh->cid2index(F_CODART)));
real qta(row.get(_sh->cid2index(F_EXPR)));
real calo = comp.get_real(ANAMAG_USER1);
if (calo == ZERO) calo = UNO;
TString80 strprezzo("#"); strprezzo << comp.codice();
real prezzo;
if (d.exist(strprezzo))
{
prezzo = d.get_real(strprezzo);
_costs.add(comp.codice(), prezzo);
}
else
prezzo = comp.get_real(ANAMAG_ULTCOS1);
cos += (prezzo * calo) * qta;
}
else
if (tipo == "L")
{
TLavorazione lab(row.get(_sh->cid2index(F_CODLAV)));
real qta(row.get(_sh->cid2index(F_EXPR)));
lav += (lab.prezzo() * qta);
}
}
lav *= (CENTO - o.mask().get_real(F_SCONTO))/CENTO;
cos += lav;
val = cos;
if (tipo == 2)
val *= (UNO + _art.get_real(ANAMAG_PERCRIC)/CENTO);
}
break;
case 3 : // Peso + Mandopera a peso
{
real peso;
real val_mat;
real val_lav;
const int rows = _sh->items();
for (int i = 0; i < rows; i++)
{
TToken_string row = _sh->row(i);
const TString4 tipo = row.get(_sh->cid2index(F_TIPOCOMP));
if (tipo == "A")
{
TArticolo comp(row.get(_sh->cid2index(F_CODART)));
const TString8 um(row.get(_sh->cid2index(F_UMEXPR)));
real qta(row.get(_sh->cid2index(F_EXPR)));
real calo = comp.get_real(ANAMAG_USER1);
if (calo == ZERO) calo = UNO;
TString80 strprezzo("#"); strprezzo << comp.codice();
real prezzo;
if (d.exist(strprezzo))
{
prezzo = d.get_real(strprezzo);
_costs.add(comp.codice(), prezzo);
}
else
prezzo = comp.get_real(ANAMAG_ULTCOS1);
val_mat += (prezzo * calo) * qta;
if (um.starts_with("GR"))
peso += qta;
}
else
if (tipo == "L")
{
TLavorazione lav(row.get(_sh->cid2index(F_CODLAV)));
val_lav += lav.prezzo();
}
}
val = val_mat + val_lav * peso * (CENTO - o.mask().get_real(F_SCONTO))/CENTO;
cos = val ;
val = cos * (CENTO + _art.get_real(ANAMAG_PERCRIC))/CENTO;
}
break;
case 4 : // Peso + Mandopera a prezzo
{
real val_mat;
real val_lav;
const int rows = _sh->items();
for (int i = 0; i < rows; i++)
{
TToken_string row = _sh->row(i);
const TString4 tipo = row.get(_sh->cid2index(F_TIPOCOMP));
if (tipo == "A")
{
TArticolo comp(row.get(_sh->cid2index(F_CODART)));
real qta(row.get(_sh->cid2index(F_EXPR)));
real calo = comp.get_real(ANAMAG_USER1);
if (calo == ZERO) calo = UNO;
TString80 strprezzo("#"); strprezzo << comp.codice();
real prezzo;
if (d.exist(strprezzo))
{
prezzo = d.get_real(strprezzo);
_costs.add(comp.codice(), prezzo);
}
else
prezzo = comp.get_real(ANAMAG_ULTCOS1);
val_mat += (prezzo * calo) * qta;
}
else
if (tipo == "L")
{
TLavorazione lav(row.get(_sh->cid2index(F_CODLAV)));
real qta(row.get(_sh->cid2index(F_EXPR)));
val_lav += lav.prezzo() * qta;
}
}
val = val_mat + val_lav * (CENTO - o.mask().get_real(F_SCONTO))/CENTO;
cos = val ;
val = cos * (CENTO + _art.get_real(ANAMAG_PERCRIC))/CENTO;
}
break;
default:
break;
}
o.mask().set(F_PREZZOM, cos.string());
o.mask().set(F_PREZZOV, val.string());
}
break;
default:
break;
}
return true;
}
///////////////////////////////////////////////////////////
// TMov_mask
///////////////////////////////////////////////////////////
@ -279,6 +465,7 @@ protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void create_browse1(TEdit_field& kfld, int level, short key_id) const;
void create_browse2(TEdit_field& kfld, int level, short key_id, short des_id) const ;
bool ask_new_code(const TCodice_articolo& oldcode, TCodice_articolo& newcode) const;
bool are_similar(const TCodice_articolo& oldcode, const TCodice_articolo& newcode) const;
@ -329,6 +516,39 @@ void TQuery_mask::create_browse1(TEdit_field& kfld, int level, short key_id) con
xvt_fsys_removefile(tmp);
}
void TQuery_mask::create_browse2(TEdit_field& kfld, int level, short key_id, short des_id) const
{
TFilename tmp; tmp.temp();
ofstream out(tmp);
out << "USE GCA KE 2 SELECT CODTAB[1,1]=='" << level << "'" << endl; //cerca per descrizione
const short id = des_id + level - 1;
out << "IN S0 " << id << endl;
out << "DI \"" << TR("Descrizione") << "@50\" S0" << endl;
const TString& prompt = _livart.name(level);
out << "DI \"" << prompt;
const int length = _livart.code_length(level);
if (length > prompt.len())
out << '@' << length;
out << "\" CODTAB[2,0]" << endl;
out << "CO OU " << (key_id + level -1) << endl;
if (level == 1)
out << "CH RE" << endl;
else
out << "CH NO" << endl;
out << "EN" << endl;
out.close();
TScanner scan(tmp);
while (scan.pop() != "EN")
kfld.parse_item(scan);
xvt_fsys_removefile(tmp);
}
bool TQuery_mask::ask_new_code(const TCodice_articolo& oldcode, TCodice_articolo& newcode) const
{
if (newcode.blank())
@ -344,7 +564,8 @@ bool TQuery_mask::ask_new_code(const TCodice_articolo& oldcode, TCodice_articolo
if (last_level > 0)
{
for (int i = 1; i <= last_level; i++) //cicla su tutti i livelli del codart abilitati
int i = 0;
for (i = 1; i <= last_level; i++) //cicla su tutti i livelli del codart abilitati
{
const TString& picture = _livart.picture(i);
for (int y = 0; y < 2; y++)
@ -365,6 +586,12 @@ bool TQuery_mask::ask_new_code(const TCodice_articolo& oldcode, TCodice_articolo
tab0 += picture.len()+3;
}
for (i = 1; i <= last_level; i++)
{
TEdit_field& dfld = m.add_string(300 + i, 0, "", 200, 2, 50, "", 50);
create_browse2(dfld, i, 201, 301);
}
}
else
{
@ -1385,6 +1612,8 @@ bool TDistinta_mask::on_field_event(TOperable_field& o, TField_event e, long jol
{
if (app().has_module(MGAUT))
{
cache().destroy(LF_DIST);
cache().destroy(LF_RDIST);
TSheet_field& sf = sfield(F_SHEET);
TMov_mask mov(get(F_CODICE), &sf);
TMagazzini m;
@ -1408,9 +1637,22 @@ bool TDistinta_mask::on_field_event(TOperable_field& o, TField_event e, long jol
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)
{
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");
@ -1419,6 +1661,9 @@ bool TDistinta_mask::on_field_event(TOperable_field& o, TField_event e, long jol
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));
@ -1434,6 +1679,7 @@ bool TDistinta_mask::on_field_event(TOperable_field& o, TField_event e, long jol
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));
@ -1443,6 +1689,23 @@ bool TDistinta_mask::on_field_event(TOperable_field& o, TField_event e, long jol
umart.put(UMART_PREZZO, prezzo);
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"))
{
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();
}
}
}
}
@ -1643,7 +1906,7 @@ int TDistinta_app::write(const TMask& m)
{
parms2rel(m);
int err = TRelation_application::write(m);
if (err == NOERR)
if (err == NOERR && get_relation()->lfile().get_bool("VIRTUALE"))
{
TSheet_field& f = m.sfield(F_UNITA); // prende lo sheet delle unità di misura
f.record()->renum_key(UMART_CODART, m.get(F_CODICE));
@ -1656,7 +1919,7 @@ int TDistinta_app::rewrite(const TMask& m)
{
parms2rel(m);
int err = TRelation_application::rewrite(m);
if (err == NOERR)
if (err == NOERR && get_relation()->lfile().get_bool("VIRTUALE"))
{
TSheet_field& f= m.sfield(F_UNITA); // prende lo sheet delle unità di misura
f.record()->renum_key(UMART_CODART, m.get(F_CODICE));

View File

@ -106,4 +106,6 @@
#define F_TIPOVAL 130
#define F_PREZZOV 131
#define F_SCONTO 132
#define F_NUMDOC 133
#define F_DATADOC 134
#endif

View File

@ -1,6 +1,6 @@
#include "db0500a.h"
PAGE "Movimenti" -1 -1 80 15
PAGE "Movimenti" -1 -1 80 19
DATE F_DATAREG
BEGIN
@ -104,6 +104,17 @@ BEGIN
FLAG "U"
END
STRING F_NUMDOC 7
BEGIN
PROMPT 2 15 "Documento numero "
END
DATE F_DATADOC
BEGIN
PROMPT 45 15 "Del "
FLAG "U"
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""

View File

@ -1464,6 +1464,29 @@ const TString& TDistinta_tree::get_string(const char* var)
return EMPTY_STRING;
}
bool TDistinta_tree::exist(const char* var)
{
for (int s = 0; s < _stack.count(); s++)
{
TAssoc_array& a = (TAssoc_array&)_stack.peek(s);
const TObject* val = a.objptr(var);
if (val)
return true;
else
{
val = a.objptr("_GHOST");
if (val == NULL) // Non sono ghost per cui non posso andar oltre
break;
}
}
const TObject* val = _globals.objptr(var);
if (val && val->class_id() != CLASS_STRING)
return true;
return false;
}
const real& TDistinta_tree::get_real(const char* var)
{
for (int s = 0; s < _stack.count(); s++)

View File

@ -275,9 +275,6 @@ protected:
// int build_children_pointers(const TCodice_articolo& father, TPointer_array& children) const;
int build_children_list(const TCodice_articolo& father, TArray& children) const;
const TString& get_string(const char* var);
const real& get_real(const char* var);
void evaluate(TDistinta_expr& e);
real evaluate_numexpr(const char* str);
void evaluate_strexpr(const char* str, TString& res);
@ -294,6 +291,10 @@ protected: // TTree
TObject * global_default_real(const char* name);
public:
const TString& get_string(const char* var);
const real& get_real(const char* var);
bool exist(const char* var);
TTypeexp get_var_type(const char* var);
static TLavorazione * find_labor(TRiga_esplosione *l);
virtual bool goto_root();

View File

@ -865,14 +865,17 @@ void TF4_sender::add_erario(TRecordset& riga, real& saldo_tot, real& credito_tot
set("CodiceTributo", tributo);
TString16 rif(riga.get("RATEAZIONE").as_string());
rif << riga.get("ANNO").as_string();
if (riga.get("ANNO").as_int() > 0)
rif << riga.get("ANNO").as_string();
if (rif.blank())
rif ="00000000";
set("RiferimentiTributo", rif);
const real d = riga.get("IMPORTODEB").as_real();
set("ImportoDebito", d);
debito += d;
const real c = riga.get("IMPORTOCRED").as_real();
const real c = riga.get("IMPORTOCRE").as_real();
set("ImportoCredito", c);
credito += c;
@ -922,7 +925,7 @@ void TF4_sender::add_inps(TRecordset& riga, real& saldo_tot, real& credito_tot)
set("ImportoDebito", d);
debito += d;
const real c = riga.get("IMPORTOCRED").as_real();
const real c = riga.get("IMPORTOCRE").as_real();
set("ImportoCredito", c);
credito += c;
@ -969,14 +972,17 @@ void TF4_sender::add_regioni(TRecordset& riga, real& saldo_tot, real& credito_to
TString16 rif(riga.get("RATEAZIONE").as_string());
rif << riga.get("ANNO").as_string();
if (riga.get("ANNO").as_int() > 0)
rif << riga.get("ANNO").as_string();
if (rif.blank())
rif ="00000000";
set("RiferimentiTributo", rif);
const real d = riga.get("IMPORTODEB").as_real();
set("ImportoDebito", d);
debito += d;
const real c = riga.get("IMPORTOCRED").as_real();
const real c = riga.get("IMPORTOCRE").as_real();
set("ImportoCredito", c);
credito += c;
@ -1022,14 +1028,17 @@ void TF4_sender::add_ici(TRecordset& riga, real& saldo_tot, real& credito_tot)
TString16 rif(riga.get("RATEAZIONE").as_string());
rif << riga.get("ANNO").as_string();
if (riga.get("ANNO").as_int() > 0)
rif << riga.get("ANNO").as_string();
if (rif.blank())
rif ="00000000";
set("RiferimentiTributo", rif);
const real d = riga.get("IMPORTODEB").as_real();
set("ImportoDebito", d);
debito += d;
const real c = riga.get("IMPORTOCRED").as_real();
const real c = riga.get("IMPORTOCRE").as_real();
set("ImportoCredito", c);
credito += c;
@ -1087,7 +1096,7 @@ void TF4_sender::add_inail(TRecordset& riga, real& saldo_tot, real& credito_tot)
set("ImportoDebito", d);
debito += d;
const real c = riga.get("IMPORTOCRED").as_real();
const real c = riga.get("IMPORTOCRE").as_real();
set("ImportoCredito", c);
credito += c;

View File

@ -936,18 +936,19 @@ TCodesym TExpression::__gettoken()
_tok[i++] = *(_s++);
while (isalnum(*_s) || (*_s == '-') || (*_s == '[') ||
if (sym == _variable && *_s == '-')
{
_tok[i++] = *(_s++);
if (*_s == '>' || isdigit(*_s))
_tok[i++] = *(_s++);
else
return _invalid; // Non e' una -> (freccia)
}
while (isalnum(*_s) || (*_s == '[') ||
(*_s == ':') || (*_s == '_') || (*_s == '.') ||
(square_bracket && (*_s == ',' || *_s == ']'))
)
{
if (*_s == '-')
{
if (_s[1] != '>')
break; // Non e' una -> (freccia)
_tok[i++] = *(_s++);
sym = _variable;
} else
if (*_s == '[')
{
sym = _variable;
@ -1303,4 +1304,4 @@ bool TExpression::compile(const TString& expression, TTypeexp type)
const char* TExpression::last_token() const
{
return _tok;
}
}

View File

@ -4148,11 +4148,7 @@ void TRecfield::set(int from, int to)
if (nf == FIELDERR)
{
if (_rec->exist(_name))
_subfield = _name.get_buffer();
else
NFCHECK("File n. %d unknown field %s", _rec->num(), (const char*)_name);
_subfield = _name;
_p = _rec->string();
_len = 0;
_dec = 0;
@ -4201,7 +4197,7 @@ TRecfield::TRecfield(TRectype& rec, const char* name, int from, int to)
void TRecfield::put_subfield(const char* s)
{
if (strcmp(_name, _subfield) == 0)
if (_name == _subfield)
return;
const TString& str = _rec->get(_name);
int p = str.find(_subfield);
@ -4312,7 +4308,7 @@ void TRecfield::get_subfield(TString& s) const
{
const TString& str = _rec->get(_name);
if (strcmp(_name, _subfield) == 0)
if (_name == _subfield)
s = str;
else
{

View File

@ -205,6 +205,16 @@ void TMask::read_mask(
}
}
}
TAssoc_array & defs = ini.list_variables("defaults");
FOR_EACH_ASSOC_STRING(defs, obj, key, str)
{
short id = atoi(key);
const int pos = id2pos(id);
if (pos >= 0 && fld(pos).is_operable())
fld(pos).set_default(str);
}
}
}
}
@ -971,11 +981,8 @@ bool TMask::on_key(
break;
if (f.is_sheet())
{
TSheet_field& s = (TSheet_field&)f;
const int newrow = s.append() || s.empty() ? -1 : ( _focus == fire ? s.selected() + 1: 0);
notify_focus_field(s.dlg());
s.insert(newrow, true, true);
send_key(key, f.dlg());
break;
}
}
}
@ -2495,6 +2502,22 @@ bool TMask::kill_profile(int num)
return ok;
}
void TMask::load_defaults()
{
for (int pos = 0; pos < fields(); pos++)
{
TMask_field& f = fld(pos);
if (f.is_loadable())
{
const TString & def = f.get_default();
if (def.full())
f.set(def);
}
}
}
const char* TMask::get_caption(TString& str) const
{
char* title = str.get_buffer(128);

View File

@ -403,6 +403,9 @@ public:
// @cmember Elimina il profilo <p num>
bool kill_profile(int num);
// @cmember Carica il defaults dei campi
virtual void load_defaults();
// @cmember Ritorna il primo campo dirty
short dirty() const;

View File

@ -517,6 +517,42 @@ const TString& TMask_field::get_default() const
return EMPTY_STRING;
}
const TString & TMask_field::evaluate_field(short id) const
{
if (id == 0)
return get();
const TMask* m = &mask();
if (id < 0)
{
TSheet_field* sh = m->get_sheet();
if (sh != NULL)
{
m = &sh->mask();
id = -id;
}
}
const int pos = m->id2pos(id);
if (pos >= 0)
return m->fld(pos).get();
return EMPTY_STRING;
}
const TString & TMask_field::evaluate_field(const char * s) const
{
if (s && *s)
{
if (s[0] == '#')
s++;
const short id = atoi(s);
return evaluate_field(id);
}
return EMPTY_STRING;
}
// @doc EXTERNAL
// @mfunc Verifica se il campo deve essere sottoposto a check
@ -3493,7 +3529,10 @@ void TEdit_field::create(WINDOW parent)
_ctl_data._flags << 'B';
if (_ctl_data._prompt.find("@g") >= 0 || _ctl_data._prompt.find("@G") >= 0)
{
_ctl_data._flags << '{';
_ctl_data._x += len;
}
if (_ctl_data._prompt.find("@b") >= 0 || _ctl_data._prompt.find("@B") >= 0)
_ctl_data._flags << '}';

View File

@ -350,6 +350,10 @@ public:
// @cmember Ritorna il default del campo
virtual const TString& get_default() const;
// @cmember Valuta come id di un campo <id> e ne ritorne il valore
const TString & evaluate_field(short id) const ;
// @cmember Valuta come id di un campo <s> e ne ritorne il valore
const TString & evaluate_field(const char * s) const ;
// @cmember Setta il default del campo
virtual void set_default(const char*);
@ -1700,3 +1704,4 @@ public:
};
#endif // __MASKFLD_H

View File

@ -279,6 +279,8 @@ public:
void delete_column(const int col) const;
// @cmember Permette di attivare/ disattivare l'auto append
void set_auto_append(bool on) { _auto_append = on;}
// @cmember Permette di testare l'auto append
bool auto_append() const { return _auto_append;}
bool exist_column(const int col) const { return find_column(col) != NULL; }
// @cmember Sposta la colonna dalla posizione <p fromindex> alla posizione
// <p toindex>
@ -366,6 +368,8 @@ public:
// @cmember Setta il membro <p _notify> al valore <p n>
void set_notify(SPREADSHEET_NOTIFY n)
{ _notify = n; }
// @cmember aggiunge una riga
bool TSpreadsheet::add_row_auto();
// @cmember Costruttore
TSpreadsheet(WINDOW parent, short dlg, short x, short y, short dx, short dy, const char* maskname, int maskno, const char* head, TSheet_field* owner);
@ -1184,10 +1188,10 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
case XIE_BUTTON:
if (_check_enabled)
{
on_idle(); // Termina tutti gli eventuali update in corso
if (xiev->v.xi_obj->type == XIT_CELL) // Bottone della cella
{
on_idle(); // Termina tutti gli eventuali update in corso
XI_CELL_DATA& cell = xiev->v.xi_obj->v.cell;
int num;
XI_OBJ** column = xi_get_member_list(_obj, &num);
@ -1202,27 +1206,7 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
}
}
else
{
if (xiev->v.xi_obj->type == XIT_LIST) // Bottone dello sheet
{
if (test_focus_change() && active())
{
int rec = -1;
_cell_dirty = FALSE;
if (items() > 0 && !owner().append())
{
// XI_OBJ* itf = get_interface();
if (owner().mask().focus_field().dlg() == id())
rec = _cur_rec + 1;
else
rec = 0;
}
insert(rec, true, true);
owner().mask().notify_focus_field(id());
}
}
}
add_row_auto();
}
break;
case XIE_SELECT:
@ -1502,7 +1486,7 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
{
const clock_t delay = clock() - digit_timer;
if (delay <= 60)
k = K_CTRL+'+';
k = K_CTRL + '+'; // imedisce ulteiori elaborazioni
}
}
@ -1603,25 +1587,8 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
}
break;
case K_CTRL + '+': // ********* insert line
if (test_focus_change())
{
int rec = -1;
_cell_dirty = _row_dirty = FALSE;
if (items() > 0 && !owner().append())
{
get_interface(); // verificare
if (owner().mask().focus_field().dlg() == id())
rec = _cur_rec + 1;
else
rec = 0;
}
insert(rec, TRUE, TRUE);
owner().mask().notify_focus_field(id());
refused = TRUE;
}
else
refused = true;
add_row_auto();
refused = true;
break;
case K_CTRL + 'A':
{
@ -1748,11 +1715,13 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
{
const KEY k = e_char_to_key(&xiev->v.xvte);
if (_auto_append && k == K_DOWN && _cur_row == items() - 1 && test_focus_change())
owner().mask().send_key(K_CTRL + '+', 0);
switch (k)
{
case K_DOWN:
if (_auto_append && _cur_row == items() - 1)
add_row_auto();
break;
case K_ROWEDIT:
xiev->type = XIE_DBL_CELL;
xiev->v.xi_obj = NULL;
@ -1912,6 +1881,8 @@ void TSpreadsheet::on_idle()
{
const int next_row = _selection_posted;
_selection_posted = -1;
if (next_row == _cur_rec)
return ;
if (next_row < items())
select(next_row, 1, FALSE);
}
@ -2429,6 +2400,38 @@ KEY TSpreadsheet::edit(int n)
return k;
}
bool TSpreadsheet::add_row_auto()
{
bool ok = false;
if (_check_enabled)
{
on_idle(); // Termina tutti gli eventuali update in corso
if (test_focus_change() && active())
{
int rec = -1;
if (items() > 0 && !owner().append())
{
if (owner().mask().focus_field().dlg() == id())
rec = _cur_rec + 1;
else
rec = 0;
}
ok = insert(rec, true, true) >= 0;
if (ok)
{
_cell_dirty = _row_dirty = false;
owner().mask().notify_focus_field(id());
}
}
}
return ok;
}
///////////////////////////////////////////////////////////
// TSheet_field
///////////////////////////////////////////////////////////
@ -2899,17 +2902,27 @@ TMask& TSheet_field::sheet_mask() const
return s->sheet_mask();
}
TMask& TSheet_field::sheet_row_mask(int /* row */) const
{
return sheet_mask();
}
bool TSheet_field::on_hit()
{
if (!mask().is_running()) // Inizializzazione maschera
{
TSpreadsheet* s = (TSpreadsheet*)_ctl;
force_update();
if (items() > 0)
{
mask().notify_focus_field(dlg()); // Fa' credere alla maschera che ha il focus ...
select(0, -2, TRUE); // ... cosi' la set_focus_cell funziona bene
}
else
if (s->auto_append())
s->add_row_auto();
set_dirty(FALSE);
}
@ -2962,6 +2975,14 @@ bool TSheet_field::on_key(KEY k)
_ctl->event_handler(NULL, &xie);
return TRUE;
}
if ( k== K_CTRL + '+')
{
TSpreadsheet* s = (TSpreadsheet*)_ctl;
s->add_row_auto();
return true;
}
return TOperable_field::on_key(k);
}

View File

@ -179,8 +179,10 @@ public:
// @cmember Forza l'aggiornamento dei dati della riga sullo schermo
void force_update(int r = -1);
// @cmember Ritorna la maschera corrispondente ad una riga dello spreadsheet
// @cmember Ritorna la maschera corrispondente alla riga corrente dello spreadsheet
virtual TMask& sheet_mask() const;
// @cmember Ritorna la maschera corrispondente ad una riga dello spreadsheet
virtual TMask& sheet_row_mask(int row) const;
// @cmember esegue la maschera di edit dello speadsheet;
virtual KEY run_editmask(int n);
// @cmember Setta il membro <p _notify> della classe <c TSpreadsheet>

View File

@ -19,6 +19,7 @@
#define RDOC_DESCEST "DESCEST"
#define RDOC_PREZZO "PREZZO"
#define RDOC_PREZZOL "PREZZOL"
#define RDOC_RIDPREZZO "RIDPREZZO"
#define RDOC_UMQTA "UMQTA"
#define RDOC_QTA "QTA"
#define RDOC_QTAGG1 "QTAGG1"

View File

@ -499,6 +499,7 @@ void TRelation_application::insert_mode()
set_mode(MODE_INS);
r->zero(); // Azzera tutta la relazione!
_mask->load_defaults();
init_insert_mode(*_mask);
// ....possibilmente spostare questa chiamata .....

View File

@ -48,23 +48,19 @@ HIDDEN bool _expr_val(TMask_field& f, KEY)
for (int i = 0; i < e.numvar(); i++)
{
const char* s = e.varname(i);
if (s[0] != '#')
{
TString err; err << TR("Le variabili devono cominciare con #") << ": " << s << '\n' << e;
return f.error_box((const char*)err);
}
s++;
const short fldid = *s == '0' ? 0 : f.atodlg(s);
if (type == _numexpr)
{
const real r = fldid <= 0 ? f.get() : m.get(fldid);
e.setvar(i, r);
}
else
{
const TString& v = fldid <= 0 ? f.get() : m.get(fldid);
e.setvar(i, v);
}
if (type == _numexpr)
{
const real r = f.evaluate_field(s);
e.setvar(i, r);
}
else
e.setvar(i, f.evaluate_field(s));
}
return bool(e);
}
@ -532,8 +528,8 @@ HIDDEN bool _reqif_val(TMask_field& f, KEY k)
{
if (k == K_ENTER && f.empty())
{
const TMask& m = f.mask();
const int nparms = get_val_param_count();
for (int i = 0; i < nparms; i++)
{
const TString& fld = get_fld_val_param(f, i);
@ -586,14 +582,13 @@ HIDDEN bool _numcalc_val(TMask_field& f, KEY k)
for (int i = 0; i < e.numvar(); i++)
{
const char* s = e.varname(i);
if (s[0] != '#')
if (s[0] != '#')
{
TString err; err << "Cannot load variable " << s << " in " << e;
return f.error_box((const char*)err);
}
s++;
const int fldid = atoi(s);
e.setvar(i, fldid == 0 ? f.get() : f.mask().get(fldid));
e.setvar(i, f.evaluate_field(s));
}
const TString& s = e.as_string();
f.set(s);
@ -614,9 +609,7 @@ HIDDEN bool _strcalc_val(TMask_field& f, KEY k)
TString err; err << "Cannot load variable " << s << " in " << e;
return f.error_box((const char*)err);
}
s++;
const int fldid = atoi(s);
e.setvar(i, fldid == 0 ? f.get() : f.mask().get(fldid));
e.setvar(i, f.evaluate_field(s));
}
const TString& s = e.as_string();
f.set(s);
@ -630,6 +623,7 @@ HIDDEN bool _onereq_val(TMask_field& f, KEY k)
return true;
const int nparms = get_val_param_count();
for (int i = 0; i < nparms ; i++)
{
const TString& s = get_fld_val_param(f, i);
@ -1136,3 +1130,4 @@ bool validate(
return (fn >= 0 && fn < MAX_FUNC) ? _global_val_func[fn](f, k) : true;
}

View File

@ -63,20 +63,24 @@ TVariable_mask::TVariable_mask() : TMask()
}
TMask& TVariable_sheet_field::sheet_mask() const
{
return sheet_row_mask(selected());
}
TMask& TVariable_sheet_field::sheet_row_mask(int row) const
{
TMask & m = TSheet_field::sheet_mask();
const int current = selected();
if (_getmask != NULL && current >= 0 && current < items())
if (_getmask != NULL && row >= 0 && row < items())
{
TMask & vm = *_getmask(current, m);
TMask & vm = *_getmask(row, m);
vm.set_sheet((TSheet_field *) this);
return vm;
}
return m;
}
}
void TVariable_sheet_field::post_insert(int r)
{
if (!active() || _getmask == NULL || r < 0 || r >= items())

View File

@ -69,8 +69,10 @@ public:
// @cmember Funzione eseguita dopo ogni insert
virtual void post_insert(int r);
// @cmember Ritorna la maschera corrispondente ad una riga dello spreadsheet
// @cmember Ritorna la maschera corrispondente alla riga corrente dello spreadsheet
virtual TMask& sheet_mask() const;
// @cmember Ritorna la maschera corrispondente ad una riga dello spreadsheet
virtual TMask& sheet_row_mask(int row) const;
// @cmember Costruttore
TVariable_sheet_field(TMask* m) : TSheet_field(m)

View File

@ -204,6 +204,8 @@ public:
virtual word class_id() const { return CLASS_AUTO_VARIABLE_RECTYPE; }
virtual bool is_kind_of(word id) const { return id == class_id() || TVariable_rectype::is_kind_of(id); }
// @cmember Indica se esiste il campo <p fieldname>
virtual bool exist(const char* fieldname) const { return fieldname && *fieldname;}
// @cmember Distruttore
virtual ~TAuto_variable_rectype() {}

View File

@ -332,6 +332,8 @@ void TStampa_datistorici::setprint_permagazzini()
TString16 ena=((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)!='S')? "1": "0");
_form->find_field('H',odd_page,FF_FLAGGIAC).set(ena );
_form->find_field('B',odd_page,FF_FLAGGIAC).set(ena);
_form->find_field('F',last_page, 247).show(ena != "0");
_form->find_field('F',last_page, 251).show(ena != "0");
ena=((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)=='S')? "1": "0") ;
_form->find_field('H',odd_page,FF_FLAGSOTTOS).set(ena);
_form->find_field('B',odd_page,FF_FLAGSOTTOS).set(ena);
@ -499,6 +501,8 @@ void TStampa_datistorici::setprint_perarticoli()
TString16 ena = ((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)!='S')? "1": "0");
_form->find_field('H',odd_page,FF_FLAGGIAC).set(ena );
_form->find_field('B',odd_page,FF_FLAGGIAC).set(ena);
_form->find_field('F',last_page, 1647).show(ena != "0");
_form->find_field('F',last_page, 1651).show(ena != "0");
ena= ((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)=='S')? "1": "0") ;
_form->find_field('H',odd_page,FF_FLAGSOTTOS).set(ena);
_form->find_field('B',odd_page,FF_FLAGSOTTOS).set(ena);
@ -667,6 +671,8 @@ void TStampa_datistorici::setprint_perarticoli_all()
TString16 ena=((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)!='S')? "1": "0");
_form->find_field('H',odd_page,FF_FLAGGIAC).set(ena );
_form->find_field('B',odd_page,FF_FLAGGIAC).set(ena);
_form->find_field('F',last_page, 1647).show(ena != "0");
_form->find_field('F',last_page, 1651).show(ena != "0");
ena=((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)=='S')? "1": "0") ;
_form->find_field('H',odd_page,FF_FLAGSOTTOS).set(ena);
_form->find_field('B',odd_page,FF_FLAGSOTTOS).set(ena);

View File

@ -791,7 +791,6 @@ SECTION BODY ODD 0 COLUMNWISE
FIELD LF_MAG->GIAC
PICTURE "#######@,@#"
MESSAGE ADD,147
GROUP FG_RIGAVALORI
END
NUMERO 48 12
BEGIN
@ -799,16 +798,6 @@ 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
@ -2382,7 +2371,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "giac"
PROMPT 12 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,1553
MESSAGE _USER,VALIDATE_UM,1553|ADD,FL->1647
GROUP 15
END
END // tot catmerc
@ -2392,4 +2381,65 @@ END // section body, loop anamag
SECTION FOOTER ODD 2
END // fine footersection
SECTION FOOTER LAST 2 COLUMNWISE
STRINGA 1651 20
BEGIN
KEY ""
PROMPT 2 1 "Totale "
END
STRINGA -1 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA -1 3
BEGIN
KEY ""
PROMPT 5 1 ""
END
NUMERO -1 12
BEGIN
KEY "ACQ"
PROMPT 6 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALACQ"
PROMPT 7 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALACQ"
PROMPT 7 1 ""
END
NUMERO -1 12
BEGIN
KEY "ven"
PROMPT 8 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALven"
PROMPT 9 1 ""
END
NUMERO -1 12
BEGIN
KEY "rim"
PROMPT 10 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALrim"
PROMPT 11 1 ""
END
NUMERO 1647 12
BEGIN
KEY "giac"
PROMPT 12 1 ""
PICTURE "########,@#"
END
END
END // fine form

View File

@ -228,7 +228,6 @@ END
BEGIN
KEY "H1"
PROMPT 139 6 "Giacenza"
GROUP FG_RIGAVALORI
END
STRINGA 15 12
BEGIN
@ -791,7 +790,6 @@ SECTION BODY ODD 0 COLUMNWISE
FIELD LF_MAG->GIAC
PICTURE "#######@,@#"
MESSAGE ADD,147
GROUP FG_RIGAVALORI
END
NUMERO 48 12
BEGIN
@ -799,17 +797,7 @@ 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
@ -2382,7 +2370,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "giac"
PROMPT 12 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,1553
MESSAGE _USER,VALIDATE_UM,1553|ADD,FL->1647
GROUP 15
END
END // tot catmerc
@ -2392,4 +2380,70 @@ END // section body, loop anamag
SECTION FOOTER ODD 2
END // fine footersection
SECTION FOOTER LAST 2 COLUMNWISE
STRINGA 1651 20
BEGIN
KEY ""
PROMPT 2 1 "Totale "
END
STRINGA -1 30
BEGIN
KEY "Magazzino"
PROMPT 2 1 ""
END
STRINGA -1 3
BEGIN
KEY ""
PROMPT 5 1 ""
END
NUMERO -1 12
BEGIN
KEY "ACQ"
PROMPT 6 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALACQ"
PROMPT 7 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALACQ"
PROMPT 7 1 ""
END
NUMERO -1 12
BEGIN
KEY "ven"
PROMPT 8 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALven"
PROMPT 9 1 ""
END
NUMERO -1 12
BEGIN
KEY "rim"
PROMPT 10 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALrim"
PROMPT 11 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALrim"
PROMPT 11 1 ""
END
NUMERO 1647 12
BEGIN
KEY "giac"
PROMPT 12 1 ""
PICTURE "########,@#"
END
END
END // fine form

View File

@ -211,13 +211,11 @@ 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
@ -750,7 +748,6 @@ SECTION BODY ODD 0 COLUMNWISE
MESSAGE _NUMEXPR,#246/#245
GROUP FG_VALMEDI FG_RIGAVALORI
END
NUMERO 247 12
BEGIN
KEY "giac"
@ -758,7 +755,6 @@ SECTION BODY ODD 0 COLUMNWISE
PICTURE "########,@#"
FIELD LF_MAG->GIAC
MESSAGE ADD,347
GROUP FG_RIGAPREZZI
END
NUMERO 248 12
BEGIN
@ -766,17 +762,7 @@ 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
END // GGIAC3
@ -1196,7 +1182,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 12 1 ""
PICTURE "########,@#"
MESSAGE ADD,747
GROUP 6 FG_RIGAVALORI
GROUP 6
END
VALUTA 648 12
BEGIN
@ -1204,7 +1190,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 7 1 ""
FLAGS "U"
PICTURE "###.###.###"
GROUP 6 FG_RIGACOSTI
GROUP 6
END
VALUTA 649 12
BEGIN
@ -2155,7 +2141,8 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "giac"
PROMPT 12 1 ""
PICTURE "#######@,@#"
MESSAGE _USER,VALIDATE_UM,53|ADD,147
// MESSAGE _USER,VALIDATE_UM,53|ADD,147
MESSAGE ADD,147
GROUP 15
END
END // tot depositi
@ -2261,7 +2248,8 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "giac"
PROMPT 12 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,153
// MESSAGE _USER,VALIDATE_UM,153|ADD,FL->247
MESSAGE ADD,FL->247
GROUP 1
END
END // tot magazz
@ -2269,5 +2257,68 @@ END // section body, loop anamag
SECTION FOOTER ODD 2
END // fine footer
SECTION FOOTER LAST 2 COLUMNWISE
STRINGA 251 30
BEGIN
KEY ""
PROMPT 2 1 "Totale "
END
STRINGA -1 20
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA -1 3
BEGIN
KEY ""
PROMPT 5 1 ""
END
NUMERO -1 12
BEGIN
KEY "ACQ"
PROMPT 6 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALACQ"
PROMPT 7 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALACQ"
PROMPT 7 1 ""
END
NUMERO -1 12
BEGIN
KEY "ven"
PROMPT 8 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALven"
PROMPT 9 1 ""
END
NUMERO -1 12
BEGIN
KEY "rim"
PROMPT 10 1 ""
END
VALUTA -1 12
BEGIN
KEY "VALrim"
PROMPT 11 1 ""
END
NUMERO 247 12
BEGIN
KEY "giac"
PROMPT 12 1 ""
PICTURE "########,@#"
END
END
END// fine form

View File

@ -1835,6 +1835,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "GIAC"
PROMPT 6 2 ""
PICTURE "########,@#"
MESSAGE ADD,FL->1641
GROUP 15
END
NUMERO 1542 11
@ -1843,12 +1844,14 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 7 2 ""
PICTURE "########,@#"
GROUP 15 25
MESSAGE ADD,FL->1642
END
NUMERO 1543 11
BEGIN
KEY "ORDC"
PROMPT 8 2 ""
PICTURE "########,@#"
MESSAGE ADD,FL->1643
GROUP 15
END
NUMERO 1544 11
@ -1856,6 +1859,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "ACL"
PROMPT 9 2 ""
PICTURE "########,@#"
MESSAGE ADD,FL->1644
GROUP 15 25
END
NUMERO 1545 11
@ -1863,6 +1867,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "INCL"
PROMPT 10 2 ""
PICTURE "########,@#"
MESSAGE ADD,FL->1645
GROUP 15
END
NUMERO 1546 11
@ -1870,6 +1875,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "PRODF"
PROMPT 11 2 ""
PICTURE "########,@#"
MESSAGE ADD,FL->1646
GROUP 15 25
END
NUMERO 1547 11
@ -1877,6 +1883,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "PRODC"
PROMPT 12 2 ""
PICTURE "########,@#"
MESSAGE ADD,FL->1647
GROUP 15
END
NUMERO 1548 11
@ -1884,6 +1891,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "DISP"
prompt 13 2 ""
PICTURE "########,@#"
MESSAGE ADD,FL->1648
GROUP 15
END
END // tot catmerc
@ -1907,4 +1915,71 @@ SECTION FOOTER ODD 2
END // fine footer
SECTION FOOTER LAST 2 COLUMNWISE
STRINGA -1 34 2
BEGIN
KEY ""
PROMPT 3 2 ""
END
STRINGA 1651 8 2
BEGIN
KEY ""
PROMPT 2 2 " Totale"
END
STRINGA -1 3
BEGIN
KEY "UM"
PROMPT 5 2 ""
END
NUMERO 1641 11
BEGIN
KEY "GIAC"
PROMPT 6 2 ""
PICTURE "########,@#"
END
NUMERO 1642 11
BEGIN
KEY "ORDF"
PROMPT 7 2 ""
PICTURE "########,@#"
END
NUMERO 1643 11
BEGIN
KEY "ORDC"
PROMPT 8 2 ""
PICTURE "########,@#"
END
NUMERO 1644 11
BEGIN
KEY "ACL"
PROMPT 9 2 ""
PICTURE "########,@#"
END
NUMERO 1645 11
BEGIN
KEY "INCL"
PROMPT 10 2 ""
PICTURE "########,@#"
END
NUMERO 1646 11
BEGIN
KEY "PRODF"
PROMPT 11 2 ""
PICTURE "########,@#"
END
NUMERO 1647 11
BEGIN
KEY "PRODC"
PROMPT 12 2 ""
PICTURE "########,@#"
END
NUMERO 1648 11
BEGIN
KEY "DISP"
prompt 13 2 ""
PICTURE "########,@#"
END
END
END // fine form

View File

@ -1811,7 +1811,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "GIAC"
PROMPT 6 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,1553
MESSAGE _USER,VALIDATE_UM,1553|ADD,FL->1641
GROUP 15
END
NUMERO 1542 11
@ -1819,7 +1819,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "ORDF"
PROMPT 7 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,1553
MESSAGE _USER,VALIDATE_UM,1553|ADD,FL->1642
GROUP 15 25
END
NUMERO 1543 11
@ -1827,7 +1827,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "ORDC"
PROMPT 8 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,1553
MESSAGE _USER,VALIDATE_UM,1553|ADD,FL->1643
GROUP 15
END
NUMERO 1544 11
@ -1835,7 +1835,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "ACL"
PROMPT 9 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,1553
MESSAGE _USER,VALIDATE_UM,1553|ADD,FL->1644
GROUP 15 25
END
NUMERO 1545 11
@ -1843,7 +1843,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "INCL"
PROMPT 10 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,1553
MESSAGE _USER,VALIDATE_UM,1553|ADD,FL->1645
GROUP 15
END
NUMERO 1546 11
@ -1851,7 +1851,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "PRODF"
PROMPT 11 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,1553
MESSAGE _USER,VALIDATE_UM,1553|ADD,FL->1646
GROUP 15 25
END
NUMERO 1547 11
@ -1859,7 +1859,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "PRODC"
PROMPT 12 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,1553
MESSAGE _USER,VALIDATE_UM,1553|ADD,FL->1647
GROUP 15
END
NUMERO 1548 11
@ -1867,7 +1867,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "DISP"
prompt 13 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,1553
MESSAGE _USER,VALIDATE_UM,1553|ADD,FL->1648
GROUP 15
END
END // tot catmerc
@ -1877,4 +1877,71 @@ END // section body, loop anamag
SECTION FOOTER ODD 2
END // fine footer
SECTION FOOTER LAST 2 COLUMNWISE
STRINGA 1651 20 2
BEGIN
KEY ""
PROMPT 2 2 " Totale"
END
STRINGA -1 30
BEGIN
KEY ""
PROMPT 3 1 ""
END
STRINGA -1 3
BEGIN
KEY "UM"
PROMPT 5 2 ""
END
NUMERO 1641 11
BEGIN
KEY "GIAC"
PROMPT 6 2 ""
PICTURE "########,@#"
END
NUMERO 1642 11
BEGIN
KEY "ORDF"
PROMPT 7 2 ""
PICTURE "########,@#"
END
NUMERO 1643 11
BEGIN
KEY "ORDC"
PROMPT 8 2 ""
PICTURE "########,@#"
END
NUMERO 1644 11
BEGIN
KEY "ACL"
PROMPT 9 2 ""
PICTURE "########,@#"
END
NUMERO 1645 11
BEGIN
KEY "INCL"
PROMPT 10 2 ""
PICTURE "########,@#"
END
NUMERO 1646 11
BEGIN
KEY "PRODF"
PROMPT 11 2 ""
PICTURE "########,@#"
END
NUMERO 1647 11
BEGIN
KEY "PRODC"
PROMPT 12 2 ""
PICTURE "########,@#"
END
NUMERO 1648 11
BEGIN
KEY "DISP"
prompt 13 2 ""
PICTURE "########,@#"
END
END
END // fine form

View File

@ -1617,7 +1617,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "GIAC"
PROMPT 6 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,53|ADD,141
MESSAGE ADD,141
GROUP 15
END
NUMERO 42 11
@ -1625,7 +1625,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "ORDF"
PROMPT 7 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,53|ADD,142
MESSAGE ADD,142
GROUP 15
END
@ -1634,7 +1634,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "ORDC"
PROMPT 8 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,53|ADD,143
MESSAGE ADD,143
GROUP 15
END
NUMERO 44 11
@ -1642,7 +1642,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "ACL"
PROMPT 9 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,53|ADD,144
MESSAGE ADD,144
GROUP 15
END
NUMERO 45 11
@ -1650,7 +1650,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "INCL"
PROMPT 10 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,53|ADD,145
MESSAGE ADD,145
GROUP 15
END
NUMERO 46 11
@ -1658,7 +1658,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "PRODFIN"
PROMPT 11 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,53|ADD,146
MESSAGE ADD,146
GROUP 15
END
NUMERO 47 11
@ -1666,7 +1666,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "PRODCOMP"
PROMPT 12 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,53|ADD,147
MESSAGE ADD,147
GROUP 15
END
NUMERO 48 11
@ -1674,7 +1674,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "DISPONIBILITA'"
PROMPT 13 1 ""
PICTURE "#######@,@#"
MESSAGE _USER,VALIDATE_UM,53|ADD,148
MESSAGE ADD,148
GROUP 15
END
END // tot depositi
@ -1708,7 +1708,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "GIAC"
PROMPT 6 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,153
MESSAGE ADD,FL->241
GROUP 1
END
NUMERO 142 11
@ -1716,7 +1716,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "ORDF"
PROMPT 7 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,153
MESSAGE ADD,FL->242
GROUP 1
END
NUMERO 143 11
@ -1724,7 +1724,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "ORDC"
PROMPT 8 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,153
MESSAGE ADD,FL->243
GROUP 1
END
NUMERO 144 11
@ -1732,7 +1732,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "ACL"
PROMPT 9 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,153
MESSAGE ADD,FL->244
GROUP 1
END
NUMERO 145 11
@ -1740,7 +1740,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "INCL"
PROMPT 10 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,153
MESSAGE ADD,FL->245
GROUP 1
END
NUMERO 146 11
@ -1748,7 +1748,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "PRODF"
PROMPT 11 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,153
MESSAGE ADD,FL->246
GROUP 1
END
NUMERO 147 11
@ -1756,7 +1756,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "PRODC"
PROMPT 12 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,153
MESSAGE ADD,FL->247
GROUP 1
END
NUMERO 148 11
@ -1764,7 +1764,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "DISP"
PROMPT 13 1 ""
PICTURE "########,@#"
MESSAGE _USER,VALIDATE_UM,153
MESSAGE ADD,FL->248
GROUP 1
END
END // tot magazz
@ -1775,4 +1775,66 @@ SECTION FOOTER ODD 2
END // fine footer
SECTION FOOTER LAST 2 COLUMNWISE
STRINGA 251 50
BEGIN
KEY ""
PROMPT 2 2 " Totale"
END
STRINGA -1 3
BEGIN
KEY "UM"
PROMPT 5 2 ""
END
NUMERO 241 11
BEGIN
KEY "GIAC"
PROMPT 6 2 ""
PICTURE "########,@#"
END
NUMERO 242 11
BEGIN
KEY "ORDF"
PROMPT 7 2 ""
PICTURE "########,@#"
END
NUMERO 243 11
BEGIN
KEY "ORDC"
PROMPT 8 2 ""
PICTURE "########,@#"
END
NUMERO 244 11
BEGIN
KEY "ACL"
PROMPT 9 2 ""
PICTURE "########,@#"
END
NUMERO 245 11
BEGIN
KEY "INCL"
PROMPT 10 2 ""
PICTURE "########,@#"
END
NUMERO 246 11
BEGIN
KEY "PRODF"
PROMPT 11 2 ""
PICTURE "########,@#"
END
NUMERO 247 11
BEGIN
KEY "PRODC"
PROMPT 12 2 ""
PICTURE "########,@#"
END
NUMERO 248 11
BEGIN
KEY "DISP"
prompt 13 2 ""
PICTURE "########,@#"
END
END
END // fine form

View File

@ -278,7 +278,20 @@ protected:
void TStampa_etich_art::main_loop()
{
TStampa_etich_art_mask mask;
TToken_string vals("",',');
vals = main_app().argv(2);
if (vals.find(',') > 0)
{
FOR_EACH_TOKEN(vals, s)
{
TToken_string eq(s, '=');
const short id = atoi(eq.get());
mask.set(id, eq.get());
}
}
while (mask.run() == K_ENTER)
{
//report e book dei report
@ -310,4 +323,4 @@ int mg3600(int argc, char* argv[])
TStampa_etich_art a;
a.run(argc, argv, TR("Stampa etichette articoli"));
return 0;
}
}

View File

@ -7,6 +7,7 @@
#define F_DADATA 107
#define F_ADATA 108
#define F_CAUS 109
#define F_DANUM 110
#define F_ANUM 111

View File

@ -33,13 +33,14 @@ BEGIN
MESSAGE HIDE,10@|SHOW,11@
ITEM "M|Movimenti"
MESSAGE SHOW,10@|HIDE,11@
FLAGS "P"
END
STRING F_DACODART 20
BEGIN
PROMPT 1 6 "Da articolo "
KEY 1
FLAG "UG"
FLAG "UGP"
USE LF_ANAMAG
INPUT CODART F_DACODART
DISPLAY "Codice@20" CODART
@ -64,7 +65,7 @@ END
STRING F_ACODART 20
BEGIN
PROMPT 1 8 "A articolo "
FLAG "UG"
FLAG "UGP"
USE LF_ANAMAG
INPUT CODART F_ACODART
DISPLAY "Codice@20" CODART
@ -98,6 +99,7 @@ DATE F_DADATA
BEGIN
PROMPT 1 10 "Dal "
GROUP 10
FLAGS "P"
FIELD DADATA
END
@ -105,12 +107,47 @@ DATE F_ADATA
BEGIN
PROMPT 1 12 " Al "
GROUP 10
FLAGS "P"
FIELD ADATA
END
NUMBER F_DANUM 7
BEGIN
PROMPT 1 14 "Dal numero "
USE LF_MOVMAG
INPUT NUMREG F_DANUM
DISPLAY "N.reg.@7" NUMREG
DISPLAY "Anno" ANNOES
DISPLAY "Data reg. @10" DATAREG
DISPLAY "Data comp.@10" DATACOMP
DISPLAY "Descrizione@30" DESCR
DISPLAY "Causale" CODCAUS
OUTPUT F_DANUM NUMREG
GROUP 10
FLAGS "P"
FIELD DANUM
END
NUMBER F_ANUM 7
BEGIN
PROMPT 1 16 " Al numero "
GROUP 15
USE LF_MOVMAG
INPUT NUMREG F_ANUM
DISPLAY "N.reg.@7" NUMREG
DISPLAY "Anno" ANNOES
DISPLAY "Data reg. @10" DATAREG
DISPLAY "Data comp.@10" DATACOMP
DISPLAY "Descrizione@30" DESCR
DISPLAY "Causale" CODCAUS
OUTPUT F_ANUM NUMREG
FLAGS "P"
FIELD ANUM
END
STRING F_CAUS 5
BEGIN
PROMPT 2 14 "Codice causale "
PROMPT 2 18 "Codice causale "
FIELD CAUS
USE %CAU
FLAGS "U"

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="mg3600b" lpi="6">
<description>Stampa etichette articoli da movimenti</description>
<font face="Courier New" size="10" />
@ -30,7 +30,7 @@ ROUND
<section type="Foot" />
<section type="Foot" level="1" />
<sql>USE RMOVMAG KEY 2
SELECT (110-&#3E;CODCAUS==#CAUS)&#26;&#26;(ANSI(110-&#3E;DATAREG)&#3E;=#DADATA)&#26;&#26;(ANSI(110-&#3E;DATAREG)&#3C;=#ADATA)
SELECT (110-&#3E;CODCAUS==#CAUS)&#26;&#26;BETWEEN(110-&#3E;DATAREG,#DADATA,#ADATA)&#26;&#26;BETWEEN(110-&#3E;NUMREG,#DANUM,#ANUM)
JOIN MOVMAG INTO NUMREG=NUMREG
JOIN ANAMAG INTO CODART=CODART
JOIN UMART TO ANAMAG INTO CODART=CODART NRIGA=1

View File

@ -104,7 +104,24 @@ void TStampa_listamov::setprint_x_mov()
if (anno.not_empty())
filter << '(' << LF_MOVMAG << "->ANNOES==\""<< anno << "\")";
const TString8 dadoc(_mask->get(F_DOC1));
const TString8 adoc(_mask->get(F_DOC2));
if (dadoc.full())
{
if (filter.not_empty())
filter << "&&";
filter << '(' << LF_MOVMAG << "->EX_NUMDOC>=\""<< dadoc << "\")";
}
if (adoc.full())
{
if (filter.not_empty())
filter << "&&";
filter << '(' << LF_MOVMAG << "->EX_NUMDOC<=\""<< adoc << "\")";
}
long codcf = _mask->get_long(F_CODCF);
if (codcf != 0)

View File

@ -20,3 +20,5 @@
#define F_RAGSOC 125
#define F_DADES 126
#define F_ADES 127
#define F_DOC1 128
#define F_DOC2 129

View File

@ -181,9 +181,19 @@ BEGIN
CHECKTYPE NORMAL
END
STRING F_DOC1 7
BEGIN
PROMPT 2 10 "Da documento "
END
STRING F_DOC2 7
BEGIN
PROMPT 27 10 "A documento "
END
STRING F_CAU1 5
BEGIN
PROMPT 2 11 "Causale "
PROMPT 2 11 "Causale "
FLAGS "U"
USE %CAU
INPUT CODTAB F_CAU1
@ -198,7 +208,7 @@ END
STRING F_CAU2 5
BEGIN
FLAGS "U"
PROMPT 2 12 "Causale "
PROMPT 2 12 "Causale "
COPY USE F_CAU1
INPUT CODTAB F_CAU2
COPY DISPLAY F_CAU1
@ -211,7 +221,7 @@ END
STRING F_CAU3 5
BEGIN
FLAGS "U"
PROMPT 2 13 "Causale "
PROMPT 2 13 "Causale "
COPY USE F_CAU1
INPUT CODTAB F_CAU3
COPY DISPLAY F_CAU1
@ -224,7 +234,7 @@ END
STRING F_CAU4 5
BEGIN
FLAGS "U"
PROMPT 2 14 "Causale "
PROMPT 2 14 "Causale "
COPY USE F_CAU1
INPUT CODTAB F_CAU4
COPY DISPLAY F_CAU1
@ -237,7 +247,7 @@ END
STRING F_CAU5 5
BEGIN
FLAGS "U"
PROMPT 2 15 "Causale "
PROMPT 2 15 "Causale "
COPY USE F_CAU1
INPUT CODTAB F_CAU5
COPY DISPLAY F_CAU1
@ -250,7 +260,7 @@ END
STRING F_CAU6 5
BEGIN
FLAGS "U"
PROMPT 2 16 "Causale "
PROMPT 2 16 "Causale "
COPY USE F_CAU1
INPUT CODTAB F_CAU6
COPY DISPLAY F_CAU1

View File

@ -2495,7 +2495,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "GIAC"
PROMPT 6 1 ""
PICTURE "########,@##"
MESSAGE _USER,VALIDATE_UM,1453//|ADD,1541|ADD,1641
MESSAGE _USER,VALIDATE_UM,1453|ADD,FL->10
GROUP 14
END
VALUTA 1442 15
@ -2867,92 +2867,97 @@ BEGIN
MESSAGE _USER,LINEATOTALI
END
STRINGA 2 68
STRINGA 2 55
BEGIN
PROMPT 1 2 "@BTotale generale"
END
NUMERO 10 12
BEGIN
KEY "GIAC"
PROMPT 2 2 ""
PICTURE "########,@##"
END
VALUTA 11 15
BEGIN
KEY "TOTALE COL. 1"
FLAGS "H"
PROMPT 2 2 ""
PROMPT 3 2 ""
PICTURE "##.###.###.##@"
END
NUMERO 12 12
BEGIN
FLAGS "H"
PROMPT 3 2 ""
PROMPT 4 2 ""
END
VALUTA 13 15
BEGIN
KEY "TOTALE COL. 2"
FLAGS "H"
PROMPT 4 2 ""
PROMPT 5 2 ""
PICTURE "##.###.###.##@"
END
NUMERO 14 12
BEGIN
FLAGS "H"
PROMPT 5 2 ""
PROMPT 6 2 ""
END
VALUTA 15 15
BEGIN
KEY "TOTALE COL. 3"
PROMPT 6 2 ""
PROMPT 7 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 16 12
BEGIN
PROMPT 7 2 ""
PROMPT 8 2 ""
FLAGS "H"
END
VALUTA 17 15
BEGIN
KEY "TOTALE COL. 4"
PROMPT 8 2 ""
PROMPT 9 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 18 12
BEGIN
PROMPT 9 2 ""
PROMPT 10 2 ""
FLAGS "H"
END
VALUTA 19 15
BEGIN
KEY "TOTALE COL. 5"
PROMPT 10 2 ""
PROMPT 11 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 20 12
BEGIN
PROMPT 11 2 ""
PROMPT 12 2 ""
FLAGS "H"
END
VALUTA 21 15
BEGIN
KEY "TOTALE COL. 6"
PROMPT 12 2 ""
PROMPT 13 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 22 12
BEGIN
PROMPT 13 2 ""
PROMPT 14 2 ""
FLAGS "H"
END

View File

@ -2497,7 +2497,7 @@ SECTION BODY ODD 0 COLUMNWISE
KEY "GIAC"
PROMPT 6 1 ""
PICTURE "########,@##"
MESSAGE _USER,VALIDATE_UM,1453//|ADD,1541|ADD,1641
MESSAGE _USER,VALIDATE_UM,1453|ADD,FL->10|ADD,1541|ADD,1641
GROUP 14
END
VALUTA 1442 15
@ -2756,7 +2756,7 @@ SECTION BODY ODD 0 COLUMNWISE
PROMPT 6 1 ""
PICTURE "########,@##"
//MESSAGE _USER,VALIDATE_UM,1553
GROUP 15
GROUP 15
END
VALUTA 1542 15
BEGIN
@ -2869,92 +2869,98 @@ BEGIN
MESSAGE _USER,LINEATOTALI
END
STRINGA 2 68
STRINGA 2 55
BEGIN
PROMPT 1 2 "@BTotale generale"
END
NUMERO 10 12
BEGIN
KEY "GIAC"
PROMPT 2 2 ""
PICTURE "########,@##"
END
VALUTA 11 15
BEGIN
KEY "TOTALE COL. 1"
FLAGS "H"
PROMPT 2 2 ""
PROMPT 3 2 ""
PICTURE "##.###.###.##@"
END
NUMERO 12 12
BEGIN
FLAGS "H"
PROMPT 3 2 ""
PROMPT 4 2 ""
END
VALUTA 13 15
BEGIN
KEY "TOTALE COL. 2"
FLAGS "H"
PROMPT 4 2 ""
PROMPT 5 2 ""
PICTURE "##.###.###.##@"
END
NUMERO 14 12
BEGIN
FLAGS "H"
PROMPT 5 2 ""
PROMPT 6 2 ""
END
VALUTA 15 15
BEGIN
KEY "TOTALE COL. 3"
PROMPT 6 2 ""
PROMPT 7 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 16 12
BEGIN
PROMPT 7 2 ""
PROMPT 8 2 ""
FLAGS "H"
END
VALUTA 17 15
BEGIN
KEY "TOTALE COL. 4"
PROMPT 8 2 ""
PROMPT 9 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 18 12
BEGIN
PROMPT 9 2 ""
PROMPT 10 2 ""
FLAGS "H"
END
VALUTA 19 15
BEGIN
KEY "TOTALE COL. 5"
PROMPT 10 2 ""
PROMPT 11 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 20 12
BEGIN
PROMPT 11 2 ""
PROMPT 12 2 ""
FLAGS "H"
END
VALUTA 21 15
BEGIN
KEY "TOTALE COL. 6"
PROMPT 12 2 ""
PROMPT 13 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 22 12
BEGIN
PROMPT 13 2 ""
PROMPT 14 2 ""
FLAGS "H"
END

View File

@ -668,7 +668,7 @@ SECTION BODY ODD 1 COLUMNWISE
KEY "GIAC"
PROMPT 6 1 ""
PICTURE "########,@##"
MESSAGE _USER,GIAC|ADD,341
MESSAGE _USER,GIAC|ADD,341|ADD,FL->10|ADD,41|ADD,1641|ADD,1741
GROUP 2
END
@ -2233,8 +2233,7 @@ SECTION BODY ODD 1 COLUMNWISE
KEY "GIAC"
PROMPT 6 1 ""
PICTURE "########,@##"
MESSAGE _USER,VALIDATE_UM,1453//|ADD,41
GROUP 14
// MESSAGE _USER,VALIDATE_UM,1453|
END
VALUTA 1442 15
BEGIN
@ -2606,8 +2605,9 @@ SECTION BODY ODD 1 COLUMNWISE
BEGIN
KEY "GIAC"
PROMPT 6 1 ""
//PICTURE "########,@##"
//MESSAGE _USER,VALIDATE_UM,53|ADD,141
PICTURE "########,@##"
// MESSAGE _USER,VALIDATE_UM,53|ADD,141
MESSAGE ADD,141
GROUP 15
END
VALUTA 42 15
@ -2737,7 +2737,7 @@ SECTION BODY ODD 1 COLUMNWISE
KEY "GIAC"
PROMPT 6 1 ""
PICTURE "########,@##"
//MESSAGE _USER,VALIDATE_UM,153
// MESSAGE _USER,VALIDATE_UM,153
GROUP 1
END
VALUTA 142 15
@ -2852,92 +2852,98 @@ BEGIN
MESSAGE _USER,LINEATOTALI
END
STRINGA 2 68
STRINGA 2 55
BEGIN
PROMPT 1 2 "@BTotale generale"
END
NUMERO 10 12
BEGIN
KEY "GIAC"
PROMPT 2 2 ""
PICTURE "########,@##"
END
VALUTA 11 15
BEGIN
KEY "TOTALE COL. 1"
PROMPT 2 2 ""
PROMPT 3 2 ""
PICTURE "##.###.###.##@"
FLAGS "H"
END
NUMERO 12 12
BEGIN
PROMPT 3 2 ""
PROMPT 4 2 ""
FLAGS "H"
END
VALUTA 13 15
BEGIN
KEY "TOTALE COL. 2"
PROMPT 4 2 ""
PROMPT 5 2 ""
PICTURE "##.###.###.##@"
FLAGS "H"
END
NUMERO 14 12
BEGIN
PROMPT 5 2 ""
PROMPT 6 2 ""
FLAGS "H"
END
VALUTA 15 15
BEGIN
KEY "TOTALE COL. 3"
PROMPT 6 2 ""
PROMPT 7 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 16 12
BEGIN
PROMPT 7 2 ""
PROMPT 8 2 ""
FLAGS "H"
END
VALUTA 17 15
BEGIN
KEY "TOTALE COL. 4"
PROMPT 8 2 ""
PROMPT 9 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 18 12
BEGIN
PROMPT 9 2 ""
PROMPT 10 2 ""
FLAGS "H"
END
VALUTA 19 15
BEGIN
KEY "TOTALE COL. 5"
PROMPT 10 2 ""
PROMPT 11 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 20 12
BEGIN
PROMPT 11 2 ""
PROMPT 12 2 ""
FLAGS "H"
END
VALUTA 21 15
BEGIN
KEY "TOTALE COL. 6"
PROMPT 12 2 ""
PROMPT 13 2 ""
FLAGS "H"
PICTURE "##.###.###.##@"
END
NUMERO 22 12
BEGIN
PROMPT 13 2 ""
PROMPT 14 2 ""
FLAGS "H"
END

View File

@ -581,6 +581,9 @@ public:
TArticolo & articolo(int row) const { return cached_article(body()[row].get(RMOVMAG_CODART));}
TArticolo_giacenza & articolo_giacenza(int row) const { return cached_article_balances(body()[row].get(RMOVMAG_CODART));}
TCausale_magazzino& causale(int row) const;
const TCausale_magazzino& causale(const char* cod = NULL) const;
void renum_mov(const long numreg);
// @member: effettua l'aggiornamento dei saldi di una giacenza
void update_balances(TRectype& magrec, int numrig, bool plus = true);

View File

@ -486,6 +486,12 @@ bool TMov_mag::force_update_bal()
return update_balances(false);
}
void TMov_mag::renum_mov(const long numreg)
{
put(MOVMAG_NUMREG, numreg);
renum_key();
}
// restituisce il valore dei dati
void TMov_mag::add_saldi(const bool plus)

View File

@ -3457,8 +3457,8 @@ bool TMatResPlanning::emit_orders()
if (dardoc != NULL)
{
int rifdepth = m.get_int(F_RIFERIMENTO_MRP);
if (rifdepth == 0 && dardoc->get(RDOC_DACODNUM).full())
rifdepth = 1;
// if (rifdepth == 0 && dardoc->get(RDOC_DACODNUM).full())
// rifdepth = 1;
rdoc.set_original_rdoc_key(*dardoc, rifdepth); // Imposto DAPROVV, DAANNO, DACODNUM, DANDOC, DAIDRIGA
}
else

View File

@ -201,7 +201,7 @@ bool TRiga_articolo::find_block(const TSheet_field& sf, const int riga, int &fir
int TRiga_articolo::order_compare( const TToken_string &r1, const TToken_string &r2, int level, bool ascending)
{
TString80 str0, str1;
TString str0, str1;
int cmp = 0;
if (level>=0)
@ -873,20 +873,18 @@ void TMSP_constraint::fill_sheet_row(TToken_string& row, const TMask & m, const
if ((descr == NULL || *descr == '\0') && __userflds != NULL && __userflds->full())
{
TString userdesc;
TString16 fldname;
TString16 codnum;
TString4 codnum;
TString fldval;
const TRectype & anamag = cache().get(LF_ANAMAG, articolo());
TToken_string fld("", '#');
for (fld = __userflds->get(0); fld.full(); fld = __userflds->get())
{
fldname = fld.get(0);
const TFieldref fr(fld.get(0), 0);
codnum = fld.get();
if (codnum.blank())
fldval = anamag.get(fldname);
fldval = fr.read(anamag);
else
{
fldval.cut(0);
@ -899,14 +897,14 @@ void TMSP_constraint::fill_sheet_row(TToken_string& row, const TMask & m, const
curr.put(RDOC_DANDOC, da_rdoc_key.smid(9,7));
curr.put(RDOC_DAIDRIGA, da_rdoc_key.smid(16));
TRectype filter_fr(curr), filter_to(curr);
const TRectype filter_fr(curr), filter_to(curr);
TCursor cur(&rel, "", 4, &filter_fr, &filter_to);
const int items = cur.items();
cur.freeze();
for (cur = 0L; cur.pos() < items; ++cur)
if (cur.curr().get(RDOC_CODNUM) == codnum)
{
fldval = cur.curr().get(fldname);
fldval = fr.read(cur.curr());
break;
}
}
@ -1218,10 +1216,8 @@ void TMSP_constraint::init()
if (__userflds == NULL)
{
TConfig c(CONFIG_DITTA, "mr");
__userflds = new TToken_string(c.get("USERFLDS"));
if (c.exist("FLDSEP"))
__sep = c.get_char("FLDSEP");
__sep = c.get_char("FLDSEP", NULL, -1, ';');
}
}

View File

@ -89,9 +89,12 @@ TConsumi_report::TConsumi_report()
class TGenera_ordini_mask : public TAutomask
{
TString _anamag_query;
TString _disable_expr;
TString8 _disable_num;
TExpression _dis;
TString _doc_filter;
int _days_interval;
bool _filter_changed;
bool _filter_changed, _order_changed;
private:
void serialize(bool bSave);
@ -138,6 +141,8 @@ inline TCreazione_ordini & capp() { return (TCreazione_ordini &) main_app();}
void TGenera_ordini_mask::update_sheet()
{
_filter_changed = false;
TWait_cursor hourglass;
const TDate oggi(TODAY);
@ -148,6 +153,8 @@ void TGenera_ordini_mask::update_sheet()
const int pos = query.find("KEY ");
TArticolo_giacenza art;
TString8 codmag(get(F_MAG));
const TString8 codnum(get(F_CODNUM));
const bool check_expr = codnum == _disable_num;
int anno = get_int(F_ANNO);
if (anno <= 0)
anno = oggi.year();
@ -239,7 +246,11 @@ void TGenera_ordini_mask::update_sheet()
var = user();
recset.set_var("#USER", var);
TString8 codes; codes.format("%04d", esc.date2esc(oggi));
var = codmag;
recset.set_var("#CODMAG", var);
var = (long)anno;
recset.set_var("#ANNOES", var);
int i = 0;
sf.destroy();
@ -277,7 +288,26 @@ void TGenera_ordini_mask::update_sheet()
row.add(recset.get(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++);
sf.check_row(i);
if (check_expr)
{
for (int j = _dis.numvar() - 1; j >= 0; j--)
{
const TString16 varn =_dis.varname(j);
if (varn == "GIAC")
_dis.setvar(j, giac.string());
else
if (varn == "USER")
_dis.setvar(j, user());
else
_dis.setvar(j, recset.get(varn).as_string());
}
if (_dis.as_bool())
sf.disable_row(i);
}
i++;
}
sf.force_update();
@ -285,6 +315,7 @@ void TGenera_ordini_mask::update_sheet()
void TGenera_ordini_mask::update_orders()
{
_order_changed = false;
TWait_cursor hourglass;
TSheet_field& sh = sfield(F_ORDERS);
@ -338,12 +369,15 @@ void TGenera_ordini_mask::next_page(int p)
if (_filter_changed)
{
TSheet_field& sf = sfield(F_ARTICLES);
const TSheet_field& sf = sfield(F_ARTICLES);
if (xvt_scr_get_focus_vobj() == sf.parent())
{
update_sheet();
_filter_changed = false;
}
}
if (_order_changed)
{
const TSheet_field& sf = sfield(F_ORDERS);
if (xvt_scr_get_focus_vobj() == sf.parent())
update_orders();
}
}
@ -383,6 +417,10 @@ bool TGenera_ordini_mask::on_field_event(TOperable_field& o, TField_event e, lon
if (e == fe_modify)
_filter_changed = true;
break;
case F_CODNUM:
if (e == fe_modify)
_order_changed = true;
break;
case F_ANNO:
if (e == fe_init && o.empty())
{
@ -427,15 +465,18 @@ bool TGenera_ordini_mask::on_field_event(TOperable_field& o, TField_event e, lon
rset.set_var("#CODNUM", TVariant(get(F_CODNUM)));
TCursor* c = rset.cursor();
TCursor_sheet sht(c, " |CODNUM|NDOC|DATADOC|DATACONS|CODCF|20->RAGSOC", "Selezione Documenti",
"@1|Ordine@6|Numero\nDoc.@7|Data\nDoc.@10|Data\nConsegna@10|Fornitore|Ragione Sociale@50",0,1);
TCursor_sheet sht(c, " |CODNUM|NDOC|DATADOC|DATACONS|CODCF|20->RAGSOC", TR("Selezione Documenti"),
HR("@1|Ordine@6|Numero\nDoc.@7|Data\nDoc.@10|Data\nConsegna@10|Fornitore|Ragione Sociale@50"),0,1);
sht.uncheck(-1);
if (sht.run())
if (sht.run() && sht.one_checked())
{
const int items = c->items();
for (*c = 0L; c->pos() < items; ++(*c)) if (sht.checked(c->pos()))
capp().print_doc(c->curr());
update_sheet();
update_orders();
}
ok = false; // Non uscire
}
@ -469,11 +510,10 @@ bool TGenera_ordini_mask::on_field_event(TOperable_field& o, TField_event e, lon
rset.set_var("#CODNUM", TVariant(get(F_CODNUM)));
TCursor* c = rset.cursor();
TCursor_sheet sht(c, " |CODNUM|NDOC|DATADOC|DATACONS|CODCF|20->RAGSOC", "Selezione Documenti",
"@1|Ordine@6|Numero\nDoc.@7|Data\nDoc.@10|Data\nConsegna@10|Fornitore|Ragione Sociale@50",0,1);
TCursor_sheet sht(c, " |CODNUM|NDOC|DATADOC|DATACONS|CODCF|20->RAGSOC", TR("Selezione Documenti"),
HR("@1|Ordine@6|Numero\nDoc.@7|Data\nDoc.@10|Data\nConsegna@10|Fornitore|Ragione Sociale@50"),0,1);
sht.uncheck(-1);
if (sht.run() && sht.checked() > 0 && yesno_box("Si desidera cancellare %d documenti", sht.checked()))
if (sht.run() && sht.one_checked() && yesno_box("Si desidera cancellare %d documenti", sht.checked()))
{
const int items = c->items();
c->freeze();
@ -482,6 +522,8 @@ bool TGenera_ordini_mask::on_field_event(TOperable_field& o, TField_event e, lon
TDocumento doc(c->curr());
doc.remove();
}
update_sheet();
update_orders();
}
ok = false; // Non uscire
}
@ -548,6 +590,10 @@ TGenera_ordini_mask::TGenera_ordini_mask()
else
_anamag_query = esc(_anamag_query);
_disable_num = esc(c.get("OR14_DISNUM"));
_disable_expr = esc(c.get("OR14_DISABLE"));
_dis.set(_disable_expr);
_doc_filter = c.get("OR14_FILTER");
if (_doc_filter.empty() && !field(F_CDCT).empty())
_doc_filter = "CODCMS=#CODCMS"; // Utile al Cigno

Binary file not shown.

View File

@ -27,6 +27,7 @@ Generazione documenti da paghe
Trasferimento Maestri a TeamSystem
Convesione file Landi
Stampa bollettini postali Condeco
copia movimenti magazzino AZ
PG0069 Nautilus (Sipag)
Importazione e contabilizzazione fatture Nautilus
@ -46,6 +47,9 @@ PS0430 Il Cigno
Correlazioni articoli utenti
Configurazione campi per utente
PN0001
Importazione dati vendite al dettaglio
PS0544 Varauto
Trasferimento a SISIPHO
Trasferimento a SERVUS

View File

@ -95,8 +95,14 @@ real TValorizzazione_mask::valore(const TCodice_articolo& dis, const char* liv)
if (calo == ZERO) calo = UNO;
const real prezzo = compd.get_real(ANAMAG_ULTCOS1) * calo;
val_mat += prezzo * qta;
TString80 strprezzo("#"); strprezzo << comp;
real prezzo;
if (_tree.exist(strprezzo))
prezzo = _tree.get_real(strprezzo);
else
prezzo = compd.get_real(ANAMAG_ULTCOS1);
val_mat += (prezzo * calo) * qta;
if (um.starts_with("GR"))
peso += qta;
}

View File

@ -13,6 +13,8 @@ int main(int argc, char** argv)
pg0001300(argc, argv); break; // conversione da excel a colonne fisse per studio vitali
case 3:
pg0001400(argc, argv); break; // stampa bollettini postali Condeco
case 4:
pg0001500(argc, argv); break; // copia movimenti magazzino AZ
case 0:
default:
pg0001100(argc, argv);

View File

@ -1,4 +1,5 @@
int pg0001100(int argc, char* argv[]);
int pg0001200(int argc, char* argv[]);
int pg0001300(int argc, char* argv[]);
int pg0001400(int argc, char* argv[]);
int pg0001400(int argc, char* argv[]);
int pg0001500(int argc, char* argv[]);

View File

@ -228,7 +228,7 @@ const TVariant& TMov_recset::get(const char* column_name) const
else
if (fname == MOV_CODCAUS)
{
((TMov_recset *)this)->_indetraibile = TAS400_recordset::get(fname).as_int() == 4;
((TMov_recset *)this)->_indetraibile = TAS400_recordset::get("CODCAUSO").as_int() == 4;
int ccaus;
if (vendite())
@ -281,7 +281,7 @@ TMov_recset::TMov_recset(const char * query, TArray & recsets)
add_field(MOV_NUMDOC, 47, n, 9);
add_field(MOV_DATADOC, 56, a, 6);
add_field("L09", 62, a, 1);
add_field(MOV_CODCAUS, 63, n, 2);
add_field("CODCAUSO" , 63, n, 2);
add_field(RMI_CODIVA, 65, n, 2);
add_field("TIPOM", 67, n, 1);
add_field("L10", 68, a, 18);
@ -461,7 +461,7 @@ bool TIVA_recset::move_to(TRecnotype pos)
}
TIVA_recset::TIVA_recset(TMov_recset & mov)
:TAS400_recordset("AS400(60)\n"),
:TAS400_recordset("AS400(62)\n"),
_first(-1L), _last(-1L), _numreg(-1L)
{
const char a = 'a';
@ -490,7 +490,7 @@ TIVA_recset::TIVA_recset(TMov_recset & mov)
set(RMI_NUMRIG, mov.get("PROG"));
int civa = mov.get(RMI_CODIVA).as_int();
int ccaus = mov.get(MOV_CODCAUS).as_int();
int ccaus = mov.get("CODCAUSO").as_int();
const bool indetraibile = mov.indetraibile();
civa += ccaus * 100;

201
ps/pg0001500.cpp Executable file
View File

@ -0,0 +1,201 @@
#include <applicat.h>
#include <automask.h>
#include <progind.h>
#include "pg0001.h"
#include "pg0001500a.h"
#include "../cg/cglib01.h"
#include "../mg/mglib.h"
#include "../mg/movmag.h"
#include "../mg/rmovmag.h"
class TMaskpg00015 : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TMaskpg00015() : TAutomask("pg0001500a") { }
virtual ~TMaskpg00015() { }
};
bool TMaskpg00015::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
return true;
}
class TCopiaMovMg : public TSkeleton_application
{
virtual bool check_autorization() const {return false;}
virtual const char * extra_modules() const {return "ba";}
protected:
virtual void main_loop();
public:
};
void TCopiaMovMg::main_loop()
{
TMaskpg00015 m;
while (m.run() != K_QUIT)
{
TEsercizi_contabili es;
TArray movs;
const long damov = m.get_long(F_DANUM);
const long amov = m.get_long(F_ANUM);
const TDate newdate = m.get_date(F_DATAMOV);
TMov_mag mov;
TRectype rec(LF_MOVMAG);
long newnmov = atol(mov.get_next_key());
const real valtot = m.get_real(F_VALTOT);
const int qmax = m.get_int(F_QMAX);
const real minval = m.get_real(F_VMIN);
const int cmax = m.get_int(F_CMAX);
real actval;
{
TProgind rd(amov - damov + 1, "Lettura");
for (long n = damov; n <= amov; n++)
{
rec.zero();
rec.put(MOVMAG_NUMREG, n),
mov.read(rec);
mov.body();
mov.renum_mov(newnmov++);
mov.put(MOVMAG_DATAREG, newdate);
mov.put(MOVMAG_DATACOMP, newdate);
mov.put(MOVMAG_ANNOES, es.date2esc(newdate));
const int nrows = mov.body().rows();
for (int r = 1; r <= nrows; r++)
{
const TRectype & row = mov.body().row(r);
const real qta = row.get_int(RMOVMAG_QUANT);
const real prezzo = row.get_real(RMOVMAG_PREZZO);
real val = prezzo * qta;
val.round(2);
actval += val;
}
movs.add(mov);
if (!rd.iscancelled())
rd.addstatus(1L);
}
}
real varp = valtot / actval;
varp.round(6);
const real sign = varp > UNO ? UNO : -UNO;
int cnt = 0;
int loops = 0;
{
TProgind c(100, "Calcolo");
while (sign * actval < sign * valtot && loops < 100)
{
const int nmov = movs.items();
actval = ZERO;
for (int i = 0; i < nmov; i++)
{
TMov_mag &mov = (TMov_mag &) movs[i];
const int nrows = mov.body().rows();
int r;
for (r = 1; r <= nrows; r++)
{
TRectype & row = (TRectype &) mov.body().row(r);
const real qta = row.get_real(RMOVMAG_QUANT);
const real prezzo = row.get_real(RMOVMAG_PREZZO);
real v = varp * qta;
v.round(0);
int newqta = v.integer();
if (prezzo >= minval && newqta > qmax)
newqta = qmax;
else
if (qta.integer() == newqta)
{
cnt++;
if (cnt == cmax)
{
cnt = 0;
if (sign > ZERO)
newqta++;
else
newqta--;
}
}
if (sign > ZERO)
{
if (newqta < qta.integer())
newqta = qta.integer();
}
else
{
if (newqta > qta.integer())
newqta = qta.integer();
}
if (newqta < 0)
newqta = 0;
real val = prezzo * newqta;
val.round(2);
actval += val;
row.put(RMOVMAG_QUANT, newqta);
}
for (r = nrows; r > 0; r--)
{
const TRectype & row = mov.body().row(r);
const int qta = row.get_int(RMOVMAG_QUANT);
if (qta == 0)
mov.body().destroy_row(r, true);
}
}
varp = valtot / actval;
varp.round(6);
loops++;
if (!c.iscancelled())
c.addstatus(1L);
}
}
TString msg;
msg.format("Valore totale %s, devo registrare", (const char *) actval.stringa());
if (yesno_box(msg))
{
const int nmov = movs.items();
TProgind w(nmov, "Scrittura");
TLocalisamfile movmag(LF_MOVMAG);
for (int i = 0; i < nmov; i++)
{
TMov_mag &mov = (TMov_mag &) movs[i];
mov.write(movmag);
if (!w.iscancelled())
w.addstatus(1L);
}
}
}
}
int pg0001500(int argc, char* argv[])
{
TCopiaMovMg a;
a.run(argc, argv, "Copia Movimenti di magazzino");
return 0;
}

7
ps/pg0001500a.h Executable file
View File

@ -0,0 +1,7 @@
#define F_DANUM 101
#define F_ANUM 102
#define F_DATAMOV 103
#define F_VALTOT 104
#define F_QMAX 105
#define F_VMIN 106
#define F_CMAX 107

76
ps/pg0001500a.uml Executable file
View File

@ -0,0 +1,76 @@
#include "pg0001500a.h"
PAGE "Copia movimenti di magazzino" -1 -1 76 18
NUMBER F_DANUM 7
BEGIN
PROMPT 1 2 "Dal numero "
USE LF_MOVMAG
INPUT NUMREG F_DANUM
DISPLAY "N.reg.@7" NUMREG
DISPLAY "Anno" ANNOES
DISPLAY "Data reg. @10" DATAREG
DISPLAY "Data comp.@10" DATACOMP
DISPLAY "Descrizione@30" DESCR
DISPLAY "Causale" CODCAUS
OUTPUT F_DANUM NUMREG
CHECKTYPE REQUIRED
END
NUMBER F_ANUM 7
BEGIN
PROMPT 1 4 " Al numero "
GROUP 15
USE LF_MOVMAG
INPUT NUMREG F_ANUM
DISPLAY "N.reg.@7" NUMREG
DISPLAY "Anno" ANNOES
DISPLAY "Data reg. @10" DATAREG
DISPLAY "Data comp.@10" DATACOMP
DISPLAY "Descrizione@30" DESCR
DISPLAY "Causale" CODCAUS
OUTPUT F_ANUM NUMREG
CHECKTYPE REQUIRED
END
DATE F_DATAMOV
BEGIN
PROMPT 1 6 "Data movimenti "
CHECKTYPE REQUIRED
END
CURRENCY F_VALTOT
BEGIN
PROMPT 1 8 "Valore totale "
END
NUMBER F_QMAX 5
BEGIN
PROMPT 1 10 "Quantità massima "
END
CURRENCY F_VMIN 12
BEGIN
PROMPT 1 12 "Valore unitario minimo "
FLAGS "U"
END
NUMBER F_CMAX 2
BEGIN
PROMPT 1 14 "Articoli da saltare "
CHECKTYPE REQUIRED
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

24
ps/pn0001.cpp Executable file
View File

@ -0,0 +1,24 @@
#include <xvt.h>
#include "pn0001.h"
int main(int argc, char** argv)
{
const int op = argc < 2 ? 0 : argv[1][1]-'0';
switch (op)
{
case 0:
pn0001100(argc,argv);
break;
default:
pn0001100(argc,argv);
break;
}
exit(0);
return 0;
}

15
ps/pn0001.h Executable file
View File

@ -0,0 +1,15 @@
int pn0001100(int argc, char* argv[]);

1294
ps/pn0001100.cpp Executable file

File diff suppressed because it is too large Load Diff

11
ps/pn0001100.h Executable file
View File

@ -0,0 +1,11 @@
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_PATH 103
#define F_LEN 104
#define F_CF 105
#define F_AM 106
#define F_BC 107
#define F_LI 108
#define F_GI 109
#define F_CS 110

89
ps/pn0001100.uml Executable file
View File

@ -0,0 +1,89 @@
#include "pn0001100.h"
PAGE "Invio dati contabilita'" -1 -1 78 10
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
NUMBER F_LEN 2
BEGIN
PROMPT 2 4 "Lunghezz codice numerico "
CHECKTYPE REQUIRED
FIELD CodeLen
END
BOOLEAN F_CF
BEGIN
PROMPT 2 5 "Clienti/Forn."
FIELD cf
END
BOOLEAN F_AM
BEGIN
PROMPT 14 5 "Articoli"
FIELD am
END
BOOLEAN F_BC
BEGIN
PROMPT 26 5 "Barcode"
FIELD bc
END
BOOLEAN F_LI
BEGIN
PROMPT 38 5 "Listini"
FIELD li
END
BOOLEAN F_GI
BEGIN
PROMPT 50 5 "Giacenze"
FIELD gi
END
BOOLEAN F_CS
BEGIN
PROMPT 62 5 "Costi"
FIELD cs
END
STRING F_PATH 256 30
BEGIN
PROMPT 2 6 "Cartella di input "
DSELECT
CHECKTYPE REQUIRED
FIELD DestPath
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

View File

@ -129,7 +129,10 @@ void TStampaProduzionePs0920::main_loop()
TCursor & cur = *s.cursor();
TReport rep;
rep.load("OrdineProd.rep");
if (m.get_bool(F_PAGEBREAK))
rep.load("OrdineProdSP.rep");
else
rep.load("OrdineProd.rep");
const long items = cur.items();
for (long pos = 0L; pos < items; pos++)

View File

@ -3,4 +3,5 @@
#define F_NUM 102
#define F_CODCLI 103
#define F_RAGSOC 104
#define F_PAGEBREAK 105

View File

@ -1,6 +1,6 @@
#include "ps0920100a.h"
PAGE "Stampa ordini di produzione" -1 -1 80 9
PAGE "Stampa ordini di produzione" -1 -1 80 11
GROUPBOX -1 78 5
BEGIN
@ -69,6 +69,11 @@ BEGIN
CHECKTYPE REQUIRED
END
BOOLEAN F_PAGEBREAK
BEGIN
PROMPT 4 6 "Salto pagina per ogni scheda"
END
STRING F_PROFILO 70 50
BEGIN
PROMPT 8 -4 "Profilo "

View File

@ -261,6 +261,6 @@ TIncassoFatture0003 & app() { return (TIncassoFatture0003&) main_app();}
int pt0003100(int argc, char* argv[])
{
TIncassoFatture0003 a;
a.run(argc, argv, "Stampa ordini di produzione");
a.run(argc, argv, "Incasso fatture");
return 0;
}