Patch level : 12.0 728

Files correlati     : fp
Commento            :
- Aggiunto programma fp1 con stampa elenco bolli in fattura
- Data una ripulita al menu fp
This commit is contained in:
Mattia Tollari 2019-03-12 12:51:40 +01:00
parent bb3077cd24
commit 18f4c6985c
10 changed files with 428 additions and 7 deletions

View File

@ -15,6 +15,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AgaLib", "AgaLib.vcxproj",
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tflib", "tflib.vcxproj", "{7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fp1", "fp1.vcxproj", "{A539BCC1-D08F-4D78-A8EA-65560F4A60CD}"
ProjectSection(ProjectDependencies) = postProject
{C575788B-0BE4-4F68-B9C9-3C204EC04E07} = {C575788B-0BE4-4F68-B9C9-3C204EC04E07}
{7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5} = {7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@ -37,6 +43,10 @@ Global
{7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5}.Debug|Win32.Build.0 = Debug|Win32
{7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5}.Release|Win32.ActiveCfg = Release|Win32
{7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5}.Release|Win32.Build.0 = Release|Win32
{A539BCC1-D08F-4D78-A8EA-65560F4A60CD}.Debug|Win32.ActiveCfg = Debug|Win32
{A539BCC1-D08F-4D78-A8EA-65560F4A60CD}.Debug|Win32.Build.0 = Debug|Win32
{A539BCC1-D08F-4D78-A8EA-65560F4A60CD}.Release|Win32.ActiveCfg = Release|Win32
{A539BCC1-D08F-4D78-A8EA-65560F4A60CD}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -196,6 +196,7 @@
<ClCompile Include="..\src\fp\fp0400.cpp" />
<ClCompile Include="..\src\fp\fp0500.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
</ItemGroup>
<ItemGroup>

View File

@ -173,7 +173,9 @@
<ItemGroup>
<ClCompile Include="..\src\fp\fplib01.cpp" />
<ClCompile Include="..\src\fp\fplib02.cpp" />
<ClCompile Include="..\src\fp\fplib03.cpp" />
<ClCompile Include="..\src\fp\fplib03.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View File

@ -1,5 +1,5 @@
#ifndef __TF0_H
#define __TF0_H
#ifndef __FP0_H
#define __FP0_H
int fp0100(int argc, char* argv[]);
int fp0200(int argc, char* argv[]);

16
src/fp/fp1.cpp Normal file
View File

@ -0,0 +1,16 @@
#include <xvt.h>
#include "fp1.h"
int main(int argc, char** argv)
{
int rt = -1;
const int r = (argc > 1) ? atoi( &argv[1][1] ) : 1;
// Stampe fatturazione elettronica
switch (r)
{
default: rt = fp1100(argc, argv); break; // Stampa bolli fatture
}
return rt;
}

6
src/fp/fp1.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef __FP1_H
#define __FP1_H
int fp1100(int argc, char* argv[]);
#endif

178
src/fp/fp1100.cpp Normal file
View File

@ -0,0 +1,178 @@
#include <confapp.h>
#include <automask.h>
#include <sheet.h>
#include <utility.h>
#include <urldefid.h> // ID Bottoni
#include "fp1.h"
#include "fp1100a.h"
#include <tsdb.h>
#include "recset.h"
#include "progind.h"
#include "../ve/velib.h"
#include "fplib.h"
class TBolliinfatt_mask : public TAutomask
{
protected:
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
void fill();
public:
TBolliinfatt_mask() : TAutomask("fp1100a"){};
};
bool TBolliinfatt_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case DLG_EXPORT:
if (e == fe_button)
{
TSheet_field& sf = sfield(F_DOCS);
if(sf.items() > 0)
{
sf.esporta();
}
else
{
warning_box("Impossibile esportare una tabella vuota!");
}
}
break;
case DLG_RECALC:
if (e == fe_button)
fill();
case DLG_USER:
if (e == fe_button && jolly > 0)
{
TSheet_field& docs = sfield(F_DOCS);
TToken_string& row = docs.row(docs.selected());
TRectype doc(LF_DOC);
doc.put(DOC_PROVV, 'D');
doc.put(DOC_ANNO, row.get(1));
doc.put(DOC_CODNUM, row.get(2));
doc.put(DOC_TIPODOC, row.get(3));
doc.put(DOC_NDOC, row.get(5));
if (doc.edit())
fill();
}
break;
default:
break;
}
return true;
}
void TBolliinfatt_mask::fill()
{
TSheet_field& docs = sfield(F_DOCS);
TString_array& sht = docs.rows_array();
docs.hide();
sht.destroy();
TDate dal = get_date(F_DADATA);
TDate al = get_date(F_ADATA);
if(!dal.ok())
{
dal = TDate(01, 01, 2019);
set(F_DADATA, dal);
}
if(!al.ok())
{
al = TDate(TODAY);
set(F_ADATA, al);
}
// Record di controllo per eventuali elaborazioni precedenti
TString hfatt, bfatt;
TString query;
query << "USE 33 KEY 3 \n" <<
"SELECT 33.TIPOCF==\"C\"" <<
TISAM_recordset::add_between_filter(DOC_CODNUM, get(F_DACODNUM), get(F_ACODNUM)) <<
" \n" <<
"JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
"JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
"JOIN %TIP TO 33 ALIAS 400 INTO CODTAB==TIPODOC \n" <<
"FROM DATADOC=#DADATADOC \n" <<
"TO DATADOC=#ADATADOC";
TISAM_recordset rec(query);
rec.set_var("#DADATADOC", dal);
rec.set_var("#ADATADOC", al);
rec.set_var("#DACODNUM", get(F_DACODNUM));
rec.set_var("#ACODNUM", get(F_ACODNUM));
TProgress_monitor pi(rec.items(), nullptr);
for (bool okc = rec.move_first(); okc; okc = rec.move_next())
{
if (!pi.add_status())
break;
const TRectype& doc = rec.cursor()->curr();
const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC));
bool sent = false;
if (chiave_paf(doc, hfatt, bfatt))
{
TString qry_paf7 = "SELECT PAF0700F.P7_IMPORTOBOLLO, PAF0100F.P1_GESTIONE FROM PAF0700F JOIN PAF0100F ON P7_KEYPRGINVIO = P1_KEYPRGINVIO AND P7_KEYHEADERFATT = P1_KEYHEADERFATT AND P7_KEYBODYFATT = P1_KEYBODYFATT WHERE P7_KEYHEADERFATT = '";
qry_paf7 << hfatt << "' AND P7_KEYBODYFATT = '" << bfatt << "' AND P7_IMPORTOBOLLO > 0";
if (!fp_db().sq_set_exec(qry_paf7) || (fp_db().sq_get("P1_GESTIONE") != "N" && (fp_settings().is_f8() ? fp_db().sq_get("P1_GESTIONE") != "X" : true)))
{
continue;
}
}
TToken_string& row = docs.row(-1);
row.add(rec.get(DOC_ANNO).as_int());
row.add(rec.get(DOC_CODNUM).as_string());
row.add(rec.get(DOC_TIPODOC).as_string());
if (!rec.get(DOC_TIPODOCSDI).is_empty())
row.add(rec.get(DOC_TIPODOCSDI).as_string());
else
row.add(td.tipo_doc_sdi());
row.add(rec.get(DOC_NDOC).as_int());
row.add(rec.get(DOC_DATADOC).as_date());
row.add(rec.get("33.TOTDOC").as_real());
row.add(rec.get("33.IMPOSTE").as_real());
row.add(rec.get(CFV_CODCF).as_int());
row.add(rec.get("20." CLI_RAGSOC).as_string());
row.add(fp_db().sq_get("P7_IMPORTOBOLLO"));
row.add(rec.get(DOC_ADDBOLLI).as_string());
}
if(docs.items() == 0)
{
warning_box("Non sono stati trovati documenti con i filtri scelti.");
}
docs.force_update();
docs.show();
}
class TBolliinfatt_app : public TSkeleton_application
{
public:
virtual void main_loop() override;
};
void TBolliinfatt_app::main_loop()
{
TBolliinfatt_mask pm;
while (pm.run() == K_ENTER)
{
}
}
int fp1100(int argc, char* argv[])
{
TBolliinfatt_app appc;
appc.run(argc, argv, TR("Bolli in fattura FP"));
return 0;
}

20
src/fp/fp1100a.h Normal file
View File

@ -0,0 +1,20 @@
#define F_DADATA 201
#define F_ADATA 202
#define F_DACODNUM 203
#define F_DATIPODOC 204
#define F_ACODNUM 205
#define F_ATIPODOC 206
#define F_DOCS 207
#define S_ANNO 101
#define S_CODNUM 102
#define S_TIPODOC 103
#define S_CODSDI 104
#define S_NDOC 105
#define S_DATADOC 106
#define S_TOTDOC 107
#define S_IMPOSTADOC 108
#define S_CLIENTE 109
#define S_RAGSOC 110
#define S_BOLLO 111
#define S_ADDEBITO 112

172
src/fp/fp1100a.uml Normal file
View File

@ -0,0 +1,172 @@
#include "fp1100a.h"
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_RECALC 2 2
BEGIN
PROMPT 1 1 "~Carica"
PICTURE TOOL_CONVERT
END
BUTTON DLG_EXPORT 2 2
BEGIN
PROMPT 1 1 "~Excel"
PICTURE TOOL_EXCEL
END
#include <helpbar.h>
ENDPAGE
PAGE "Filtri" 0 2 0 0
DATE F_DADATA
BEGIN
PROMPT 1 1 "Data iniziale"
CHECKTYPE REQUIRED
END
DATE F_ADATA
BEGIN
PROMPT 50 1 "Data finale "
VALIDATE DATE_CMP_FUNC >= F_DADATA
WARNING "La data finale non può essere minore della data iniziale"
CHECKTYPE REQUIRED
END
STRING F_DACODNUM 4
BEGIN
PROMPT 1 2 "Da numerazione "
HELP "Da codice numerazione"
USE %NUM
INPUT CODTAB F_DACODNUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DACODNUM CODTAB
FLAG "UPA"
CHECKTYPE FORCED
WARNING "Numerazione assente"
KEY 1 2
END
STRING F_ACODNUM 4
BEGIN
PROMPT 50 2 "A numerazione "
HELP "Da codice numerazione"
USE %NUM
INPUT CODTAB F_ACODNUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_ACODNUM CODTAB
FLAG "UPA"
CHECKTYPE FORCED
WARNING "Numerazione assente"
KEY 1 2
END
SPREADSHEET F_DOCS
BEGIN
PROMPT 0 5 ""
ITEM "Anno"
ITEM "Cod.\nNum.@4"
ITEM "Tipo\nDoc@4"
ITEM "Tipo SDI@4"
ITEM "Num.\nDoc.@7"
ITEM "Data\nDoc.@10"
ITEM "Totale\nDoc.@10"
ITEM "Imposta\nDoc.@10"
ITEM "Cliente"
ITEM "Ragione Sociale@50"
ITEM "Bollo"
ITEM "Addebito"
END
ENDPAGE
ENDMASK
PAGE "Documento" -1 -1 80 6
NUMBER S_ANNO 4
BEGIN
PROMPT 1 1 "Anno "
END
STRING S_CODNUM 4
BEGIN
PROMPT 25 1 "Numerazione "
END
STRING S_TIPODOC 4
BEGIN
PROMPT 46 1 "Tipo Documento "
END
STRING S_CODSDI 4
BEGIN
PROMPT 1 2 "Tipo Doc SDI"
END
NUMBER S_NDOC 7
BEGIN
PROMPT 25 2 "Numero "
END
DATE S_DATADOC
BEGIN
PROMPT 46 2 "Data "
END
NUMBER S_TOTDOC 15 2
BEGIN
PROMPT 1 3 "Totale Doc. "
END
NUMBER S_IMPOSTADOC 15 2
BEGIN
PROMPT 46 3 "Imposta "
END
NUMBER S_CLIENTE 6
BEGIN
PROMPT 1 4 "Cliente "
END
STRING S_RAGSOC 50
BEGIN
PROMPT 25 4 ""
END
NUMBER S_BOLLO 4 2
BEGIN
PROMPT 1 5 "Importo bollo"
END
BOOLEAN S_ADDEBITO
BEGIN
PROMPT 20 5 "Addebito cliente"
END
ENDPAGE
TOOLBAR "Documento" 0 0 0 2
BUTTON DLG_OK 2 2
BEGIN
PROMPT 1 1 ""
END
BUTTON DLG_USER 2 2
BEGIN
PROMPT 1 1 "Collega"
PICTURE TOOL_LINK
END
BUTTON DLG_CANCEL 2 2
BEGIN
PROMPT 1 1 ""
END
ENDPAGE
ENDMASK

View File

@ -3,8 +3,24 @@ Caption = "Trasferimento Fatture"
Picture = <cg01>
Module = fp
Flags = ""
Item_01 = "Configurazione", "fp0 -0", ""+
Item_01 = "Manutenzione modulo", [FPMENU_003]
Item_02 = "Invio fatture", "fp0 -2", ""
Item_03 = "Monitor Mancata Consegna", "fp0 -4", ""
Item_04 = "Monitor Fatture Passive", "fp0 -3", ""
Item_05 = "Inserimento riferimenti C/F", "fp0 -1", ""
Item_03 = "Monitor Fatture Passive", "fp0 -3", ""
Item_04 = "Stampe", [FPMENU_002]
[FPMENU_002]
Caption = "Stampe"
Picture = <cg01>
Module = fp
Flags = ""
Item_01 = "Elenco Mancata Consegna", "fp0 -4", ""
Item_02 = "Elenco bolli in fattura", "fp1 -0", ""
[FPMENU_003]
Caption = "Manutenzione"
Picture = <cg01>
Module = fp
Flags = ""
Item_01 = "Configurazione", "fp0 -0", "", 10210
Item_02 = "Inserimento riferimenti C/F", "fp0 -1", ""