-
Notifications
You must be signed in to change notification settings - Fork 0
/
subroutines.gs
209 lines (184 loc) · 8.16 KB
/
subroutines.gs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
// crea elenco Files Affidi da Importare sullo sheet
// e restituisce numero files presenti nella folder
// e numero files nuovi scritti sullo sheet
function writeFilesToSheet() {
Logger.log('writeFilesToSheet')
var files = affidiDaImportareFolder.getFiles()
var file, data, sheet = sheetFilesAffidi;
var alreadyOnSheet = false
var wroteOnSheet = false
var onFolder = 0
var lastRow = sheet.getLastRow()
//itera lungo i file trovati sulla folder
while (files.hasNext()) {
file = files.next();
onFolder++
alreadyOnSheet = false
// imposta il valore di una nuova riga dello sheet
//con i dati del file sulla folder
data = [
file.getName(),
file.getDateCreated(),
file.getSize(),
file.getUrl(),
"Assegnato", //Stato
new Date(), //Data assegnazione
];
// se non ci sono file già scritti sullo sheet salta al prossimo file suòòa folder
if (lastRow>1){
//verifica se il file presente sulla folder è già presente sullo sheet
for (var row=2; row<=lastRow; row++){
// se il file della folder è gia sullo sheet pulisci colonna Badge
// se no salta oltre
if (data[3] == sheet.getRange(row,4).getValue()){
// memorizza che il file era già sullo sheet
alreadyOnSheet = true
Logger.log(alreadyOnSheet + ' file già presente su sheet')
// pulisce eventuale 'new' su Badge
sheet.getRange(row,8).setValue('')
}
}
}
if(!alreadyOnSheet){
// scrive il file sullo sheet
data.push("","(new)") // Badge
Logger.log('data ' + data)
sheet.appendRow(data);
wroteOnSheet++
}
}
//torna su flow (readFilesAffidiFromFolder)
}
function readAffido(ss){
Logger.log('readyAffido')
// Legge e mette in relazione i 3 fogli del file affido
// Verifica se esistono duplicati (codice cliente e fatture) su Diffide inviate (????)
var sheet = ss.getSheetByName('CASI NO FATTURE')
var objCasiNoFatture = grabObjectFromSheet(sheet)
//Logger.log('objCasiNoFatture')
//Logger.log(objCasiNoFatture)
var sheet = ss.getSheetByName('CASI FATTURE')
var objCasiFatture = grabObjectFromSheet(sheet)
//var objCasiFatture = sheet.getDataRange().getValues()
//objCasiFatture.shift()
//objCasiFatture.shift()
var sheet = ss.getSheetByName('VISURA CAMERALE CUSTOMER')
var objVisureCamerali = grabObjectFromSheet(sheet)
//legge l'ultimo protocollo
var lastRowPratica = sheetDiffideDaInviare.getLastRow()
Logger.log('lastRowPratica = ' + lastRowPratica)
if (lastRowPratica == 1){
var newProt = 0;
}
else
{
var newProt = sheetDiffideDaInviare.getRange(lastRowPratica,1).getValue()
}
var lastCol = sheetDiffideDaInviare.getLastColumn()
Logger.log("Colonne di Diffide da Inviare " + lastCol)
var headers = sheetDiffideDaInviare.getRange(1,1,2,lastCol).getValues()
Logger.log('new prot = ' + newProt)
//crea array di oggetti objDiffideDaInviare
// inizia con Casi NO Fatture
var objDiffideDaInviare = []
//crea oggetti interni
for (var i=0; i<objCasiNoFatture.length; i++){
Logger.log('i = ' + i)
//incrementa protocollo
newProt++
//crea oggetto relativo a pratica protocollata
objDiffideDaInviare[i]={
'Riferimento pratica': newProt,
'Codice cliente': objCasiNoFatture[i].codcliente,
'Dato fiscale': objCasiNoFatture[i].datoFiscale,
'Ragione sociale': objCasiNoFatture[i].ragioneSociale,
'Indirizzo': objCasiNoFatture[i].indirizzoResidenza,
'CAP': objCasiNoFatture[i].capResidenza,
'Comune' : objCasiNoFatture[i].comuneResidenza,
'Provincia': objCasiNoFatture[i].provinciaResidenza,
'Telefono':objCasiNoFatture[i].telefono,
'Provenienza indirizzo': 'CACS'
}
// cerca info camerali di Casi No Fatture
// ATTENZIONE il match è effettuato con il dato fiscale perchè il codice cliente su Visure Camerali non corrisponde
for (var j in objVisureCamerali){
if (objCasiNoFatture[i].datoFiscale === objVisureCamerali[j].partitaIva){
objDiffideDaInviare[i]['Indirizzo'] = objVisureCamerali[j].indirizzo
objDiffideDaInviare[i]['CAP'] = objVisureCamerali[j].cap
objDiffideDaInviare[i]['Comune'] = objVisureCamerali[j].comune
objDiffideDaInviare[i]['Provincia'] = objVisureCamerali[j].provincia
objDiffideDaInviare[i]['Telefono'] = objCasiNoFatture[i].telefono
objDiffideDaInviare[i]['Provenienza indirizzo'] = 'Info camerali'
}
}
// inizializza variabili relative a fatture
var progressivoFattura = 0
var importoTotale = 0
//crea array interno per la proprietà fatture
var fatture = []
Logger.log('rif pratica = ' + objDiffideDaInviare[i]['Riferimento pratica'])
// filtra i objCasiFatture in base a codice cliente
for (var z=0; z<objCasiFatture.length; z++){
// inizializza il progressivo fattura
if (objCasiFatture[z].codcliente === objCasiNoFatture[i].codcliente){
progressivoFattura++
// compene l'array con le fatture, inserisce anche il numero progressivo di fattura (z)
fatture.push([newProt,objCasiFatture[z].codcliente,progressivoFattura,objCasiFatture[z].numeroFattura,objCasiFatture[z].dataFattura,objCasiFatture[z].importoScoperto])
importoTotale += objCasiFatture[z].importoScoperto
}
}
objDiffideDaInviare[i]['Fatture presenti'] = progressivoFattura
objDiffideDaInviare[i]['Importo totale'] = importoTotale
objDiffideDaInviare[i]['fatture'] = fatture
}
Logger.log(objDiffideDaInviare)
return objDiffideDaInviare
}
function writeAffidi(objDiffideDaInviare){
Logger.log('writeAffidi')
// scrive gli affidi sul foglio Diffide Da Inviare
var lastCol = sheetDiffideDaInviare.getLastColumn();
var headers = sheetDiffideDaInviare.getRange(1,1,1,lastCol).getValues();
Logger.log('headers ' + headers)
var rowDiffide = sheetDiffideDaInviare.getLastRow()
for (var x=0; x<objDiffideDaInviare.length; x++){
rowDiffide ++
var rowFatture = sheetDettaglioFatture.getLastRow()
Logger.log('x = ' + x)
// scrive i dati sul foglio Diffide da inviare
for (var prop in objDiffideDaInviare[x]){
Logger.log(prop)
// scrive le fatture in formato stringa in una colonna del foglio Diffide da Inviare
if (prop == 'fatture'){
var fattureString = JSON.stringify(objDiffideDaInviare[x][prop])
Logger.log(objDiffideDaInviare[x][prop])
var index = headers[0].indexOf('Fatture')
sheetDiffideDaInviare.getRange(rowDiffide,index+1).setValue(fattureString)
}
// scrive su tutte le colonne del foglio Diffide da inviare tranne l'ultima
var index = headers[0].indexOf(prop)
if (index >=0){
sheetDiffideDaInviare.getRange(rowDiffide,index+1).setValue(objDiffideDaInviare[x][prop])
}
}
sheetDiffideDaInviare.getRange(rowDiffide,lastCol).setValue(objDiffideDaInviare[x]['Data importazione'] = new Date())
// per la proprietà 'fatture' scrive i dati delle fatture sul foglio Dettaglio fatture
rowFatture++
var fatture = objDiffideDaInviare[x]['fatture']
sheetDettaglioFatture.getRange(rowFatture,1,fatture.length,6).setValues(fatture)
}
}
function checkDuplicati(field,sheet){
var lastProt = sheet.getRange(lastRow, 9)
var range = sheet.getRange(2, 3, 2, lastRow);
var codclienteCol = range.getValues();
var search = field
for (var i=0; i < codclienteCol.length; i++) {
if (codclienteCol[i][0] == search) {
Logger.log("il codice cliente " + field + " risulta già presente")
return true
}
}
Logger.log("non risultano duplicati")
return false
}