Patch level : 12.0 662
Files correlati : fp Commento : - Aggiornamento progetto fp per nuovo programma - Aggiunto programma per inserimento di pec e cod sdi di tutti i clienti/fornitori in una schermata - Sistemata posizione incremento progress_monitor, sistemato errore celle non colorate togliendo force_update() di troppo - Come aveva fatto notare alessandro, tolto stringa_eng() e utilizzato string() - Aggiunto in about.cpp libreria SQLAPI, cambiata scrittura versione c++ con TString. Da quando quest'ultima è stata aggiornata per VS 2017 in release i programmi si chiudono alla seconda apertura di info, questo non si presenta in debug, vediamo se si risolve qualcosa.
This commit is contained in:
parent
2c38a7d14f
commit
db84f03156
12
build/fp.sln
12
build/fp.sln
@ -3,6 +3,8 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio 15
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 15.0.27130.2027
|
VisualStudioVersion = 15.0.27130.2027
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fplib", "fplib.vcxproj", "{C575788B-0BE4-4F68-B9C9-3C204EC04E07}"
|
||||||
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fp0", "fp0.vcxproj", "{9C91BACF-9A70-4973-B8CC-FA3D2AF9867C}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fp0", "fp0.vcxproj", "{9C91BACF-9A70-4973-B8CC-FA3D2AF9867C}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{C575788B-0BE4-4F68-B9C9-3C204EC04E07} = {C575788B-0BE4-4F68-B9C9-3C204EC04E07}
|
{C575788B-0BE4-4F68-B9C9-3C204EC04E07} = {C575788B-0BE4-4F68-B9C9-3C204EC04E07}
|
||||||
@ -10,14 +12,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fp0", "fp0.vcxproj", "{9C91
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AgaLib", "AgaLib.vcxproj", "{2D38A763-3D74-4338-9362-B891784EC90E}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AgaLib", "AgaLib.vcxproj", "{2D38A763-3D74-4338-9362-B891784EC90E}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fplib", "fplib.vcxproj", "{C575788B-0BE4-4F68-B9C9-3C204EC04E07}"
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Win32 = Debug|Win32
|
Debug|Win32 = Debug|Win32
|
||||||
Release|Win32 = Release|Win32
|
Release|Win32 = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{C575788B-0BE4-4F68-B9C9-3C204EC04E07}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{C575788B-0BE4-4F68-B9C9-3C204EC04E07}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{C575788B-0BE4-4F68-B9C9-3C204EC04E07}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{C575788B-0BE4-4F68-B9C9-3C204EC04E07}.Release|Win32.Build.0 = Release|Win32
|
||||||
{9C91BACF-9A70-4973-B8CC-FA3D2AF9867C}.Debug|Win32.ActiveCfg = Debug|Win32
|
{9C91BACF-9A70-4973-B8CC-FA3D2AF9867C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
{9C91BACF-9A70-4973-B8CC-FA3D2AF9867C}.Debug|Win32.Build.0 = Debug|Win32
|
{9C91BACF-9A70-4973-B8CC-FA3D2AF9867C}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{9C91BACF-9A70-4973-B8CC-FA3D2AF9867C}.Release|Win32.ActiveCfg = Release|Win32
|
{9C91BACF-9A70-4973-B8CC-FA3D2AF9867C}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
@ -26,10 +30,6 @@ Global
|
|||||||
{2D38A763-3D74-4338-9362-B891784EC90E}.Debug|Win32.Build.0 = Debug|Win32
|
{2D38A763-3D74-4338-9362-B891784EC90E}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{2D38A763-3D74-4338-9362-B891784EC90E}.Release|Win32.ActiveCfg = Release|Win32
|
{2D38A763-3D74-4338-9362-B891784EC90E}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{2D38A763-3D74-4338-9362-B891784EC90E}.Release|Win32.Build.0 = Release|Win32
|
{2D38A763-3D74-4338-9362-B891784EC90E}.Release|Win32.Build.0 = Release|Win32
|
||||||
{C575788B-0BE4-4F68-B9C9-3C204EC04E07}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{C575788B-0BE4-4F68-B9C9-3C204EC04E07}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{C575788B-0BE4-4F68-B9C9-3C204EC04E07}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{C575788B-0BE4-4F68-B9C9-3C204EC04E07}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -190,7 +190,7 @@
|
|||||||
<ClCompile Include="..\src\fp\fp0.cpp" />
|
<ClCompile Include="..\src\fp\fp0.cpp" />
|
||||||
<ClCompile Include="..\src\fp\fp0100.cpp" />
|
<ClCompile Include="..\src\fp\fp0100.cpp" />
|
||||||
<ClCompile Include="..\src\fp\fp0200.cpp">
|
<ClCompile Include="..\src\fp\fp0200.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\src\fp\fp0300.cpp" />
|
<ClCompile Include="..\src\fp\fp0300.cpp" />
|
||||||
<ClCompile Include="..\src\tf\tfutility.cpp" />
|
<ClCompile Include="..\src\tf\tfutility.cpp" />
|
||||||
@ -199,15 +199,12 @@
|
|||||||
<ClInclude Include="..\src\fp\fp0.h" />
|
<ClInclude Include="..\src\fp\fp0.h" />
|
||||||
<ClInclude Include="..\src\fp\fp0100a.h" />
|
<ClInclude Include="..\src\fp\fp0100a.h" />
|
||||||
<ClInclude Include="..\src\fp\fp0200a.h" />
|
<ClInclude Include="..\src\fp\fp0200a.h" />
|
||||||
<ClInclude Include="..\src\fp\fp0200b.h">
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\src\fp\fp0300a.h" />
|
<ClInclude Include="..\src\fp\fp0300a.h" />
|
||||||
<ClInclude Include="..\src\tf\tfutility.h" />
|
<ClInclude Include="..\src\tf\tfutility.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<MskCompiler Include="..\src\fp\fp0200a.uml">
|
<MskCompiler Include="..\src\fp\fp0200a.uml">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
</MskCompiler>
|
</MskCompiler>
|
||||||
<MskCompiler Include="..\src\fp\fp0300a.uml" />
|
<MskCompiler Include="..\src\fp\fp0300a.uml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -237,6 +234,9 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Library Include="..\lib\fplib.lib" />
|
<Library Include="..\lib\fplib.lib" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<MenCompiler Include="..\src\fp\fpmenu.men" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
<Import Project="CampoRules.targets" />
|
<Import Project="CampoRules.targets" />
|
||||||
|
@ -19,6 +19,9 @@
|
|||||||
<Filter Include="Libraries">
|
<Filter Include="Libraries">
|
||||||
<UniqueIdentifier>{d7227be8-6583-4473-895f-595f8a48a8cb}</UniqueIdentifier>
|
<UniqueIdentifier>{d7227be8-6583-4473-895f-595f8a48a8cb}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="Menu">
|
||||||
|
<UniqueIdentifier>{022385bd-474b-4d1f-a01c-6d799bae0328}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\src\fp\fp0.cpp">
|
<ClCompile Include="..\src\fp\fp0.cpp">
|
||||||
@ -42,7 +45,9 @@
|
|||||||
<ClCompile Include="..\src\fp\fp0300.cpp">
|
<ClCompile Include="..\src\fp\fp0300.cpp">
|
||||||
<Filter>Sources</Filter>
|
<Filter>Sources</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\src\fp\fp0200.cpp" />
|
<ClCompile Include="..\src\fp\fp0200.cpp">
|
||||||
|
<Filter>Sources</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\src\fp\fp0.h">
|
<ClInclude Include="..\src\fp\fp0.h">
|
||||||
@ -54,9 +59,6 @@
|
|||||||
<ClInclude Include="..\src\fp\fp0200a.h">
|
<ClInclude Include="..\src\fp\fp0200a.h">
|
||||||
<Filter>Headers</Filter>
|
<Filter>Headers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\src\fp\fp0200b.h">
|
|
||||||
<Filter>Headers</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\src\fp\fp0100a.h">
|
<ClInclude Include="..\src\fp\fp0100a.h">
|
||||||
<Filter>Headers</Filter>
|
<Filter>Headers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@ -91,4 +93,9 @@
|
|||||||
<Filter>Libraries</Filter>
|
<Filter>Libraries</Filter>
|
||||||
</Library>
|
</Library>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<MenCompiler Include="..\src\fp\fpmenu.men">
|
||||||
|
<Filter>Menu</Filter>
|
||||||
|
</MenCompiler>
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -9,7 +9,7 @@ int main(int argc, char** argv)
|
|||||||
switch (r)
|
switch (r)
|
||||||
{
|
{
|
||||||
case 2: rt = fp0300(argc, argv); break; // Gestione fatture attive (PAA, Ex Fattura PA)
|
case 2: rt = fp0300(argc, argv); break; // Gestione fatture attive (PAA, Ex Fattura PA)
|
||||||
//case 1: rt = fp0200(argc, argv); break; // Gestione fatture passive (PAF)
|
case 1: rt = fp0200(argc, argv); break; // Inserimento massivo PEC e Cod Sdi clifo
|
||||||
default: rt = fp0100(argc, argv); break; // Configurazione
|
default: rt = fp0100(argc, argv); break; // Configurazione
|
||||||
}
|
}
|
||||||
return rt;
|
return rt;
|
||||||
|
@ -1,6 +1,242 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <config.h>
|
||||||
|
#include "fplib01.h"
|
||||||
|
#include <progind.h>
|
||||||
|
#include <cfven.h>
|
||||||
|
#include <doc.h>
|
||||||
|
|
||||||
|
#include "../ve/velib05.h"
|
||||||
|
#include "../cg/cglib03.h"
|
||||||
|
#include "../fe/felib.h"
|
||||||
|
|
||||||
#include "fp0.h"
|
#include "fp0.h"
|
||||||
|
#include "fp0200a.h"
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// TCC_mask
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TCC_mask : public TAutomask
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
||||||
|
void fill();
|
||||||
|
void init();
|
||||||
|
void save_all();
|
||||||
|
|
||||||
|
public:
|
||||||
|
TCC_mask() : TAutomask("fp0200a") {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TCC_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case DLG_RECALC:
|
||||||
|
if (e == fe_button)
|
||||||
|
fill();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DLG_SAVEREC:
|
||||||
|
if (e == fe_button)
|
||||||
|
save_all();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DLG_USER:
|
||||||
|
if (e == fe_button && jolly > 0)
|
||||||
|
{
|
||||||
|
TSheet_field& clifo = sfield(F_RIGHE);
|
||||||
|
TToken_string& row = clifo.row(clifo.selected());
|
||||||
|
TRectype rec(LF_CLIFO);
|
||||||
|
rec.put(CLI_TIPOCF, get(F_TIPOCF));
|
||||||
|
rec.put(CLI_CODCF, row.get(0));
|
||||||
|
if (rec.edit())
|
||||||
|
fill();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case F_TIPOCF:
|
||||||
|
if(e == fe_modify)
|
||||||
|
{
|
||||||
|
set(F_DACODCF, "");
|
||||||
|
set(F_ACODCF, "");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case S_CODSDI:
|
||||||
|
if(e == fe_modify)
|
||||||
|
{
|
||||||
|
if (o.mask().get_bool(S_ISPA))
|
||||||
|
{
|
||||||
|
if (o.mask().get(S_CODSDI).len() != 6)
|
||||||
|
{
|
||||||
|
warning_box("La lunghezza di un codice SDI di una P.A. deve essere di 6 caratteri!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (o.mask().get(S_CODSDI).len() != 7)
|
||||||
|
{
|
||||||
|
warning_box("La lunghezza di un codice SDI di un privato deve essere di 7 caratteri!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCC_mask::fill()
|
||||||
|
{
|
||||||
|
TSheet_field& righe = sfield(F_RIGHE);
|
||||||
|
TString_array& sht = righe.rows_array();
|
||||||
|
|
||||||
|
TString query;
|
||||||
|
|
||||||
|
query << "USE CLIFO \n" <<
|
||||||
|
"JOIN CFVEN TO CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF \n"<<
|
||||||
|
"FROM TIPOCF=#DATIPOCF ";
|
||||||
|
if (get(F_DACODCF).full())
|
||||||
|
query << "CODCF=#DACODCF";
|
||||||
|
|
||||||
|
query << "\nTO TIPOCF=#ATIPOCF ";
|
||||||
|
if (get(F_DACODCF).full())
|
||||||
|
query << "CODCF=#ACODCF";
|
||||||
|
|
||||||
|
TISAM_recordset rec(query);
|
||||||
|
|
||||||
|
// Valorizzo le variabili
|
||||||
|
rec.set_var("#DATIPOCF", get(F_TIPOCF));
|
||||||
|
rec.set_var("#ATIPOCF", get(F_TIPOCF));
|
||||||
|
if (get(F_DACODCF).full())
|
||||||
|
rec.set_var("#DACODCF", get(F_DACODCF));
|
||||||
|
if (get(F_DACODCF).full())
|
||||||
|
rec.set_var("#ACODCF", get(F_ACODCF));
|
||||||
|
|
||||||
|
TProgress_monitor pi(rec.items(), "Caricamento lista C/F");
|
||||||
|
for (bool okc = rec.move_first(); okc; okc = rec.move_next())
|
||||||
|
{
|
||||||
|
if (!pi.add_status())
|
||||||
|
break;
|
||||||
|
const TRectype& doc = rec.cursor()->curr();
|
||||||
|
TToken_string& row = righe.row(-1);
|
||||||
|
|
||||||
|
|
||||||
|
row.add(rec.get(CLI_CODCF).as_string());
|
||||||
|
row.add(rec.get(CLI_RAGSOC).as_string());
|
||||||
|
row.add(rec.get(CLI_ALLEG).as_int() == 7 ? "X" : "");
|
||||||
|
row.add(rec.get(CLI_PEC).as_string());
|
||||||
|
row.add(rec.get("17." CFV_PADESTIN).as_string());
|
||||||
|
|
||||||
|
}
|
||||||
|
righe.force_update();
|
||||||
|
righe.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCC_mask::save_all()
|
||||||
|
{
|
||||||
|
TString_array& sht = sfield(F_RIGHE).rows_array();
|
||||||
|
|
||||||
|
TLocalisamfile clifo(LF_CLIFO), cfven(LF_CFVEN);
|
||||||
|
int ok = NOERR;
|
||||||
|
if (!sht.empty())
|
||||||
|
{
|
||||||
|
TProgress_monitor pi(sht.items(), "Salvataggio dati");
|
||||||
|
FOR_EACH_ARRAY_ROW(sht, r, riga)
|
||||||
|
{
|
||||||
|
if (!pi.add_status())
|
||||||
|
break;
|
||||||
|
|
||||||
|
clifo.zero();
|
||||||
|
clifo.put(CLI_TIPOCF, get(F_TIPOCF));
|
||||||
|
clifo.put(CLI_CODCF, riga->get(xvtil_cid2index(S_CODCF)));
|
||||||
|
|
||||||
|
const int clifo_err = clifo.read();
|
||||||
|
if (clifo_err == NOERR)
|
||||||
|
{
|
||||||
|
clifo.put(CLI_PEC, riga->get(xvtil_cid2index(S_PEC)));
|
||||||
|
if (clifo.rewrite() != NOERR)
|
||||||
|
{
|
||||||
|
TString msg = "Fallito salvataggio record in CLIFO";
|
||||||
|
msg << clifo.get(CLI_TIPOCF) << " " << clifo.get(CLI_CODCF) << "\nSalvataggio abortito";
|
||||||
|
error_box(msg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString msg = "Impossibile trovare in CLIFO ";
|
||||||
|
msg << clifo.get(CLI_TIPOCF) << " " << clifo.get(CLI_CODCF) << " errore " << clifo_err <<".\nSalvataggio abortito";
|
||||||
|
error_box(msg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
cfven.zero();
|
||||||
|
cfven.put(CFV_TIPOCF, get(F_TIPOCF));
|
||||||
|
cfven.put(CFV_CODCF, riga->get(xvtil_cid2index(S_CODCF)));
|
||||||
|
const int err = cfven.read();
|
||||||
|
if (err == NOERR || err == _iskeynotfound)
|
||||||
|
{
|
||||||
|
cfven.put(CFV_PADESTIN, riga->get(xvtil_cid2index(S_CODSDI)));
|
||||||
|
if (cfven.rewrite_write() != NOERR)
|
||||||
|
{
|
||||||
|
TString msg = "Fallito salvataggio record in CFVEN ";
|
||||||
|
msg << cfven.get(CFV_TIPOCF) << " " << cfven.get(CFV_CODCF) << "\nSalvataggio abortito";
|
||||||
|
error_box(msg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString msg = "Impossibile trovare in CFVEN ";
|
||||||
|
msg << clifo.get(CLI_TIPOCF) << " " << clifo.get(CLI_CODCF) << " errore " << clifo_err << ".\nSalvataggio abortito";
|
||||||
|
error_box(msg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// TDoc2Paf
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TCC_app : public TSkeleton_application
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool create() override;
|
||||||
|
virtual void main_loop();
|
||||||
|
|
||||||
|
TCC_app() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TCC_app::create()
|
||||||
|
{
|
||||||
|
open_files(LF_CLIFO, LF_CFVEN, 0);
|
||||||
|
|
||||||
|
TRectype cfven(LF_CFVEN);
|
||||||
|
if (cfven.length(CFV_PADESTIN) != 7) // Nuova lunghezza per privati
|
||||||
|
return error_box(TR("Database non convertito per fatturazione F.P."));
|
||||||
|
|
||||||
|
return TSkeleton_application::create();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCC_app::main_loop()
|
||||||
|
{
|
||||||
|
int ndocs = 0;
|
||||||
|
TCC_mask mask;
|
||||||
|
|
||||||
|
while (mask.run() == K_ENTER) {}
|
||||||
|
}
|
||||||
|
|
||||||
int fp0200(int argc, char* argv[])
|
int fp0200(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
TCC_app app;
|
||||||
|
app.run(argc, argv, TR("Inserimento massivo codici F.P."));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
#define S_CODCF 101
|
||||||
|
#define S_RAGSOC 102
|
||||||
|
#define S_ISPA 103
|
||||||
|
#define S_PEC 104
|
||||||
|
#define S_CODSDI 105
|
||||||
|
|
||||||
|
#define F_TIPOCF 201
|
||||||
|
#define F_DACODCF 202
|
||||||
|
#define F_ACODCF 203
|
||||||
|
#define F_RIGHE 204
|
@ -7,197 +7,65 @@ BEGIN
|
|||||||
PICTURE TOOL_CONVERT
|
PICTURE TOOL_CONVERT
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_ARCHIVE 2 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 1 "Controlla"
|
|
||||||
PICTURE TOOL_SMILE
|
|
||||||
END
|
|
||||||
|
|
||||||
BUTTON DLG_SAVEREC 2 2
|
BUTTON DLG_SAVEREC 2 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 3 1 "Salva"
|
PROMPT 3 1 "Salva"
|
||||||
PICTURE TOOL_SAVEREC
|
PICTURE TOOL_SAVEREC
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_EDIT 10 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT 3 1 "E~xcel"
|
|
||||||
PICTURE TOOL_EXCEL
|
|
||||||
END
|
|
||||||
|
|
||||||
BUTTON DLG_OK 2 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 1 "Esporta"
|
|
||||||
PICTURE TOOL_ELABORA
|
|
||||||
END
|
|
||||||
|
|
||||||
BUTTON DLG_EMAIL 2 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 1 "Crea XML"
|
|
||||||
PICTURE TOOL_EMAIL
|
|
||||||
END
|
|
||||||
|
|
||||||
#include <helpbar.h>
|
#include <helpbar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Impostazioni" 0 2 0 0
|
PAGE "Elenco clienti/fornitori" 0 2 0 0
|
||||||
|
|
||||||
DATE F_DATAINI
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 1 "Data iniziale:"
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
VALIDATE DATE_CMP_FUNC <= F_DATAFIN
|
|
||||||
WARNING "La data iniziale non può essere maggiore della data finale"
|
|
||||||
END
|
|
||||||
|
|
||||||
DATE F_DATAFIN
|
|
||||||
BEGIN
|
|
||||||
PROMPT 40 1 "Data Finale: "
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
VALIDATE DATE_CMP_FUNC >= F_DATAINI
|
|
||||||
WARNING "La data finale non può essere minore della data iniziale"
|
|
||||||
END
|
|
||||||
|
|
||||||
RADIOBUTTON F_TIPOCF 15
|
RADIOBUTTON F_TIPOCF 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Tipo C/F"
|
PROMPT 1 0 "Tipo C/F"
|
||||||
ITEM "C|Cliente"
|
ITEM "C|Cliente"
|
||||||
ITEM "F|Fornitore"
|
ITEM "F|Fornitore"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODCF 6
|
NUMBER F_DACODCF 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 18 3 "Codice:"
|
PROMPT 20 1 "Da codice"
|
||||||
USE LF_CLIFO
|
USE LF_CLIFO
|
||||||
INPUT TIPOCF F_TIPOCF SELECT
|
INPUT TIPOCF F_TIPOCF SELECT
|
||||||
INPUT CODCF F_CODCF
|
INPUT CODCF F_DACODCF
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
DISPLAY "Occasionale@C" OCCAS
|
DISPLAY "Occasionale@C" OCCAS
|
||||||
DISPLAY "Codice Fiscale@16" COFI
|
DISPLAY "Codice Fiscale@16" COFI
|
||||||
DISPLAY "Partita IVA@15" PAIV
|
DISPLAY "Partita IVA@15" PAIV
|
||||||
OUTPUT F_CODCF CODCF
|
OUTPUT F_DACODCF CODCF
|
||||||
OUTPUT F_RAGSOC RAGSOC
|
|
||||||
CHEKTYPE NORMAL
|
CHEKTYPE NORMAL
|
||||||
GROUP 1
|
|
||||||
FLAGS ""
|
FLAGS ""
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_RAGSOC 50 49
|
NUMBER F_ACODCF 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 18 4 "R.Soc: "
|
PROMPT 40 1 "A codice"
|
||||||
USE LF_CLIFO KEY 2
|
USE LF_CLIFO
|
||||||
INPUT TIPOCF F_TIPOCF SELECT
|
INPUT TIPOCF F_TIPOCF SELECT
|
||||||
INPUT RAGSOC F_RAGSOC
|
INPUT CODCF F_ACODCF
|
||||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
|
DISPLAY "Occasionale@C" OCCAS
|
||||||
DISPLAY "Codice Fiscale@16" COFI
|
DISPLAY "Codice Fiscale@16" COFI
|
||||||
DISPLAY "Partita IVA@15" PAIV
|
DISPLAY "Partita IVA@15" PAIV
|
||||||
COPY OUTPUT F_CODCF
|
OUTPUT F_ACODCF CODCF
|
||||||
ADD RUN CG0 -1
|
CHEKTYPE NORMAL
|
||||||
GROUP 1
|
|
||||||
FLAGS ""
|
FLAGS ""
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
RADIOBUTTON F_FATTSEL 25
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 6 "Fatture da visualizzare"
|
|
||||||
ITEM "0|Da inviare"
|
|
||||||
ITEM "1|Inviate"
|
|
||||||
ITEM "2|Mai elaborati"
|
|
||||||
ITEM "3|Forzate"
|
|
||||||
ITEM "4|Errate"
|
|
||||||
ITEM "5|Disabilitate"
|
|
||||||
ITEM "6|Tutti"
|
|
||||||
END
|
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 65 5
|
|
||||||
BEGIN
|
|
||||||
PROMPT 30 6 "Tipi documento selezionati"
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN B_TIPO_AUTOFATT
|
|
||||||
BEGIN
|
|
||||||
PROMPT 31 7 "Autofattura"
|
|
||||||
FLAGS ""
|
|
||||||
END
|
|
||||||
BOOLEAN B_TIPO_FATTACQ
|
|
||||||
BEGIN
|
|
||||||
PROMPT 45 7 "Fatt d'Acq"
|
|
||||||
FLAGS ""
|
|
||||||
END
|
|
||||||
BOOLEAN B_TIPO_FATTFISC
|
|
||||||
BEGIN
|
|
||||||
PROMPT 60 7 "Fatt Fisc"
|
|
||||||
FLAGS ""
|
|
||||||
END
|
|
||||||
BOOLEAN B_TIPO_FATTVEN
|
|
||||||
BEGIN
|
|
||||||
PROMPT 75 7 "Fatt Ven"
|
|
||||||
FLAGS ""
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN B_TIPO_FATTSCO
|
|
||||||
BEGIN
|
|
||||||
PROMPT 31 8 "Fatt Scontr"
|
|
||||||
FLAGS ""
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN B_TIPO_NOTC
|
|
||||||
BEGIN
|
|
||||||
PROMPT 45 8 "Nota Cred"
|
|
||||||
FLAGS ""
|
|
||||||
END
|
|
||||||
BOOLEAN B_TIPO_NOTD
|
|
||||||
BEGIN
|
|
||||||
PROMPT 60 8 "Nota Deb"
|
|
||||||
FLAGS ""
|
|
||||||
END
|
|
||||||
BOOLEAN B_TIPO_BOLLADOG
|
|
||||||
BEGIN
|
|
||||||
PROMPT 75 8 "Bolla Dog"
|
|
||||||
FLAGS ""
|
|
||||||
END
|
|
||||||
BOOLEAN B_TIPO_STORDOC
|
|
||||||
BEGIN
|
|
||||||
PROMPT 31 9 "Storno Doc"
|
|
||||||
FLAGS ""
|
|
||||||
END
|
|
||||||
|
|
||||||
ENDPAGE
|
|
||||||
|
|
||||||
PAGE "Trasferimento Fatture" 0 2 0 0
|
|
||||||
|
|
||||||
SPREADSHEET F_RIGHE
|
SPREADSHEET F_RIGHE
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 0 "Righe movimenti"
|
PROMPT 1 4 ""
|
||||||
ITEM "Data\n Reg.@8F"
|
|
||||||
ITEM "Tipo\nDocum.@2F"
|
|
||||||
ITEM "Tipo\nDoc. AE.@5F"
|
|
||||||
ITEM "Numero\nDocum.@5F"
|
|
||||||
ITEM "Data\nDocum.@10"
|
|
||||||
ITEM "Aliquota@4"
|
|
||||||
ITEM "Imponibile@10"
|
|
||||||
ITEM "Imposta@10"
|
|
||||||
ITEM "Natura\nIVA@4"
|
|
||||||
ITEM "% Detr.@6"
|
|
||||||
ITEM "C/F@2"
|
|
||||||
ITEM "Codice@6"
|
ITEM "Codice@6"
|
||||||
ITEM "Occas.@16"
|
ITEM "Ragione Sociale"
|
||||||
ITEM "Ragione Sociale@35"
|
ITEM "P.A.@4"
|
||||||
ITEM "RF/SO@16"
|
ITEM "PEC"
|
||||||
ITEM "Rag. Soc. RF/SO@35"
|
ITEM "Cod. SDI@10"
|
||||||
ITEM "Partita IVA@11"
|
|
||||||
ITEM "Codice Fiscale@15"
|
|
||||||
ITEM "Rev.\nCharge@4"
|
|
||||||
ITEM "Auto\nfatt.@3"
|
|
||||||
ITEM "Spedita@5"
|
|
||||||
ITEM "Inviare@5"
|
|
||||||
ITEM "Modificata@10"
|
|
||||||
ITEM "N.\nRegistraz.@10"
|
|
||||||
ITEM "Codici Errori@10"
|
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
@ -206,234 +74,32 @@ ENDMASK
|
|||||||
|
|
||||||
PAGE "Riga" -1 -1 69 14
|
PAGE "Riga" -1 -1 69 14
|
||||||
|
|
||||||
BOOLEAN A_SPEDITA
|
NUMBER S_CODCF 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 52 10 "Gia' spedita"
|
PROMPT 1 1 "Cod. C/F"
|
||||||
FIELD SPEDITA
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST A_INVIO 1 15
|
STRING S_RAGSOC 50 50
|
||||||
BEGIN
|
|
||||||
PROMPT 1 10 "Da inviare"
|
|
||||||
ITEM "X|X, Da Inviare"
|
|
||||||
ITEM "I|I, Inviato"
|
|
||||||
ITEM "N|N, Disabilitato"
|
|
||||||
ITEM "F|F, Forzato"
|
|
||||||
ITEM "E|E, Errato"
|
|
||||||
FIELD INVIO
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN A_FORZATA
|
|
||||||
BEGIN
|
|
||||||
PROMPT 30 10 "Forzatura manuale"
|
|
||||||
FIELD FORZATURA
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER A_NUMERO 10
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 0 "N.Movimento"
|
|
||||||
FLAGS "D"
|
|
||||||
FIELD PROGR
|
|
||||||
END
|
|
||||||
|
|
||||||
DATE A_DATAREG
|
|
||||||
BEGIN
|
|
||||||
PROMPT 26 0 "Data reg."
|
|
||||||
FIELD DATAREG
|
|
||||||
CHEKTYPE REQUIRED
|
|
||||||
END
|
|
||||||
|
|
||||||
LIST A_TIPOCF 1 10
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 1 "Tipo C/F "
|
|
||||||
ITEM "C|Cliente"
|
|
||||||
ITEM "F|Fornitore"
|
|
||||||
FIELD TIPOCF
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER A_CODCF 6
|
|
||||||
BEGIN
|
|
||||||
PROMPT 26 1 "Cod. C/F"
|
|
||||||
USE LF_CLIFO
|
|
||||||
INPUT TIPOCF A_TIPOCF SELECT
|
|
||||||
INPUT CODCF A_CODCF
|
|
||||||
DISPLAY "Codice" CODCF
|
|
||||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
|
||||||
DISPLAY "Occasionale@C" OCCAS
|
|
||||||
DISPLAY "Partita IVA" PAIV
|
|
||||||
DISPLAY "Codice fiscale@16" COFI
|
|
||||||
OUTPUT A_CODCF CODCF
|
|
||||||
OUTPUT A_RAGSOC RAGSOC
|
|
||||||
OUTPUT A_PAIV PAIV
|
|
||||||
OUTPUT A_COFI COFI
|
|
||||||
ADD RUN cg0 -1
|
|
||||||
FIELD CODCF
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING A_OCFPI 16
|
|
||||||
BEGIN
|
|
||||||
PROMPT 44 1 "Occas."
|
|
||||||
USE LF_OCCAS
|
|
||||||
INPUT CFPI A_OCFPI
|
|
||||||
DISPLAY "Codice@16" CFPI
|
|
||||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
|
||||||
DISPLAY "Partita IVA" PAIV
|
|
||||||
DISPLAY "Codice fiscale@16" COFI
|
|
||||||
OUTPUT A_OCFPI CFPI
|
|
||||||
OUTPUT A_RAGSOC RAGSOC
|
|
||||||
OUTPUT A_PAIV PAIV
|
|
||||||
OUTPUT A_COFI COFI
|
|
||||||
CHEKTYPE NORMAL
|
|
||||||
GROUP 3
|
|
||||||
ADD RUN cg0 -6
|
|
||||||
FIELD OCFPI
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING A_RAGSOC 50 47
|
|
||||||
BEGIN
|
BEGIN
|
||||||
FIELD RAGSOC
|
FIELD RAGSOC
|
||||||
PROMPT 1 2 "Ragione Sociale"
|
PROMPT 1 2 "Ragione Sociale"
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING A_RFSO 6
|
BOOLEAN S_ISPA
|
||||||
BEGIN
|
BEGIN
|
||||||
FIELD RFSO
|
PROMPT 15 1 "Pubblica Amministrazione"
|
||||||
PROMPT 1 4 "Codice RF/SO: "
|
|
||||||
HELP "Codice Rappresentante Fiscale o Stabile Organizzazione"
|
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING A_RAGSOCRFSO 50 47
|
STRING S_PEC 50
|
||||||
BEGIN
|
BEGIN
|
||||||
FIELD RAGSOCRFSO
|
PROMPT 1 3 "PEC"
|
||||||
PROMPT 1 5 "Rag. Soc. RF/SO"
|
|
||||||
HELP "Ragione Sociale RF/SO"
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING A_TIPODOC 2
|
STRING S_CODSDI 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 23 6 "Tipo doc. "
|
PROMPT 50 3 "Codice SDI"
|
||||||
FIELD TIPODOC
|
|
||||||
USE %TPD
|
|
||||||
INPUT CODTAB A_TIPODOC
|
|
||||||
DISPLAY "Tipo " CODTAB
|
|
||||||
DISPLAY "Descrizione @50" S0
|
|
||||||
OUTPUT A_TIPODOC CODTAB
|
|
||||||
WARNING "Tipo documento errato"
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
FLAGS "HUD"
|
|
||||||
ADD NONE
|
|
||||||
END
|
|
||||||
|
|
||||||
LIST A_TIPODOCAE 6
|
|
||||||
BEGIN
|
|
||||||
PROMPT 23 6 "Tipo doc. "
|
|
||||||
ITEM "TD01|TD01"
|
|
||||||
ITEM "TD04|TD04"
|
|
||||||
ITEM "TD05|TD05"
|
|
||||||
ITEM "TD07|TD07"
|
|
||||||
ITEM "TD08|TD08"
|
|
||||||
ITEM "TD10|TD10"
|
|
||||||
ITEM "TD11|TD11"
|
|
||||||
ITEM "ERR0|Errore"
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING A_NUMDOC 7
|
|
||||||
BEGIN
|
|
||||||
PROMPT 42 6 "Num. doc. "
|
|
||||||
FLAGS "U"
|
|
||||||
FIELD NUMDOC
|
|
||||||
CHEKTYPE REQUIRED
|
|
||||||
END
|
|
||||||
|
|
||||||
DATE A_DATADOC
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 6 "Data doc."
|
|
||||||
FIELD DATADOC
|
|
||||||
CHEKTYPE REQUIRED
|
|
||||||
END
|
|
||||||
|
|
||||||
LIST A_NATURA 1 35
|
|
||||||
BEGIN
|
|
||||||
PROMPT 20 7 "Natura IVA"
|
|
||||||
ITEM "|IVA ordinaria"
|
|
||||||
ITEM "N1|N1 - IVA esclusa ex art 15"
|
|
||||||
ITEM "N2|N2 - IVA non soggetta"
|
|
||||||
ITEM "N3|N3 - IVA non imponibile"
|
|
||||||
ITEM "N4|N4 - IVA esente"
|
|
||||||
ITEM "N5|N5 - IVA in regime del margine"
|
|
||||||
ITEM "N6|N6 - IVA in reverse charge"
|
|
||||||
ITEM "N7|N7 - IVA assolta in altro stato U3"
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING A_ALIQUOTA 4
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 7 "Aliquota "
|
|
||||||
HELP "Codice aliquota"
|
|
||||||
FIELD CODTAB
|
|
||||||
KEY 1
|
|
||||||
USE %IVA
|
|
||||||
FLAGS "U"
|
|
||||||
INPUT CODTAB A_ALIQUOTA
|
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
DISPLAY "Tipo" S1
|
|
||||||
DISPLAY "%@5" R0
|
|
||||||
DISPLAY "Vent." S6
|
|
||||||
DISPLAY "Sospeso" B2
|
|
||||||
OUTPUT A_ALIQUOTA CODTAB
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
VALIDATE ZEROFILL_FUNC 2
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING A_DETRAIB 6
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 8 "% Detraibilita'"
|
|
||||||
HELP "Percentuale di detraibilita'"
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER A_IMPONIBILE 12 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT 42 8 "Imponibile"
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER A_IMPOSTA 12 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT 42 9 "Imposta "
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN A_REVERSE
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 9 "Reverse charge"
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN A_AUTOFATT
|
|
||||||
BEGIN
|
|
||||||
PROMPT 25 9 "Autofattura"
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING A_PAIV 12
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 3 "Partita IVA "
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING A_COFI 16
|
|
||||||
BEGIN
|
|
||||||
PROMPT 33 3 "Codice Fiscale"
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING A_CODERR 10
|
|
||||||
BEGIN
|
|
||||||
PROMPT 0 13 "Codici errori"
|
|
||||||
//FLAGS "D"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
308
src/fp/fp0200b.h
308
src/fp/fp0200b.h
@ -1,308 +0,0 @@
|
|||||||
#include <applicat.h>
|
|
||||||
#include <automask.h>
|
|
||||||
#include <config.h>
|
|
||||||
#include <execp.h>
|
|
||||||
#include <golem.h>
|
|
||||||
#include <progind.h>
|
|
||||||
#include <reputils.h>
|
|
||||||
#include <tabutil.h>
|
|
||||||
#include <utility.h>
|
|
||||||
#include <agasys.h>
|
|
||||||
#include <printer.h>
|
|
||||||
#include <dongle.h> // dongle()
|
|
||||||
#include <odbcrset.h> // Oracle Recset
|
|
||||||
#include <tsdb.h>
|
|
||||||
#include <xvtdb.h>
|
|
||||||
#include <map> // std::map
|
|
||||||
|
|
||||||
#include "../ve/velib05.h"
|
|
||||||
#include "../cg/cglib03.h"
|
|
||||||
#include "../fe/felib.h"
|
|
||||||
|
|
||||||
#include "fp0200a.h"
|
|
||||||
#include "../tf/tfutility.h"
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
#ifdef DISABLED
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Globals
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
enum return_code
|
|
||||||
{
|
|
||||||
found, // Trovato
|
|
||||||
foundcust, // Trovato in trasfatt
|
|
||||||
foundidcust,// Trovato ma con id customizzato
|
|
||||||
nextmov, // Trovato ma cambiato movimento
|
|
||||||
eof, // EOF rmoviva
|
|
||||||
eofcust, // EOF trasfatt
|
|
||||||
after // File mov su un movimento dopo rispetto a rmoviva
|
|
||||||
};
|
|
||||||
|
|
||||||
// Su DB: X o ''->Da inviare, F->Forzato, I->Inviato, N->Non inviare
|
|
||||||
enum filter_fatt
|
|
||||||
{
|
|
||||||
toSend, // "", "X", "F", "E"
|
|
||||||
sent, // "I"
|
|
||||||
untouched, // "", "X"
|
|
||||||
forced, // "F"
|
|
||||||
disabled, // "N"
|
|
||||||
err, // "E"
|
|
||||||
all // Nessun controllo
|
|
||||||
};
|
|
||||||
|
|
||||||
#define SHEET_GAP 101
|
|
||||||
#define DTE_PROVV "DTE0000001"
|
|
||||||
#define DTR_PROVV "DTR0000001"
|
|
||||||
#define TOLLARANZA 0.05
|
|
||||||
// Flag invio
|
|
||||||
#define FLAG_INVIO "X"
|
|
||||||
#define FLAG_ERRORE "E"
|
|
||||||
#define FLAG_NINVIO "N"
|
|
||||||
#define FLAG_FORZATO "F"
|
|
||||||
#define FLAG_INVIATO "I"
|
|
||||||
#define SPESOMETROBASE "ModuliSirio"
|
|
||||||
#define REG_ATT 1
|
|
||||||
#define REG_PAS 2
|
|
||||||
#define CARATTERI_SPECIALI "àèéìòù°"
|
|
||||||
|
|
||||||
/* Così facendo basta modificare la maschera (e le dichiarazioni di conseguenza)
|
|
||||||
* per avere l'inserimento nello sheet corretto */
|
|
||||||
enum spesometroFields{
|
|
||||||
_spedita = A_SPEDITA - SHEET_GAP,
|
|
||||||
_invio = A_INVIO - SHEET_GAP,
|
|
||||||
_forzata = A_FORZATA - SHEET_GAP,
|
|
||||||
_numero = A_NUMERO - SHEET_GAP,
|
|
||||||
_datareg = A_DATAREG - SHEET_GAP,
|
|
||||||
_tipocf = A_TIPOCF - SHEET_GAP,
|
|
||||||
_codcf = A_CODCF - SHEET_GAP,
|
|
||||||
_occas = A_OCFPI - SHEET_GAP,
|
|
||||||
_ragsoc = A_RAGSOC - SHEET_GAP,
|
|
||||||
_rfso = A_RFSO - SHEET_GAP,
|
|
||||||
_ragsocrfso = A_RAGSOCRFSO - SHEET_GAP,
|
|
||||||
_codnum = A_TIPODOC - SHEET_GAP,
|
|
||||||
_codnumAE = A_TIPODOCAE - SHEET_GAP,
|
|
||||||
_numdoc = A_NUMDOC - SHEET_GAP,
|
|
||||||
_datadoc = A_DATADOC - SHEET_GAP,
|
|
||||||
_natura = A_NATURA - SHEET_GAP,
|
|
||||||
_aliquota = A_ALIQUOTA - SHEET_GAP,
|
|
||||||
_detraibile = A_DETRAIB - SHEET_GAP,
|
|
||||||
_imponibile = A_IMPONIBILE - SHEET_GAP,
|
|
||||||
_importoIVA = A_IMPOSTA - SHEET_GAP, // Imposta è già preso
|
|
||||||
_reverse = A_REVERSE - SHEET_GAP,
|
|
||||||
_autofatt = A_AUTOFATT - SHEET_GAP,
|
|
||||||
_paiv = A_PAIV - SHEET_GAP,
|
|
||||||
_codfis = A_COFI - SHEET_GAP,
|
|
||||||
_coderr = A_CODERR - SHEET_GAP
|
|
||||||
};
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Utilities
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// Da un id ritorna il tipo doc corrispondente
|
|
||||||
TString getTipoDoc(int id);
|
|
||||||
int getTipoDoc(TString id);
|
|
||||||
|
|
||||||
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
|
|
||||||
static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str);
|
|
||||||
// Aggiorna il file dst se più vecchio di src (Potrebbe diventare una funzione di XVT.h)
|
|
||||||
bool xvt_fsys_fupdate(const char* src, const char* dst);
|
|
||||||
// Decodifica il tipo di documento per il trasferimento fatture
|
|
||||||
const char * decodTipo(TToken_string* strarr);
|
|
||||||
// Salvo un singolo record
|
|
||||||
//bool saveRec(TToken_string row, bool esportato = false);
|
|
||||||
// Ritorno una data in formato ANSI
|
|
||||||
inline TDate toDate(const char * date) { return TDate(date).string(); }
|
|
||||||
// Salto se la riga non è abilitata
|
|
||||||
#define IF_IS_ENABLED(strarr) if(strcmp(strarr->get(_invio), FLAG_INVIO) != 0 && strcmp(strarr->get(_invio), FLAG_FORZATO) != 0 && strcmp(strarr->get(_invio), FLAG_INVIATO) != 0) continue;
|
|
||||||
// Ritorno il carattere senza accento maiuscolo
|
|
||||||
inline const char * noSpecial(char a);
|
|
||||||
// Ritorno se è ancora valida la bolla doganale senza informazioni fornitore
|
|
||||||
bool bd2017();
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// TFp_record
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// Connessione a db
|
|
||||||
SSimple_query& db()
|
|
||||||
{
|
|
||||||
SSimple_query * _db = nullptr;
|
|
||||||
if (_db == nullptr)
|
|
||||||
_db = new SSimple_query();
|
|
||||||
return *_db;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Contenitore di campi di un record di database MSSQL
|
|
||||||
class TFp_record : public TObject
|
|
||||||
{
|
|
||||||
TString8 _table;
|
|
||||||
TToken_string _key;
|
|
||||||
TAssoc_array _fields;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void copy(const TFp_record& rec) { _table = rec._table; _key = rec._key; _fields = rec._fields; }
|
|
||||||
const TString& var2str(const TString& fld, const TVariant& var) const;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void reset() { _fields.destroy(); }
|
|
||||||
void set(const char* fld, const TVariant& var);
|
|
||||||
void set(const char* fld, long var);
|
|
||||||
void set(const char* fld, const char* var);
|
|
||||||
void set(const char* fld, const real& var);
|
|
||||||
void set(const char* fld, const TString& var);
|
|
||||||
void set(const char* fld, const TDate& var);
|
|
||||||
void set(const char* fld, bool var);
|
|
||||||
const TVariant& get(const char* fld) const;
|
|
||||||
|
|
||||||
bool insert();
|
|
||||||
bool remove();
|
|
||||||
bool search();
|
|
||||||
bool search(const char* k1, const char* k2 = NULL, const char* k3 = NULL);
|
|
||||||
|
|
||||||
virtual TObject* dup() const { return new TFp_record(*this); }
|
|
||||||
virtual bool ok() const { return _table.not_empty(); }
|
|
||||||
|
|
||||||
TFp_record& operator=(const TFp_record& rec) { copy(rec); return *this; }
|
|
||||||
TFp_record(const TFp_record& rec) { copy(rec); }
|
|
||||||
TFp_record(const char* table);
|
|
||||||
};
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// TFp_cursors
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Classe per la gestione di RMOVIVA, MOV, TFCUST
|
|
||||||
*/
|
|
||||||
class TFp_cursors : TObject
|
|
||||||
{
|
|
||||||
friend class TCursor;
|
|
||||||
TISAM_recordset* c_rmoviva;
|
|
||||||
TISAM_recordset* c_trasfatt;
|
|
||||||
bool _newMov;
|
|
||||||
bool _newCust;
|
|
||||||
// Se trovo un record custom devo saltare tutti quelli che trovo successivamente, per fare ciò utilizzo una TToken_string
|
|
||||||
TToken_string _alqCust;
|
|
||||||
|
|
||||||
TRectype _next(return_code& code, TString& tipocf, TString& codcf, TString& ocfpi); // Si sposta avanti di un elemento
|
|
||||||
TRectype _nextCust(return_code& code, TString& tipocf, TString& codcf, TString& ocfpi); // Si sposta avanti di un elemento tra quelli custom
|
|
||||||
bool checkEnabled(TISAM_recordset* origCur);
|
|
||||||
public:
|
|
||||||
//TFp_cursors();
|
|
||||||
~TFp_cursors();
|
|
||||||
long int getIvaItems() { return c_rmoviva->items(); }
|
|
||||||
long int getIvaPos() { return c_rmoviva->cursor()->pos(); }
|
|
||||||
TRectype getIva() { return c_rmoviva->cursor()->curr(); }
|
|
||||||
int next(TAssoc_array& recimposte, bool& ok, TString& tipocf, TString& codcf, TString& ocfpi); // Legge tutto il prossimo movimento, in importi mette per ogni codiva la somma
|
|
||||||
|
|
||||||
int updateFilters(const char tipocf, const long codcf, TDate dal, TDate al, int cod = toSend);
|
|
||||||
};
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// TFp_mask
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
class TFp_mask : public TAutomask
|
|
||||||
{
|
|
||||||
friend class TFp_cursors;
|
|
||||||
|
|
||||||
TMaskmode _mode;
|
|
||||||
bool _sheet_dirty;
|
|
||||||
bool _filter_changed;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void next_page(int p);
|
|
||||||
TRecnotype nuovo_progr() const;
|
|
||||||
void changeInvio(TString tipocf, TString codcf, TString numdoc, TString invio) const;
|
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
||||||
void openJava();
|
|
||||||
|
|
||||||
public:
|
|
||||||
void setFilterChanged() { _filter_changed = true; }
|
|
||||||
void load_sheet();
|
|
||||||
TFp_mask(TString msk);
|
|
||||||
~TFp_mask();
|
|
||||||
// Carico i tipi documento all'inizio
|
|
||||||
void loadConfig();
|
|
||||||
// Salvo i tipi documento
|
|
||||||
void saveConfig();
|
|
||||||
// Salvo tutti i records
|
|
||||||
bool saveAll();
|
|
||||||
// Controllo tutti i records
|
|
||||||
bool checkAll();
|
|
||||||
// Testo validità record
|
|
||||||
bool checkRec(TPrinter* stampa, TToken_string* rec);
|
|
||||||
// Controllo che siano presenti records
|
|
||||||
bool checkNotEmpty();
|
|
||||||
// Controllo finale prima di inviare il tutto, se ci sono fatture
|
|
||||||
// con più volte lo stesso codice aliquota disabilito il precedente
|
|
||||||
void theFinalCheckDown();
|
|
||||||
// Mette il flag di invio = [flag] per la riga numero [nrow]
|
|
||||||
void flagRow(int nrow, TString flag);
|
|
||||||
// Salto se la riga ha un tipo invio non del filtro
|
|
||||||
bool checkInvio(const TString& invio);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Funzione inline di stampa
|
|
||||||
inline void printError(TPrinter* stampa, TString movimento, TString documento, TString msgerr);
|
|
||||||
TFp_mask& msk();
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// TFp_app
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
struct clifoDoc
|
|
||||||
{
|
|
||||||
long contCliFo;
|
|
||||||
long countDoc;
|
|
||||||
std::map<TString, long> docID;
|
|
||||||
};
|
|
||||||
|
|
||||||
class TFp_app : public TSkeleton_application
|
|
||||||
{
|
|
||||||
TAnagrafica _ditta;
|
|
||||||
TString16 _cofi;
|
|
||||||
TFilename _dbname;
|
|
||||||
TLog_report* _log;
|
|
||||||
TString _logTFF;
|
|
||||||
bool _append;
|
|
||||||
TString myrfso;
|
|
||||||
static long header;
|
|
||||||
// Solitamente nei programmi di campo cerco di sfruttare le classi interne ma per mancanza di tempo sono costretto a usare l'std::vector
|
|
||||||
std::map<TString, clifoDoc> mCliDoc;
|
|
||||||
|
|
||||||
private:
|
|
||||||
int parse_line(const TString& line, TString& var, TString& val) const;
|
|
||||||
bool create_table(TScanner& TFF, const TString& table);
|
|
||||||
TString getKey(TToken_string* strarr);
|
|
||||||
TString getHeader(TToken_string* strarr);
|
|
||||||
TString getBody(TToken_string* strarr, bool add = true);
|
|
||||||
bool tff0100(TSheet_field& sheet); // Header esportazione
|
|
||||||
bool tff0200(TString key); // Anagrafica ditta
|
|
||||||
bool tff0300(TString key, TRectype r_ana); // Rappresentante fiscale ditta
|
|
||||||
bool tff0400(TSheet_field& sheet); // Anagrafica clifo
|
|
||||||
bool tff0700(TSheet_field& sheet); // Testata documento
|
|
||||||
bool tff2200(TToken_string* strarr, int nriga); // Riepilogo aliquote
|
|
||||||
bool tff3100(TToken_string* strarr, TRectype r_ana); // Rappresentante fiscale clifo
|
|
||||||
bool setEsportato(TSheet_field& sheet);
|
|
||||||
bool emptyTables(TString key); // Cancella da tutte le tabelle i record con chiave key
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void log(int severity, const char* msg);
|
|
||||||
bool show_log();
|
|
||||||
bool syncronizeDB();
|
|
||||||
bool verifyDB(const bool create);
|
|
||||||
|
|
||||||
public:
|
|
||||||
virtual bool create();
|
|
||||||
virtual bool destroy();
|
|
||||||
virtual void main_loop();
|
|
||||||
bool send(TFp_mask* msk);
|
|
||||||
|
|
||||||
TFp_app() : _log(NULL) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -12,8 +12,6 @@
|
|||||||
|
|
||||||
#include "fp0.h"
|
#include "fp0.h"
|
||||||
#include "fp0300a.h"
|
#include "fp0300a.h"
|
||||||
#include <memory>
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Globals
|
// Globals
|
||||||
@ -363,7 +361,6 @@ void TPA_mask::next_page(int p)
|
|||||||
{
|
{
|
||||||
TSheet_field& sf = sfield(F_DOCS);
|
TSheet_field& sf = sfield(F_DOCS);
|
||||||
fill();
|
fill();
|
||||||
sf.force_update();
|
|
||||||
_filter_changed = false;
|
_filter_changed = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -451,6 +448,9 @@ void TDoc2Paf::main_loop()
|
|||||||
ndocs = 0;
|
ndocs = 0;
|
||||||
FOR_EACH_ARRAY_ROW(sht, r, riga)
|
FOR_EACH_ARRAY_ROW(sht, r, riga)
|
||||||
{
|
{
|
||||||
|
if (!pi.add_status(1))
|
||||||
|
break;
|
||||||
|
|
||||||
if (riga->starts_with("X"))
|
if (riga->starts_with("X"))
|
||||||
{
|
{
|
||||||
const int anno = riga->get_int(mask.sfield(F_DOCS).cid2index(S_ANNO));
|
const int anno = riga->get_int(mask.sfield(F_DOCS).cid2index(S_ANNO));
|
||||||
@ -472,8 +472,6 @@ void TDoc2Paf::main_loop()
|
|||||||
ndocs++;
|
ndocs++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!pi.add_status(1))
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ndocs > 0)
|
if (ndocs > 0)
|
||||||
|
@ -851,7 +851,7 @@ const TString& TDoc_fp::converti_prezzo(const real& prezzo) const
|
|||||||
{
|
{
|
||||||
TCurrency app(prezzo, _doc_cambio._cod_val, _doc_cambio._cambio, true);
|
TCurrency app(prezzo, _doc_cambio._cod_val, _doc_cambio._cambio, true);
|
||||||
app.change_to_euro_val();
|
app.change_to_euro_val();
|
||||||
ret << app.get_num().stringa_eng(0,8);
|
ret << app.get_num().string(0,8);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ret << prezzo;
|
ret << prezzo;
|
||||||
@ -1501,10 +1501,11 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
// <DatiRitenuta>
|
// <DatiRitenuta>
|
||||||
if (sp.tipo_ritenuta() == 'F')
|
if (sp.tipo_ritenuta() == 'F')
|
||||||
{
|
{
|
||||||
paf0700f.set("P7_TIPORITENUTA", cliente.fisica() ? "RT01" : "RT02");
|
paf0700f.set("P7_TIPORITENUTA", cliente.fisica() ? "RT01" : "RT02");
|
||||||
paf0700f.set("P7_IMPORTORIT", converti_prezzo(doc.imponibile() * sp.perc() / CENTO));
|
paf0700f.set("P7_IMPORTORIT", converti_prezzo(doc.imponibile() * sp.perc() / CENTO));
|
||||||
paf0700f.set("P7_ALIQUOTARIT", TCodiceIVA(sp.cod_iva()).percentuale());
|
paf0700f.set("P7_ALIQUOTARIT", TCodiceIVA(sp.cod_iva()).percentuale());
|
||||||
paf0700f.set("P7_CAUSPAGAM", cache().get("CA7", to_tstring(sp.caus_770()), "S2"));
|
static TString caus770; caus770.cut(0); caus770.format("%02d", sp.caus_770());
|
||||||
|
paf0700f.set("P7_CAUSPAGAM", cache().get("CA7", caus770, "S2"));
|
||||||
}
|
}
|
||||||
// </DatiRitenuta>
|
// </DatiRitenuta>
|
||||||
}
|
}
|
||||||
|
@ -5,3 +5,4 @@ Module = fp
|
|||||||
Flags = ""
|
Flags = ""
|
||||||
Item_01 = "Configurazione", "fp0 -0", ""+
|
Item_01 = "Configurazione", "fp0 -0", ""+
|
||||||
Item_02 = "Invio fatture", "fp0 -2", ""
|
Item_02 = "Invio fatture", "fp0 -2", ""
|
||||||
|
Item_03 = "Inserimento riferimenti C/F", "fp0 -1", ""
|
@ -13,6 +13,7 @@
|
|||||||
#include <treectrl.h>
|
#include <treectrl.h>
|
||||||
#include <urldefid.h>
|
#include <urldefid.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
|
#include <xvtdb.h>
|
||||||
|
|
||||||
static int txt_sort(const TSortable& o1, const TSortable& o2, void* jolly)
|
static int txt_sort(const TSortable& o1, const TSortable& o2, void* jolly)
|
||||||
{
|
{
|
||||||
@ -471,7 +472,7 @@ TInfo_mask::TInfo_mask() : TProperty_sheet(TR("Informazioni"))
|
|||||||
}
|
}
|
||||||
|
|
||||||
TFilename temp; temp.tempdir();
|
TFilename temp; temp.tempdir();
|
||||||
TString strdb, strsql;
|
TString strdb, strsql, strsqlapi = SQLAPIV;
|
||||||
{
|
{
|
||||||
TISAM_recordset rs("");
|
TISAM_recordset rs("");
|
||||||
strdb = rs.driver_version();
|
strdb = rs.driver_version();
|
||||||
@ -555,6 +556,7 @@ TInfo_mask::TInfo_mask() : TProperty_sheet(TR("Informazioni"))
|
|||||||
add_prop(TR("Libreria GUI"), strwx);
|
add_prop(TR("Libreria GUI"), strwx);
|
||||||
add_prop(TR("Libreria PDF"), printer);
|
add_prop(TR("Libreria PDF"), printer);
|
||||||
add_prop(TR("Libreria SQL"), strsql);
|
add_prop(TR("Libreria SQL"), strsql);
|
||||||
|
add_prop(TR("Libreria SQLAPI"), strsqlapi);
|
||||||
add_prop(TR("Libreria Matematica"), "GreenLeaf Library");
|
add_prop(TR("Libreria Matematica"), "GreenLeaf Library");
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
@ -567,11 +569,11 @@ TInfo_mask::TInfo_mask() : TProperty_sheet(TR("Informazioni"))
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 1900 -> 14, 1910 -> 15
|
// 1900 -> 14, 1910 -> 15
|
||||||
cver = _MSC_VER;
|
|
||||||
cver = _MSC_VER / 100 - 5 + _MSC_VER % 100 / 10;
|
cver = _MSC_VER / 100 - 5 + _MSC_VER % 100 / 10;
|
||||||
csub = _MSC_VER % 100 % 10; // Is that a thing?
|
csub = _MSC_VER % 100 % 10; // Is that a thing?
|
||||||
}
|
}
|
||||||
add_prop(TR("Libreria C++"), format("Microsoft Visual Studio %d.%d", cver, csub));
|
TString msg = "Microsoft Visual Studio"; msg << cver << "." << csub;
|
||||||
|
add_prop(TR("Libreria C++"), msg);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
set_read_only();
|
set_read_only();
|
||||||
|
@ -1285,13 +1285,6 @@ const char* real::stringa (int len, int dec, char pad) const
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Certified 99%
|
|
||||||
const char* real::stringa_eng(int len, int dec, char pad) const
|
|
||||||
{
|
|
||||||
char* str = const_cast<char*>(string(len, dec, pad));
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Certified 99%
|
// Certified 99%
|
||||||
const char* real::stringe(int len, int dec, char pad) const
|
const char* real::stringe(int len, int dec, char pad) const
|
||||||
{
|
{
|
||||||
|
@ -115,9 +115,6 @@ public:
|
|||||||
// @cmember Trasforma un reale in stringa (chiama <mf real::string>), ma
|
// @cmember Trasforma un reale in stringa (chiama <mf real::string>), ma
|
||||||
// ritorna il formato italiano
|
// ritorna il formato italiano
|
||||||
const char* stringa(int len = 0, int dec = UNDEFINED, char pad = ' ') const;
|
const char* stringa(int len = 0, int dec = UNDEFINED, char pad = ' ') const;
|
||||||
// @cmember Trasforma un reale in stringa (chiama <mf real::string>), ma
|
|
||||||
// ritorna il formato inglese
|
|
||||||
const char* stringa_eng(int len = 0, int dec = UNDEFINED, char pad = ' ') const;
|
|
||||||
// @cmember Trasforma un reale in stringa (chiama <mf real::string>),
|
// @cmember Trasforma un reale in stringa (chiama <mf real::string>),
|
||||||
//ma ritorna il formato atteso da Excel
|
//ma ritorna il formato atteso da Excel
|
||||||
const char* stringe(int len = 0, int dec = UNDEFINED, char pad = ' ') const;
|
const char* stringe(int len = 0, int dec = UNDEFINED, char pad = ' ') const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user