Patch level : 12.0 676

Files correlati     : ve
Commento            :

Se in una riga di sconto metto l'aliquota viene usata questa invece di suddividere l'imponibile tra le aliquote della fqttura

La stampa tabelle vendite chiamava un programma sbagliato

Aggiunto un parametro di configurazione nascosto (UpdateProtocol=[ |X]) che forza la rilettura del protocollo IVA a ogni documento contabilizzato

Si puòora indicare un conto patrimoniale per le spese di incasso e bolli
This commit is contained in:
AlexBonazzi 2019-01-15 12:37:16 +01:00
parent e9bac721ef
commit 7d93b65814
5 changed files with 88 additions and 58 deletions

View File

@ -1317,6 +1317,7 @@ void TMotore_application::preview()
int TMotore_application::checkPlafondWrite(TDocumento& d)
{
TLi_manager plafond(d.tipocf(), d.codcf(), d.data());
if(!plafond.hasValidPlafond()) // Se il cliente non mi interessa
return NOERR;

View File

@ -46,7 +46,7 @@ STRING F_SPINCODCON2V 3
BEGIN
PROMPT 29 4 ""
FIELD SPINCODCONV[2]
USE LF_PCON SELECT INDBIL=="4"
USE LF_PCON SELECT ((CONTO!="") && (SOTTOCONTO=="")) && ((INDBIL=="2")||(INDBIL=="4"))
INPUT GRUPPO F_SPINCODCON1V
INPUT CONTO F_SPINCODCON2V
DISPLAY "Gruppo" GRUPPO
@ -55,6 +55,7 @@ DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SPINCODCON1V GRUPPO
OUTPUT F_SPINCODCON2V CONTO
WARNING "Il conto deve essere un ricavo o una passività"
CHECKTYPE NORMAL
END
@ -62,7 +63,7 @@ STRING F_SPINCODCON3V 6
BEGIN
PROMPT 35 4 ""
FIELD SPINCODCONV[3]
USE LF_PCON SELECT (SOTTOCONTO!="") && (500@->INDBIL=="4")
USE LF_PCON SELECT (SOTTOCONTO!="") && ((500@->INDBIL=="2")||(500@->INDBIL=="4"))
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
COPY INPUT F_SPINCODCON2V
INPUT SOTTOCONTO F_SPINCODCON3V
@ -73,13 +74,14 @@ DISPLAY "Descrizione@50" DESCR
COPY OUTPUT F_SPINCODCON2V
OUTPUT F_SPINCODCON3V SOTTOCONTO
OUTPUT F_SPINDESCONV DESCR
WARNING "Il conto deve essere un ricavo o una passività"
CHECKTYPE NORMAL
END
STRING F_SPINDESCONV 50
BEGIN
PROMPT 2 5 "Descrizione "
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") && (500@->INDBIL=="4")
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") && ((500@->INDBIL=="2")||(500@->INDBIL=="4"))
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
INPUT DESCR F_SPINDESCONV
DISPLAY "Descrizione@50" DESCR
@ -101,7 +103,7 @@ STRING F_SPINCODCON2A 3
BEGIN
PROMPT 29 6 ""
FIELD SPINCODCONA[2]
USE LF_PCON SELECT INDBIL=="3"
USE LF_PCON SELECT ((CONTO!="") && (SOTTOCONTO=="")) && ((INDBIL=="1")||(INDBIL=="3"))
INPUT GRUPPO F_SPINCODCON1A
INPUT CONTO F_SPINCODCON2A
DISPLAY "Gruppo" GRUPPO
@ -117,7 +119,7 @@ STRING F_SPINCODCON3A 6
BEGIN
PROMPT 35 6 ""
FIELD SPINCODCONA[3]
USE LF_PCON SELECT (SOTTOCONTO!="") && (500@->INDBIL=="3")
USE LF_PCON SELECT (SOTTOCONTO!="") && ((500@->INDBIL=="1")||(500@->INDBIL=="3"))
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
COPY INPUT F_SPINCODCON2A
INPUT SOTTOCONTO F_SPINCODCON3A
@ -128,13 +130,14 @@ DISPLAY "Descrizione@50" DESCR
COPY OUTPUT F_SPINCODCON2A
OUTPUT F_SPINCODCON3A SOTTOCONTO
OUTPUT F_SPINDESCONA DESCR
WARNING "Il conto deve essere un costo o una attività"
CHECKTYPE NORMAL
END
STRING F_SPINDESCONA 50
BEGIN
PROMPT 2 7 "Descrizione "
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") && (500@->INDBIL=="3")
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") && ((500@->INDBIL=="1")||(500@->INDBIL=="3"))
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
INPUT DESCR F_SPINDESCONA
DISPLAY "Descrizione@50" DESCR
@ -142,6 +145,7 @@ DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SPINCODCON3A
WARNING "Il conto deve essere un costo o una attività"
CHECKTYPE NORMAL
END
@ -186,7 +190,7 @@ STRING F_SPBOCODCON2V 3
BEGIN
PROMPT 29 12 ""
FIELD SPBOCODCONV[2]
USE LF_PCON SELECT INDBIL=="4"
USE LF_PCON SELECT ((CONTO!="") && (SOTTOCONTO=="")) && ((INDBIL=="2")||(INDBIL=="4"))
INPUT GRUPPO F_SPBOCODCON1V
INPUT CONTO F_SPBOCODCON2V
DISPLAY "Gruppo" GRUPPO
@ -202,7 +206,7 @@ STRING F_SPBOCODCON3V 6
BEGIN
PROMPT 35 12 ""
FIELD SPBOCODCONV[3]
USE LF_PCON SELECT (SOTTOCONTO!="") && (500@->INDBIL=="4")
USE LF_PCON SELECT (SOTTOCONTO!="") && ((500@->INDBIL=="2")||(500@->INDBIL=="4"))
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
COPY INPUT F_SPBOCODCON2V
INPUT SOTTOCONTO F_SPBOCODCON3V
@ -213,14 +217,14 @@ DISPLAY "Descrizione@50" DESCR
COPY OUTPUT F_SPBOCODCON2V
OUTPUT F_SPBOCODCON3V SOTTOCONTO
OUTPUT F_SPBODESCONV DESCR
WARNING "Il conto deve essere un ricavo"
WARNING "Il conto deve essere un ricavo o una passività"
CHECKTYPE NORMAL
END
STRING F_SPBODESCONV 50
BEGIN
PROMPT 2 13 "Descrizione "
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") && (500@->INDBIL=="4")
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") && ((500@->INDBIL=="2")||(500@->INDBIL=="4"))
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
INPUT DESCR F_SPBODESCONV
DISPLAY "Descrizione@50" DESCR
@ -228,7 +232,7 @@ DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SPBOCODCON3V
WARNING "Il conto deve essere un ricavo"
WARNING "Il conto deve essere un ricavo o una passività"
CHECKTYPE NORMAL
END
@ -243,7 +247,7 @@ STRING F_SPBOCODCON2A 3
BEGIN
PROMPT 29 14 ""
FIELD SPBOCODCONA[2]
USE LF_PCON SELECT INDBIL=="3"
USE LF_PCON SELECT ((CONTO!="") && (SOTTOCONTO=="")) && ((INDBIL=="1")||(INDBIL=="3"))
INPUT GRUPPO F_SPBOCODCON1A
INPUT CONTO F_SPBOCODCON2A
DISPLAY "Gruppo" GRUPPO
@ -259,7 +263,7 @@ STRING F_SPBOCODCON3A 6
BEGIN
PROMPT 35 14 ""
FIELD SPBOCODCONA[3]
USE LF_PCON SELECT (SOTTOCONTO!="") && (500@->INDBIL=="3")
USE LF_PCON SELECT (SOTTOCONTO!="") && ((500@->INDBIL=="1")||(500@->INDBIL=="3"))
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
COPY INPUT F_SPBOCODCON2A
INPUT SOTTOCONTO F_SPBOCODCON3A
@ -270,14 +274,14 @@ DISPLAY "Descrizione@50" DESCR
COPY OUTPUT F_SPBOCODCON2A
OUTPUT F_SPBOCODCON3A SOTTOCONTO
OUTPUT F_SPBODESCONA DESCR
WARNING "Il conto deve essere un costo"
WARNING "Il conto deve essere un costo o una attività"
CHECKTYPE NORMAL
END
STRING F_SPBODESCONA 50
BEGIN
PROMPT 2 15 "Descrizione "
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") && (500@->INDBIL=="3")
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") && ((500@->INDBIL=="1")||(500@->INDBIL=="3"))
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
INPUT DESCR F_SPBODESCONA
DISPLAY "Descrizione@50" DESCR
@ -285,7 +289,7 @@ DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SPBOCODCON3A
WARNING "Il conto deve essere un costo"
WARNING "Il conto deve essere un costo o una attività"
CHECKTYPE NORMAL
END

View File

@ -565,48 +565,68 @@ real TRiga_documento::importo(bool scontato, bool lordo, int ndec) const
importo = -prezzo(false, lordo, ALL_DECIMALS);
TGeneric_distrib d(importo, ALL_DECIMALS);
TRiepilogo_iva * aliquota;
const TString4 codiva = get(RDOC_CODIVA);
if (doc_al_lordo)
if (codiva.blank())
{
if (!lordo)
if (doc_al_lordo)
{
TAssoc_array & table = ((TDocumento &) doc()).tabella_iva(true);
importo = ZERO;
table.restart();
for (aliquota = (TRiepilogo_iva *) table.get(); aliquota != NULL;
aliquota = (TRiepilogo_iva *) table.get())
d.add(aliquota->imp_orig());
table.restart();
for (aliquota = (TRiepilogo_iva *) table.get(); aliquota != NULL;
aliquota = (TRiepilogo_iva *) table.get())
if (!lordo)
{
const TCodiceIVA & iva = aliquota->cod_iva();
real slice = d.get();
TAssoc_array & table = ((TDocumento &)doc()).tabella_iva(true);
importo = ZERO;
table.restart();
for (aliquota = (TRiepilogo_iva *)table.get(); aliquota != NULL;
aliquota = (TRiepilogo_iva *)table.get())
d.add(aliquota->imp_orig());
table.restart();
for (aliquota = (TRiepilogo_iva *)table.get(); aliquota != NULL;
aliquota = (TRiepilogo_iva *)table.get())
{
const TCodiceIVA & iva = aliquota->cod_iva();
real slice = d.get();
iva.scorpora(slice, ALL_DECIMALS, ((TDocumento &) doc()).valuta());
importo += slice;
iva.scorpora(slice, ALL_DECIMALS, ((TDocumento &)doc()).valuta());
importo += slice;
}
}
}
else
{
if (lordo)
{
TAssoc_array & table = ((TDocumento &)doc()).tabella_iva(true);
importo = ZERO;
table.restart();
for (aliquota = (TRiepilogo_iva *)table.get(); aliquota != NULL;
aliquota = (TRiepilogo_iva *)table.get())
d.add(aliquota->imp_orig());
table.restart();
for (aliquota = (TRiepilogo_iva *)table.get(); aliquota != NULL;
aliquota = (TRiepilogo_iva *)table.get())
{
const TCodiceIVA & iva = aliquota->cod_iva();
importo += iva.lordo(d.get(), ALL_DECIMALS, ((TDocumento &)doc()).valuta());
}
}
}
}
else
{
if (lordo)
{
TAssoc_array & table = ((TDocumento &) doc()).tabella_iva(true);
importo = ZERO;
table.restart();
for (aliquota = (TRiepilogo_iva *) table.get(); aliquota != NULL;
aliquota = (TRiepilogo_iva *) table.get())
d.add(aliquota->imp_orig());
table.restart();
for (aliquota = (TRiepilogo_iva *) table.get(); aliquota != NULL;
aliquota = (TRiepilogo_iva *) table.get())
{
const TCodiceIVA & iva = aliquota->cod_iva();
TCodiceIVA i(codiva);
importo += iva.lordo(d.get(), ALL_DECIMALS, ((TDocumento &) doc()).valuta());
}
if (doc_al_lordo)
{
if (!lordo)
importo += i.imposta(importo, ALL_DECIMALS, ((TDocumento &)doc()).valuta());
}
else
{
if (lordo)
importo += i.imposta(importo, ALL_DECIMALS, ((TDocumento &)doc()).valuta());
}
}
}
break;

View File

@ -1197,9 +1197,9 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
}
// Codice registro IVA
const TRegistro& registro = _caus->reg();
TRegistro& registro = _caus->reg();
const bool iva_mov = registro.ok();
long ult_prot = 0;
long ult_prot = registro.protocol();
if (iva_mov)
{
@ -1212,16 +1212,21 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
{
if (_nump_iva) // Reperisce l'ultimo numero di protocollo dal registro IVA
{
const bool upd_prot = ini_get_bool(CONFIG_DITTA, "ve", "UpdateProtocol", true);
TRegistro reg(registro);
ult_prot = reg.protocol();
if (upd_prot)
ult_prot = reg.protocol();
ult_prot++;
if (ult_prot <= 0)
{
_error = ultprot_error;
return _error;
}
reg.update(ult_prot, doc.data());
if (upd_prot)
reg.update(ult_prot, doc.data());
else
registro.update(ult_prot, doc.data());
}
else // oppure dal numero di documento
ult_prot = doc.numero();

View File

@ -75,12 +75,12 @@ Caption = "Stampa tabelle personalizzazione documenti"
Picture = <ba03>
Module = 0
Flags = ""
Item_01 = "Tipo documento", "ve1 -3 %TIP", "F"
Item_02 = "Numerazione documenti", "ve1 -3 %NUM", "F"
Item_03 = "Tipo riga documento", "ve1 -3 %TRI", "F"
Item_04 = "Formule documento", "ve1 -3 %FRD", "F"
Item_05 = "Formule righe documento", "ve1 -3 %FRR", "F"
Item_06 = "Formule ricalcolo magazzino", "ve1 -3 %FRM", "F"
Item_07 = "Elaborazioni differite", "ve1 -3 %ELD", "F"
Item_08 = "Stati documento", "ve1 -3 %STD", "F"
Item_01 = "Tipo documento", "ba3 -1 %TIP", "F"
Item_02 = "Numerazione documenti", "ba3 -1 %NUM", "F"
Item_03 = "Tipo riga documento", "ba3 -1 %TRI", "F"
Item_04 = "Formule documento", "ba3 -1 %FRD", "F"
Item_05 = "Formule righe documento", "ba3 -1 %FRR", "F"
Item_06 = "Formule ricalcolo magazzino", "ba3 -1 %FRM", "F"
Item_07 = "Elaborazioni differite", "ba3 -1 %ELD", "F"
Item_08 = "Stati documento", "ba3 -1 %STD", "F"