Skip to content

Commit 222a51f

Browse files
committed
feat: Aggiunta azione di gruppo per l'aggiornamento massivo glei agenti principali nelle anagrafiche
1 parent f575c01 commit 222a51f

2 files changed

Lines changed: 88 additions & 1 deletion

File tree

modules/anagrafiche/ajax/select.php

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,70 @@
158158

159159
break;
160160

161+
case 'agenti':
162+
$id_azienda = setting('Azienda predefinita');
163+
$tipologia = Tipo::where('name', 'Agente')->first()->id;
164+
165+
$query = "SELECT
166+
`an_anagrafiche`.`idanagrafica` AS id,
167+
CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = '', '', CONCAT(' (', `citta`, ')')), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'), IF(`is_bloccata` = 1, CONCAT(' (', `an_relazioni_lang`.`title`, ')'), ''),' - ', `an_anagrafiche`.`codice`) AS descrizione,
168+
`idtipointervento_default` AS `idtipointervento`,
169+
`co_pagamenti`.`id` AS id_pagamento,
170+
`co_pagamenti_lang`.`title` AS desc_pagamento,
171+
`banca_acquisti`.`id` AS id_banca_acquisti,
172+
CONCAT(`banca_acquisti`.`nome`, ' - ', `banca_acquisti`.`iban`) AS descrizione_banca_acquisti,
173+
`an_relazioni`.`is_bloccata` AS is_bloccata
174+
FROM
175+
`an_anagrafiche`
176+
INNER JOIN (
177+
`an_tipianagrafiche_anagrafiche`
178+
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id`
179+
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica`
180+
LEFT JOIN `co_pagamenti` ON `an_anagrafiche`.`idpagamento_acquisti`=`co_pagamenti`.`id`
181+
LEFT JOIN `co_pagamenti_lang` co_pagamenti_lang ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).")
182+
LEFT JOIN `co_banche` banca_acquisti ON `co_pagamenti`.`idconto_acquisti` = `banca_acquisti`.`id_pianodeiconti3` AND `banca_acquisti`.`id_anagrafica` = '.prepare($id_azienda).' AND `banca_acquisti`.`deleted_at` IS NULL AND `banca_acquisti`.`predefined` = 1
183+
LEFT JOIN an_relazioni ON an_anagrafiche.idrelazione=an_relazioni.id
184+
LEFT JOIN `an_relazioni_lang` ON (`an_relazioni`.`id`=`an_relazioni_lang`.`id_record` AND `an_relazioni_lang`.`id_lang`= ".prepare(Models\Locale::getDefault()->id).')
185+
|where| '.Modules::getAdditionalsQuery(Module::where('name', 'Anagrafiche')->first()->id).'
186+
ORDER BY
187+
`ragione_sociale`';
188+
189+
foreach ($elements as $element) {
190+
$filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
191+
}
192+
193+
if (empty($filter)) {
194+
$where[] = '`an_tipianagrafiche`.`id`= '.prepare($tipologia);
195+
$where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
196+
}
197+
198+
if (!empty($search)) {
199+
$search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
200+
$search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
201+
$search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
202+
$search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
203+
$search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
204+
$search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
205+
}
206+
207+
$data = AJAX::selectResults($query, $where, $filter, $search_fields, $limit, $custom);
208+
$rs = $data['results'];
209+
210+
foreach ($rs as $k => $r) {
211+
$rs[$k] = array_merge($r, [
212+
'text' => $r['descrizione'],
213+
'disabled' => $r['is_bloccata'],
214+
]);
215+
}
216+
217+
$results = [
218+
'results' => $rs,
219+
'recordsFiltered' => $data['recordsFiltered'],
220+
'link' => 'module:Anagrafiche',
221+
];
222+
223+
break;
224+
161225
case 'vettori':
162226
$tipologia = Tipo::where('name', 'Vettore')->first()->id;
163227

@@ -402,7 +466,7 @@
402466
}
403467

404468
if (empty($filter)) {
405-
$where[] = 'an_sedi.deleted_at IS NULL';
469+
$where[] = 'deleted_at IS NULL';
406470
}
407471

408472
$where[] = '`idanagrafica`='.prepare($superselect['idanagrafica']);

modules/anagrafiche/bulk.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,20 @@
9898

9999
break;
100100

101+
case 'update_agenti':
102+
$idagente = post('idagente') ?: 0;
103+
foreach ($id_records as $id) {
104+
$anagrafica = Anagrafica::find($id);
105+
if ($anagrafica->isTipo('Cliente')) {
106+
$anagrafica->idagente = $idagente;
107+
$anagrafica->save();
108+
}
109+
}
110+
111+
flash()->info(tr('Agenti aggiornati correttamente!'));
112+
113+
break;
114+
101115
case 'export_newsletter_csv':
102116
$tipo_esportazione = post('tipo_esportazione');
103117
$id_records_list = implode(',', array_map(intval(...), $id_records));
@@ -268,6 +282,15 @@
268282
],
269283
];
270284

285+
$operations['update_agenti'] = [
286+
'text' => '<span><i class="fa fa-users"></i> '.tr('Aggiorna agente').'</span>',
287+
'data' => [
288+
'msg' => tr('Vuoi aggiornare l\'agente a queste anagrafiche?').'<br><br>{[ "type": "select", "label": "'.tr('Agente principale').'", "name": "idagente", "ajax-source": "agenti", "value": "$idagente$" ]}',
289+
'button' => tr('Procedi'),
290+
'class' => 'btn btn-lg btn-warning',
291+
],
292+
];
293+
271294
$operations['update_price_list'] = [
272295
'text' => '<span><i class="fa fa-refresh"></i> '.tr('Imposta listino').'</span>',
273296
'data' => [

0 commit comments

Comments
 (0)