diff --git a/plugins/pianificazione_fatturazione/actions.php b/plugins/pianificazione_fatturazione/actions.php
index 38d1dc126..5e642b0a2 100755
--- a/plugins/pianificazione_fatturazione/actions.php
+++ b/plugins/pianificazione_fatturazione/actions.php
@@ -17,6 +17,7 @@
* along with this program. If not, see .
*/
+
use Modules\Articoli\Articolo as ArticoloOriginale;
use Modules\Contratti\Components\Articolo;
use Modules\Contratti\Components\Riga;
@@ -196,4 +197,61 @@ switch ($operazione) {
$pianificazione->save();
break;
+
+ case 'add_fattura_multipla':
+ $rate = post('rata');
+
+ $data = post('data');
+ $accodare = post('accodare');
+ $id_segment = post('id_segment');
+ $id_tipodocumento = post('idtipodocumento');
+ $tipo = Tipo::find($id_tipodocumento);
+
+ foreach ($rate as $i => $rata) {
+ $id_rata = $rata;
+
+ $pianificazione = Pianificazione::find($id_rata);
+
+ $contratto = $pianificazione->contratto;
+ if (!empty($accodare)) {
+ $documento = $dbo->fetchOne(
+ 'SELECT co_documenti.id FROM co_documenti INNER JOIN co_statidocumento ON co_documenti.idstatodocumento = co_statidocumento.id
+ WHERE co_statidocumento.descrizione = \'Bozza\' AND idanagrafica = '.prepare($contratto->idanagrafica)
+ );
+
+ $id_documento = $documento['id'];
+ }
+
+ // Creazione fattura
+ if (empty($id_documento)) {
+ $fattura = Fattura::build($contratto->anagrafica, $tipo, $data, $id_segment);
+ } else {
+ $fattura = Fattura::find($id_documento);
+ }
+
+ $fattura->note = "";
+ $fattura->save();
+
+ $id_conto = post('id_conto');
+
+ // Copia righe
+ $righe = $pianificazione->getRighe();
+
+ foreach ($righe as $riga) {
+ $copia = $riga->copiaIn($fattura, $riga->qta);
+ $copia->id_conto = $id_conto;
+ $copia->save();
+ }
+
+ // Salvataggio fattura nella pianificazione
+ $pianificazione->fattura()->associate($fattura);
+ $pianificazione->save();
+
+ }
+
+ flash()->info(tr('Rate fatturate correttamente!'));
+ break;
+
+ redirect(base_path().'/controller.php?id_module=14');
}
+
diff --git a/plugins/pianificazione_fatturazione/ajax_rate.php b/plugins/pianificazione_fatturazione/ajax_rate.php
new file mode 100644
index 000000000..a7398611f
--- /dev/null
+++ b/plugins/pianificazione_fatturazione/ajax_rate.php
@@ -0,0 +1,97 @@
+.
+ */
+
+use Plugins\PianificazioneFatturazione\Pianificazione;
+use Illuminate\Support\Facades\DB;
+
+include_once __DIR__.'/../../core.php';
+
+$action = post("action");
+$ret = "";
+switch ($action) {
+ case "update_table":
+ $month = post("currentMonth");
+ $year = post("currentYear");
+
+ $pianificazioni = Pianificazione::doesntHave('fattura')
+ ->whereHas('contratto', function ($q) {
+ $q->whereHas('stato', function ($q) {
+ $q
+ ->where('is_fatturabile', 1)
+ ->where('descrizione', '<>', 'Concluso');
+ });
+ })
+ ->whereYear('co_fatturazione_contratti.data_scadenza', $year)
+ ->whereMonth('co_fatturazione_contratti.data_scadenza', $month);
+
+ $pianificazioni = $pianificazioni->get();
+
+ $ret = [];
+ foreach ($pianificazioni as $pianificazione) {
+ $contratto = $pianificazione->contratto;
+ $anagrafica = $contratto->anagrafica;
+ $numero_pianificazioni = $contratto->pianificazioni()->count();
+
+ $ret[] = [
+ "idPianificazione" => $pianificazione->id,
+ "idContratto" => $pianificazione->idcontratto,
+ "dataScadenza" => dateFormat($pianificazione->data_scadenza),
+ "contratto" => reference($contratto),
+ "ragioneSociale" => Modules::link('Anagrafiche', $anagrafica->id, nl2br($anagrafica->ragione_sociale)),
+ "totale" => moneyFormat($pianificazione->totale),
+ "importo" => tr('Rata _IND_/_NUM_ (totale: _TOT_)', [
+ '_IND_' => numberFormat($pianificazione->getNumeroPianificazione(), 0),
+ '_NUM_' => numberFormat($numero_pianificazioni, 0),
+ '_TOT_' => moneyFormat($contratto->totale),
+ ]),
+ ];
+ }
+
+ break;
+
+ case "update_month":
+ $year = post("currentYear");
+
+ $pianificazioni = Pianificazione::doesntHave('fattura')
+ ->whereHas('contratto', function ($q) {
+ $q->whereHas('stato', function ($q) {
+ $q
+ ->where('is_fatturabile', 1)
+ ->where('descrizione', '<>', 'Concluso');
+ });
+ })
+ ->whereYear('co_fatturazione_contratti.data_scadenza', $year)
+ ->get();
+
+ $raggruppamenti = $pianificazioni->groupBy(function ($item) {
+ return ucfirst($item->data_scadenza->format('m'));
+ });
+
+ $ret = [];
+ foreach ($raggruppamenti as $i => $item) {
+ $ret[intval($i)] = count($item);
+ }
+
+ break;
+
+}
+
+
+echo json_encode($ret);
+
diff --git a/plugins/pianificazione_fatturazione/crea_fattura_multipla.php b/plugins/pianificazione_fatturazione/crea_fattura_multipla.php
new file mode 100644
index 000000000..442fca1ad
--- /dev/null
+++ b/plugins/pianificazione_fatturazione/crea_fattura_multipla.php
@@ -0,0 +1,109 @@
+.
+ */
+
+use Plugins\PianificazioneFatturazione\Pianificazione;
+include_once __DIR__.'/../../core.php';
+
+$records = json_decode(get('records'), true);
+
+if (empty($records)) {
+ echo '
'.tr('Nessuna rata selezionata').'.
';
+ return;
+}
+
+//print_r($records);
+//echo '';
+foreach ($records as $j => $record) {
+ $id_rata[$j] = $record['rata'];
+ $pianificazione[$j] = Pianificazione::find($id_rata);
+ $contratto[$j] = $pianificazione->contratto;
+ $id_pianificazione[$j] = $pianificazione->id;
+
+ foreach ($contratto[$j]->pianificazioni as $i => $p) {
+ if ($p->id == $id_pianificazione[$i]) {
+ $numero_rata[$i] = $i + 1;
+ break;
+ }
+ }
+}
+
+
+
+$module_fattura = Modules::get('Fatture di vendita');
+$id_conto = setting('Conto predefinito fatture di vendita');
+
+echo
+'';
+echo
+'';
\ No newline at end of file
diff --git a/plugins/pianificazione_fatturazione/widgets/rate_contrattuali.php b/plugins/pianificazione_fatturazione/widgets/rate_contrattuali.php
index 4bfe6cf13..4eef23de2 100644
--- a/plugins/pianificazione_fatturazione/widgets/rate_contrattuali.php
+++ b/plugins/pianificazione_fatturazione/widgets/rate_contrattuali.php
@@ -21,108 +21,364 @@ use Plugins\PianificazioneFatturazione\Pianificazione;
include_once __DIR__.'/../../../core.php';
+$mesi = [
+ 1 => 'Gennaio',
+ 2 => 'Febbraio',
+ 3 => 'Marzo',
+ 4 => 'Aprile',
+ 5 => 'Maggio',
+ 6 => 'Giugno',
+ 7 => 'Luglio',
+ 8 => 'Agosto',
+ 9 => 'Settembre',
+ 10 => 'Ottobre',
+ 11 => 'Novembre',
+ 12 => 'Dicembre',
+];
+
$pianificazioni = Pianificazione::doesntHave('fattura')
->orderBy('data_scadenza', 'asc')
->whereHas('contratto', function ($q) {
$q->whereHas('stato', function ($q) {
- $q->where('is_fatturabile', 1);
+ $q
+ ->where('is_fatturabile', 1)
+ ->where('descrizione', '<>', 'Concluso');
});
})
+ ->whereYear('co_fatturazione_contratti.data_scadenza', date('Y'))
+ ->whereMonth('co_fatturazione_contratti.data_scadenza', date('m'))
->get();
-if ($pianificazioni->isEmpty()) {
- echo '
-'.tr('Non ci sono fatture da emettere').'.
';
- return;
-}
-$raggruppamenti = $pianificazioni->groupBy(function ($item) {
- return ucfirst($item->data_scadenza->formatLocalized('%B %Y'));
-});
-
-$counter = 0;
-foreach ($raggruppamenti as $mese => $raggruppamento) {
- ++$counter;
-
- // Se cambia il mese ricreo l'intestazione della tabella
- if ($counter == 1) {
- $attr = '';
- $class = 'fa-minus-circle';
- } else {
- $attr = 'style="display:none;"';
- $class = 'fa-plus-circle';
+ if ($pianificazioni->isEmpty()) {
+ echo ''.tr('Non ci sono fatture da emettere').'.
';
+ return;
}
+
+ $conteggio = Pianificazione::doesntHave('fattura')
+ ->selectRaw('month(co_fatturazione_contratti.data_scadenza) mese, count(*) conto')
+ ->whereHas('contratto', function ($q) {
+ $q->whereHas('stato', function ($q) {
+ $q
+ ->where('is_fatturabile', 1)
+ ->where('descrizione', '<>', 'Concluso');
+ });
+ })
+ ->whereYear('co_fatturazione_contratti.data_scadenza', date('Y'))
+ ->groupBy('mese')
+ ->get();
+
+ $raggruppamenti = $pianificazioni->groupBy(function ($item) {
+ return ucfirst($item->data_scadenza->formatLocalized('%B %Y'));
+ });
+
+
- echo "
-';
+echo
+'
+
+
';
+ ?>
+
+
+
+
+
+
';
-}
$modulo_pianificazione = Modules::get('Contratti');
$plugin_pianificazione = Plugins::get('Pianificazione fatturazione');
+
+
echo '
';
+function crea_fattura_multipla($this) {
+ var $table = $("table");
+ var $rows = $table.find("tbody");
+ var fatture = [];
+ $rows.find("input[type=checkbox]").each(function() {
+ if ($(this).is(":checked")) {
+ fatture.push($(this));
+ }
+ });
+ $fatture = $(fatture);
+ records = []
+ for (var i=0; i<$fatture.length; i++) {
+ records.push(
+ {
+ rata: $fatture[i].attr("data-pianificazioneId"),
+ contratto: $fatture[i].attr("data-contrattoId"),
+ }
+ );
+ }
+ records = JSON.stringify(records);
+ console.log(records);
+ if (records.length > 0) {
+ openModal(
+ "Crea fattura multipla",
+ "' . $plugin_pianificazione->fileurl('crea_fattura_multipla.php') . '?id_module=' . $modulo_pianificazione->id .
+ '&id_plugin=' . $plugin_pianificazione->id . '&records=" + records
+ );
+ }
+}
+var mesi = {
+ 1: "Gennaio",
+ 2: "Febbraio",
+ 3: "Marzo",
+ 4: "Aprile",
+ 5: "Maggio",
+ 6: "Giugno",
+ 7: "Luglio",
+ 8: "Agosto",
+ 9: "Settembre",
+ 10: "Ottobre",
+ 11: "Novembre",
+ 12: "Dicembre",
+};
+
+init();
+';
\ No newline at end of file