I made a function that determines this only that I have encountered an anomaly
when I insert the price list n. 2 which concerns the low season should give me back the month of "May", "June" and "September"
however the function gives me back only "June" and "September" obviously skipping the month of "May"
for ease I have not published the archives ( listini.dbf and periodi.dbf) but I have created small arrays just to try the test aPeriodi and aListini
how is it possible that the month of may is not considered?
the test
- Code: Select all Expand view
#include "fivewin.ch"
Function test()
local aStagione_Dates :={}
local dDateFrom,dDateTo
local aMesi :={}
local nlistino := 2
Local cYear :="2021"
Local alistini := { ;
{"Stagionale ","99"}, ;
{"Alta Stagione","01"}, ;
{"Bassa Stagione","02"},;
{"Media Stagione","03"}}
Local aPeriodi := { ;
{"17/05/"+cYear,"31/05/"+cYear,"Bassa Stagione","02",0},;
{"01/06/"+cYear,"30/06/"+cYear,"Bassa Stagione","02",0},;
{"01/07/"+cYear,"31/08/"+cYear,"Alta Stagione","01",0},;
{"01/09/"+cYear,"20/09/"+cYear,"Bassa Stagione","02",0} }
SET DATE ITALIAN
SET CENTURY ON
SET DELETED ON
//xbrowser aPeriodi TITLE "periodi"
ASort( aListini, , , { | x, y | x[1]< y[1] } )
//xbrowser alistini TITLE "Listini"
aStagione_Dates := aMesiStagione()
dDateFrom := aStagione_Dates[1]
dDateTo := aStagione_Dates[2]
aMesi := Determina_Mesi(dDateFrom,dDateTo,aPeriodi,aListini[nListino][2])
xbrowser aMesi TITLE "Months that are in the price list "+ltrim(str(nlistino))
return nil
//------------------------------------------------------------------------------------------------------//
Function Determina_Mesi(dDateFrom,dDateTo,aPeriodi,cListino)
local aStagione_Dates:= aMesiStagione()
local aMesi_Ok := {}
local aMesi := {"Gennaio","Febbrario","Marzo","Aprile","Maggio",;
"Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"}
local cMese:=""
local n
dStagioneMin := aStagione_Dates[1]
dStagioneMax := aStagione_Dates[2]
For d = dDateFrom to dDateTo
IF d >=dStagioneMin .and. d <= dStagioneMax
For n=1 to len(aPeriodi)
IF d >= ctod(aPeriodi[n][1]) .and. d <= ctod(aPeriodi[n][2])
IF alltrim(cListino) = alltrim(aPeriodi[n][4])
If aMesi[month(d)] !=cMese
aadd(aMesi_Ok , {aMesi[month(d)],month(d)}) // mese e numero
endif
endif
cMese:= aMesi[month(d)]
endif
Next
endif
next
return aMesi_Ok
//----------------------------------------------------------------------------------------------------------//
function TakeOffExt(cFile)
local nAt := At(".", cFile)
if nAt > 0
cFile := Left(cFile, nAt-1)
end if
return cFile
//------------------------------------------------------------------------------------------------------//
Function aMesiStagione()
local aStagione:={}
local cIniFile :=TakeOffExt( GetModuleFileName( GetInstance() ) ) + ".ini"
local nAnno:= year(date())
Local dBassa1 := GetPvProfString("Stagioni", "BASSA1","17.05."+ltrim(str(nAnno)), cIniFile)
Local dBassa4 := GetPvProfString("Stagioni", "BASSA4","20.09."+ltrim(str(nAnno)), cIniFile)
local dStagioneMin:= CTOD(dBassa1)
local dStagioneMax:= CTOD(dBassa4)
AaDd( aStagione, dStagioneMin)
AaDd( aStagione, dStagioneMax )
*xbrowser aStagione
return aStagione
//------------------------------------------------------------------------------------------------------//