Compare commits

..

5 Commits

Author SHA1 Message Date
e2a93f8f73 Merge branch 'R12.00.1244' of http://192.168.2.5:30000/root/campo-sirio into R12.00.1244 2026-09-15 19:05:27 +02:00
9dbc9318e3 Patch level : 12.00 1416
Files correlati     : m770.exe 770100a.msk 770100f.msk
Commento
Riprostinata la commessa precedente se l'attuale è chiusa
Ricerca sulle schede nella scheda percipienti
Proposto cod10 = C per causali esenti
2026-09-15 18:54:53 +02:00
45b418599a Patch level : 12.00 1416
Files correlati     : ve0.exe
Commento
Riprostinata la commessa precedente se l'attuale e chiusa
2026-09-15 18:28:46 +02:00
42c2419751 msk23 msk232 2026-09-12 14:40:23 +02:00
00dd94243f gitignore 2026-09-12 00:09:05 +02:00
13 changed files with 248 additions and 454 deletions

500
.gitignore vendored
View File

@ -1,408 +1,102 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# ---> C++
# Prerequisites
*.d
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
# Compiled Object files
*.slo
*.lo
*.o
*.obj
*.iobj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
!/build/*.exe
*.out
*.app
# ---> C
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
!/build/*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
*.sln.iml
#special file
build/fastrip.exe
build/patchdef.exe
#exe folder
exe/
#lib folder
lib/
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
/build/*.sdf
/build/UpgradeLog.htm
/build/UpgradeLog2.htm
/build/UpgradeLog3.htm
/build/UpgradeLog4.htm
/build/UpgradeLog5.htm
/build/*.user
/build/*.user
/build/*.user
/exe/*.*
/obj/*.*
/releease/*.*

Binary file not shown.

Binary file not shown.

View File

@ -4,6 +4,9 @@ echo Compiling %1 into %2
set oldinc=%include
set include=..\src\include;..\src\xvaga;..\src\ve;%~p1
set OLDPATH=%PATH%
set PATH=%PATH%;..\..\build
type ..\src\include\uml.h >%TMP%\%~n1.tmp
type %1 >>%TMP%\%~n1.tmp
@ -18,6 +21,9 @@ fastrip %TMP%\%~n1.msk %2
set include=%oldinc
set oldinc=
set PATH=%OLDPATH%
set OLDPATH=
del %TMP%\%~n1.tmp
del %TMP%\%~n1.tm2
del %TMP%\%~n1.tm3

View File

@ -1,17 +1,27 @@
rem @echo off
echo Compiling mask %1 into %2
set oldinc=%include
set include=..\src\include;..\src\xvaga;..\src\ve;%~p1
set oldinc=%include%
set include=..\src\include;..\src\xvaga;..src\ve;%~p1
set OLDPATH=%PATH%
set PATH=%PATH%;..\..\build;C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
type ..\src\include\uml.h >%TMP%\%~n1.tmp
type %1 >>%TMP%\%~n1.tmp
set dir=pwd
ECHO %dir%
cd
cl /nologo /EP %TMP%\%~n1.tmp > %TMP%\%~n1.msk
fastrip %TMP%\%~n1.msk %2
set include=%oldinc
set include=%oldinc%
set oldinc=
set PATH=%OLDPATH%
set OLDPATH=
del %TMP%\%~n1.msk
del %TMP%\%~n1.tmp

View File

@ -517,7 +517,6 @@ bool TReport_mask::get_rep_path(TFilename& path) const
path.ext("rep");
bool found = path.exist();
message_box("file %s - %s", (const char *)path, found ? "trovato" : "non trovato");
if (!found)
{
TString80 fname = path.name_only(); fname.lower();
@ -538,15 +537,12 @@ bool TReport_mask::get_rep_path(TFilename& path) const
}
}
}
message_box("file %s - %s", (const char *)path, found ? "trovato" : "non trovato");
}
else
{
path.ext("rep");
found = path.exist();
message_box("file %s - %s", (const char *)path, found ? "trovato" : "non trovato");
}
message_box("file %s - %s", (const char *)path, found ? "trovato" : "non trovato");
}
return found;
}

View File

@ -674,7 +674,7 @@ bool TSchedaPercipienti::user_create()
HR("@1|Data@11|Compenso@16|Ritenuta@16|"),
0, NULL_WIN, 5);
set_search_field(F_CODANAGRPERC);
set_search_field(H_NPROG);
// simulo una chiamata da contabilità (lo lascio per eventuali prove)
/* real totdocla = 1000000;
@ -1764,11 +1764,11 @@ Pag_struct& TSchedaPercipienti::from_sheet_to_struct(TToken_string& t, Pag_struc
if ((pos = token_pos("COD10")) != -1)
s.cod10 = t.get(pos);
// set imorti restituiti al netto della ritenuta
// set importi restituiti al netto della ritenuta
if ((pos = token_pos("SPESERIMB")) != -1)
s.speserimb = t.get_real(pos);
// set imorti restituiti al netto della ritenuta
// set importi restituiti al netto della ritenuta
if ((pos = token_pos("RITRIMB")) != -1)
s.ritrimb = t.get_real(pos);

View File

@ -6,6 +6,7 @@
#define F_TIPOA 151
#define F_CODANAGR 152
#define F_NPROG 153
#define H_NPROG 154
// m70100a
#define F_RAGDITTA 200

View File

@ -171,7 +171,6 @@ BEGIN
GROUP 1
END
NUMBER F_NPROG 6
BEGIN
PROMPT 1 11 "@bScheda numero "
@ -199,6 +198,37 @@ BEGIN
OUTPUT F_NPROG NPROG
END
NUMBER H_NPROG 6
BEGIN
PROMPT 30 11 " "
CHECKTYPE NORMAL
FLAGS "DG"
USE LF_SCPERC
JOIN LF_ANAG INTO TIPOA=TIPOA CODANAGR=CODANAGR
JOIN %CA7 INTO CODTAB=CODCAUS
INPUT CODDITTA F_CODDITTA
INPUT TIPOA F_TIPOA
INPUT CODANAGR F_CODANAGR
INPUT NPROG H_NPROG
DISPLAY "Tipo" TIPOA
DISPLAY "Codice" CODANAGR
DISPLAY "Denominazione@50" LF_ANAG->RAGSOC
DISPLAY "Numero@7" NPROG
DISPLAY "Data\nDocumento@10" DATADOC
DISPLAY "Numero\nDocumento@8" NUMDOC
DISPLAY "Causale" CODCAUS
DISPLAY "Quadro" %CA7->S1
DISPLAY "Causale\nQuadro@6" CAUSQUA
DISPLAY "Ritenute\noperate@15V" RITOPE
DISPLAY "Ritenute\nversate@15V" RITVER
DISPLAY "Compenso@15V" COMPENSO
OUTPUT F_TIPOA TIPOA
OUTPUT F_CODANAGR CODANAGR
OUTPUT H_NPROG NPROG
OUTPUT F_NPROG NPROG
END
BUTTON F_GESTPERC 28 2
BEGIN
PROMPT -12 -1 "Fatture da ricevere"

View File

@ -136,8 +136,8 @@ BEGIN
ITEM "B|redditi assoggettati in parte al contributo 10%"
ITEM "C|redditi non assoggettati al contributo 10%"
OUTPUT 111
FIELD LF_RPAG->COD10
VALIDATE REQIF_FUNC 3 101 102 103
// FIELD LF_RPAG->COD10
// VALIDATE REQIF_FUNC 3 101 102 103
WARNING "Il codice contributo Inps deve essere indicato"
END

View File

@ -2,6 +2,7 @@
#include "770101.h"
#include "770102.h"
#include <tabutil.h>
#include <recarray.h>
void TSchedaPercipienti::init_mask(TMask& m, bool inserimento)
{
@ -117,7 +118,7 @@ bool TSchedaPercipienti::vers_notify(TSheet_field& s, int r, KEY k)
bool TSchedaPercipienti::pags_notify(TSheet_field& s, int r, KEY k)
{
switch(k)
switch (k)
{
// Inserimento riga
@ -133,6 +134,20 @@ bool TSchedaPercipienti::pags_notify(TSheet_field& s, int r, KEY k)
// Fine modifica di una riga
case K_ENTER:
{
TEdit_field & fld = s.mask().efield(F_CODCAUS);
TMask & row_mask = s.sheet_mask();
const TRectype & ca7 = cache().get("%CA7", fld.get());
if (ca7.get_bool("B4") == false && row_mask.get(111).blank())
{
row_mask.set(111, "C");
s.set_row_cell(111, "C", s.selected());
}
if (row_mask.get(101).full() && (row_mask.get(102).full() || row_mask.get(111).blank()) &&
row_mask.get(111).blank())
return error_box("Il codice contributo Inps deve essere indicato");
}
break;
default:

View File

@ -1287,7 +1287,7 @@ public:
short cms_start_sh() const { return _cms_start_sh;}
short cms_end_sh() const { return _cms_end_sh;}
TString& codcms() { return _codcms;}
const TString& codcms() const { return _codcms;}
const TString & codcms() const { return _codcms;}
TString& codcms_sh() { return _codcms_sh;}
const TString & codcms_sh() const { return _codcms_sh;}
TString& codart() { return _codart; }

View File

@ -2883,10 +2883,10 @@ bool cms_mag_handler(TMask_field& f, KEY key)
const TSheet_field& s = *m.get_sheet();
TDocumento_mask& mask = (TDocumento_mask&)s.mask();
const TRectype& curr = m.efield(mask.cms_end_sh()).browse()->cursor()->curr();
const TString80 codcms = curr.get(COMMESSE_CODCMS);
TString80 codcms = curr.get(COMMESSE_CODCMS);
TString svcms = mask.codcms_sh();
if (mask.codcms_sh() != codcms) // Cambio commessa
if (svcms != codcms) // Cambio commessa
{
if ((key == K_TAB && f.focusdirty()))
{
@ -2896,7 +2896,27 @@ bool cms_mag_handler(TMask_field& f, KEY key)
if (chiusa && curr.get_bool(COMMESSE_PROROGA))
chiusa = mask.get_date(F_DATADOC) > curr.get_date(COMMESSE_DATAPROR);
if (chiusa)
return (t == _bloccante) ? f.error_box(FR("La commessa %s è chiusa "), (const char*)codcms) : f.yesno_box(FR("La commessa chiusa %s, vuoi utilizzarla"), (const char*)codcms);
{
bool ok = (t == _bloccante) ? error_box(FR("La commessa %s è chiusa "), (const char*)codcms) :
yesno_box(FR("La commessa chiusa %s, vuoi utilizzarla ?"), (const char*)codcms);
if (!ok)
{
codcms = svcms;
for (short i = mask.cms_start(); i <= mask.cms_end(); i++)
{
TEdit_field & e = mask.efield(i);
const TFieldref * f = e.field();
if (f != nullptr)
{
const int from = f->from();
const int to = f->to();
mask.set(i, codcms.sub(from, to), 0x2);
}
}
}
return ok;
}
}
mask.codcms_sh() = codcms;
@ -2988,13 +3008,15 @@ bool codcms_handler(TMask_field& f, KEY key)
}
const TRectype& curr_cms = ((TEdit_field&)f).browse()->cursor()->curr();
const TString80 codcms = curr_cms.get(COMMESSE_CODCMS);
TString80 codcms = curr_cms.get(COMMESSE_CODCMS);
mask.set(F_CMSH, codcms);
if ((key == K_TAB && f.focusdirty()) || key == K_ENTER)
{
// Controlla se c'e' la gestione dei centri di costo al secondo livello
if (mask.codcms() != codcms)
TString svcms = mask.codcms();
if (svcms != codcms)
{
if ((key == K_TAB && f.focusdirty()))
{
@ -3004,7 +3026,27 @@ bool codcms_handler(TMask_field& f, KEY key)
if (chiusa && curr_cms.get_bool(COMMESSE_PROROGA))
chiusa = mask.get_date(F_DATADOC) > curr_cms.get_date(COMMESSE_DATAPROR);
if (chiusa)
return (t == _bloccante) ? f.error_box(FR("La commessa %s è chiusa "), (const char*)codcms) : f.yesno_box(FR("La commessa chiusa %s, vuoi utilizzarla"), (const char*)codcms);
{
bool ok = (t == _bloccante) ? error_box(FR("La commessa %s è chiusa "), (const char*)codcms) :
yesno_box(FR("La commessa chiusa %s, vuoi utilizzarla ?"), (const char*)codcms);
if (!ok)
{
codcms = svcms;
for (short i = mask.cms_start(); i <= mask.cms_end(); i++)
{
TEdit_field & e = mask.efield(i);
const TFieldref * f = e.field();
if (f != nullptr)
{
const int from = f->from();
const int to = f->to();
mask.set(i, codcms.sub(from, to), 0x2);
}
}
}
return ok;
}
}
doc.put(DOC_CODCMS, codcms);
FOR_EACH_PHYSICAL_RDOC(doc, r, riga)