Miglioramenti plugin Pianificazione fatturazione

This commit is contained in:
MatteoPistorello 2021-04-02 09:58:11 +02:00
parent 7422403844
commit 4d520074ce
6 changed files with 53 additions and 50 deletions

View File

@ -67,14 +67,14 @@ switch (post('op')) {
$contratto->idreferente = post('idreferente');
// Informazioni sulle date del documento
$contratto->data_bozza = post('data_bozza');
$contratto->data_rifiuto = post('data_rifiuto');
$contratto->data_bozza = post('data_bozza') ?: null;
$contratto->data_rifiuto = post('data_rifiuto') ?: null;
// Dati relativi alla validità del documento
$contratto->validita = post('validita');
$contratto->tipo_validita = post('tipo_validita');
$contratto->data_accettazione = post('data_accettazione');
$contratto->data_conclusione = post('data_conclusione');
$contratto->data_accettazione = post('data_accettazione') ?: null;
$contratto->data_conclusione = post('data_conclusione') ?: null;
$contratto->esclusioni = post('esclusioni');
$contratto->descrizione = post('descrizione');

View File

@ -61,21 +61,17 @@ switch ($operazione) {
$date_pianificazioni = [];
$pianificazioni = [];
foreach ($selezioni as $key => $selezione) {
if ($numero_fatture == 0 && !empty(post('data_inizio'))) {
$date = new DateTime(post('data_inizio'));
} else {
$date = new DateTime($periodi[$key]);
$date = new DateTime($periodi[$key]);
if (post('cadenza_fatturazione') == 'Inizio') {
$date->modify('first day of this month');
} elseif (post('cadenza_fatturazione') == 'Giorno' && !empty(post('giorno_fisso'))) {
$date->modify('last day of this month');
$last_day = $date->format('d');
$day = post('giorno_fisso') > $last_day ? $last_day : post('giorno_fisso');
if (post('cadenza_fatturazione') == 'Inizio') {
$date->modify('first day of this month');
} elseif (post('cadenza_fatturazione') == 'Giorno' && !empty(post('giorno_fisso'))) {
$date->modify('last day of this month');
$last_day = $date->format('d');
$day = post('giorno_fisso') > $last_day ? $last_day : post('giorno_fisso');
// Correzione data
$date->setDate($date->format('Y'), $date->format('m'), $day);
}
// Correzione data
$date->setDate($date->format('Y'), $date->format('m'), $day);
}
// Comversione della data in stringa standard
@ -129,10 +125,17 @@ switch ($operazione) {
$riga->save();
$qta_evasa += $qta_riga;
$pianificata[] = $pianificazioni[$rata];
} else{
$non_pianificata[] = $pianificazioni[$rata];
}
}
$r->delete();
}
$tot_non_pianificati = implode(', ', array_unique(array_diff($non_pianificata, $pianificata)));
if(!empty($tot_non_pianificati)){
$dbo->query('DELETE FROM `co_fatturazione_contratti` WHERE `id` IN ('.$tot_non_pianificati.')');
}
}
break;

View File

@ -60,9 +60,7 @@ echo '
<div class="col-md-3" id="div_giorno_fisso" hidden>
{[ "type": "select", "label": "'.tr('Giorno fisso fatturazione').'", "name": "giorno_fisso", "values": '.json_encode($giorni_fatturazione).', "value": "1", "help":"'.tr('Selezionare il giorno fisso di fatturazione.').'" ]}
</div>
<div class="col-md-3">
{[ "type": "date", "label": "'.tr('Data inizio fatturazione').'", "name": "data_inizio", "value": "'.$contratto->data_accettazione.'", "help":"'.tr('Data da cui far partire la prima fattura del contratto.').'" ]}
</div>
<input type="hidden" name="data_inizio" value="'.$contratto->data_accettazione.'">
</div>
<div class="row">
<div class="col-md-12">
@ -71,7 +69,7 @@ echo '
</div>
<br>
<div id="cadenza">
<script>$("#cadenza").load(</script>
<script>$("#cadenza").load();</script>
</div>
<br>
@ -148,15 +146,16 @@ echo '
</div>';
echo '
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-chevron-right"></i> '.tr('Procedi').'</button>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-chevron-right"></i> '.tr('Procedi').'</button>
</div>
</div>
</form>';
echo '
@ -172,37 +171,22 @@ echo '
caricaCadenza();
});
$("#data_inizio").focusout(function(){
caricaCadenza();
});
function caricaCadenza() {
let container = $("#cadenza");
localLoading(container, true);
return $.get("'.$structure->fileurl('ajax_cadenza.php').'?id_module='.$id_module.'&id_record='.$id_record.'&scadenza="+$("#scadenza").val()+"&data_inizio="+$("#data_inizio").val(), function(data) {
return $.get("'.$structure->fileurl('ajax_cadenza.php').'?id_module='.$id_module.'&id_record='.$id_record.'&scadenza="+$("#scadenza").val()+"&data_inizio="+input("data_inizio").get(), function(data) {
container.html(data);
localLoading(container, false);
});
}
$("input:checkbox").click(function(){
var check = 0;
$("#periodi input").each(function (){
if( $(this).is(":checked") ){
check = check + 1;
}
});
$("#total_check").html("Rate: " + check).trigger("change");
});
function selezionaTutto(){
var check = 0;
$("#periodi input").each(function (){
$("input:checkbox").prop("checked",true);
if( $("input:checkbox").is(":checked") ){
$(this).prop("checked",true);
if( $(this).is(":checked") ){
check = check + 1;
}
});
@ -233,13 +217,13 @@ echo '
var riga = JSON.parse($(this).attr("options"));
var imponibile_riga = (riga.totale_imponibile/riga.qta)*qta;
imponibile_riga = imponibile_riga.toLocaleString()+" &euro;";
imponibile_riga = imponibile_riga.toLocale()+" &euro;";
var iva_riga = (riga.iva/riga.qta)*qta;
iva_riga = iva_riga.toLocaleString()+" &euro;";
iva_riga = iva_riga.toLocale()+" &euro;";
var totale_riga = (riga.totale/riga.qta)*qta;
totale_riga = totale_riga.toLocaleString()+" &euro;";
totale_riga = totale_riga.toLocale()+" &euro;";
$("#totali_"+riga.id).html("<p><b>Imponibile</b>: "+imponibile_riga+"</p>\
<p><b>IVA</b>: "+iva_riga+"</p>\

View File

@ -58,7 +58,7 @@ echo '
unset($checked);
if ($id_module == Modules::get('Contratti')['id']) {
if ($data == date('Y-m-t', strtotime($timeing, strtotime($data_fatturazione)))) {
if ($data == date('Y-m-t', strtotime($timeing, strtotime($data_fatturazione))) || $data_fatturazione == date('Y-m', strtotime($data_corrente))) {
$checked = 'checked';
$data_fatturazione = date('Y-m', strtotime($data));
}
@ -90,4 +90,14 @@ echo '
});
$("#total_check").html("Rate: " + check).trigger("change");
});
$("#periodi input").change(function(){
var check = 0;
$("#periodi input").each(function (){
if( $(this).is(":checked") ){
check = check + 1;
}
});
$("#total_check").html("Rate: " + check).trigger("change");
});
</script>';

View File

@ -27,7 +27,7 @@ if (empty($contratto)) {
return;
}
$is_pianificabile = $contratto->stato->is_pianificabile && !empty($contratto['data_accettazione']); // Contratto permette la pianificazione
$is_pianificabile = $contratto->stato->is_pianificabile && !empty($contratto['data_accettazione']) && !empty($contratto['data_conclusione']); // Contratto permette la pianificazione
$is_pianificato = false;
$stati_pianificabili = Stato::where('is_pianificabile', 1)->get();
$elenco_stati = $stati_pianificabili->implode('descrizione', ', ');

View File

@ -97,4 +97,10 @@ UPDATE `co_righe_promemoria` SET `iva` = ABS(`iva`) * IF(`sconto` > 0, -1, 1) WH
UPDATE `in_righe_interventi` SET `iva` = ABS(`iva`) * IF(`sconto` > 0, -1, 1) WHERE `is_sconto` = 1;
-- Aumentato il campo descrizione in articoli da varchar a text
ALTER TABLE `mg_articoli` CHANGE `descrizione` `descrizione` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
ALTER TABLE `mg_articoli` CHANGE `descrizione` `descrizione` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
-- Set a NULL le date dei contratti vuote
UPDATE `co_contratti` SET `data_bozza`=NULL WHERE `data_bozza`=0000-00-00;
UPDATE `co_contratti` SET `data_accettazione`=NULL WHERE `data_accettazione`=0000-00-00;
UPDATE `co_contratti` SET `data_rifiuto`=NULL WHERE `data_rifiuto`=0000-00-00;
UPDATE `co_contratti` SET `data_conclusione`=NULL WHERE `data_conclusione`=0000-00-00;