<?php
/*
 * OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
 * Copyright (C) DevCode s.r.l.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
 */

include_once __DIR__.'/../../core.php';
use Models\Module;

$dir = $documento->direzione;
$numero = $documento->numero_esterno ?: $documento->numero;
$id_modulo_banche = (new Module())->getByField('name', 'Banche');
$id_modulo_prima_nota = (new Module())->getByField('name', 'Prima nota');

echo '
<form action="" method="post" id="edit-form">
	<input type="hidden" name="op" value="update">
	<input type="hidden" name="backto" value="record-edit">
	<input type="hidden" name="id_record" value="'.$id_record.'">

	<input type="hidden" name="tipo" value="'.$record['tipo'].'">
	<input type="hidden" name="descrizione" value="'.$record['descrizione'].'">
	<input type="hidden" name="iddocumento" value="'.$record['iddocumento'].'">
    <input type="hidden" name="idanagrafica" value="'.$record['idanagrafica'].'">

	<div class="panel panel-primary">
		<div class="panel-heading">
			<h3 class="panel-title">
			    '.tr('Dettagli scadenza').'
                </button>
            </h3>
		</div>

		<div class="panel-body">
			<div class="row">

				<!-- Info scadenza -->
				<div class="col-md-6">
					<table class="table table-striped table-hover table-condensed table-bordered">
                        <tr>
                            <th width="125">'.($dir == 'entrata' ? tr('Cliente') : ($dir == 'uscita' ? tr('Fornitore') : tr('Anagrafica'))).':</th>
                            <td>
                                '.Modules::link('Anagrafiche', $record['idanagrafica'], $record['ragione_sociale']).'
                            </td>
                        </tr>';
if (!empty($documento)) {
    echo '
                        <tr>
                            <th>'.tr('Documento').':</th>
                            <td>'.$documento->tipo->getTranslation('name').'</td>
                        </tr>

                        <tr>
                            <th>'.tr('Numero').':</th>
                            <td>'.$numero.'</td>
                        </tr>
                    </table>    

                    <table class="table table-striped table-hover table-condensed table-bordered">
                        <tr>
                            <th>'.tr('Data').':</th>
                            <td>'.Translator::dateToLocale($documento->data).'</td>
                        </tr>

                        <tr>
                            <th>'.tr('Netto a pagare').':</th>
                            <td>'.moneyFormat($documento->netto).'</td>
                        </tr>
                        <tr>
                            <th>'.tr('Info distinta').' <span class="tip" title="'.tr('Informazioni/Note sulla distinta associata alla scadenza (es. numero)').'" ><i class="fa fa-question-circle-o" ></i></span>:</th>
                            <td>
                                {[ "type": "text", "name": "distinta", "value": "'.$record['distinta'].'" ]}
                            </td>
                        </tr>
                    </table>

                    '.Modules::link($documento->module, $record['iddocumento'], '<i class="fa fa-folder-open"></i> '.tr('Apri documento'), null, 'class="btn btn-primary"').'
                </div>';
} else {
    $scadenza = $dbo->fetchOne('SELECT * FROM co_scadenziario WHERE id = '.prepare($id_record));
    echo '          
                    <table class="table table-striped table-hover table-condensed table-bordered">
                        <tr>
                            <td>';
    echo input([
                                    'type' => 'ckeditor',
                                    'label' => tr('descrizione'),
                                    'name' => 'descrizione',
                                    'required' => 1,
                                    'extra' => 'rows="2"',
                                    'value' => $record['descrizione'],
                                ]);
    echo '
                            </td>
                        </tr>
                    </table>
                </div>';
}

echo '
                <div class="col-md-6">
                    <table class="table table-striped table-hover table-condensed table-bordered">
                        <tr>
                            <td>';
echo input([
    'type' => 'ckeditor',
    'label' => tr('Note'),
    'name' => 'note',
    'extra' => 'rows="2"',
    'value' => $record['note'],
]);
echo '
                            </td>
                        </tr>';

if (!empty($record['presentazioni_exported_at'])) {
    $export_riba = '<i class="fa fa-check text-success"></i> '.tr('Esportata il _DATA_', [
        '_DATA_' => Translator::timestampToLocale($record['presentazioni_exported_at']),
    ]).'';
} else {
    $export_riba = '<i class="fa fa-clock-o text-warning"></i> '.tr('Non ancora esportata');
}
echo '
                    </table>';

echo '
				</div>
            </div>
        </div>
    </div>
    <div class="panel panel-primary">
        <div class="panel-heading">
            <h3 class="panel-title">
                '.tr('Rate scadenza').'
                <button type="button" class="btn btn-xs btn-info pull-right tip" id="add-scadenza" '.(empty($documento) ? 'disabled' : '').' title="'.tr('È possibile aggiungere scadenze solo se è presente il collegamento a un documento, in caso contrario è consigliato creare più scadenze con la stessa descrizione').'">
                    <i class="fa fa-plus"></i> '.tr('Aggiungi scadenza').'
                </button>
            </h3>
        </div>

        <div class="panel-body">
            <div class="row">
                <div class="col-md-12">
                    <table class="table table-hover table-condensed table-bordered text-center">
                        <thead>
                            <tr>
                                <th style="width:20%;">'.tr('Banca accredito').'</th> 
                                <th style="width:20%;">'.tr('Banca addebito').'</th> 
                                <th style="width:20%;">'.tr('Tipologia').'</th>
                                <th style="width:10%;">'.tr('Data').'</th>
                                <th style="width:10%;">'.tr('Data concordata').'</th>
                                <th style="width:10%;">'.tr('Importo').'</th>
                                <th style="width:10%;">'.tr('Pagato').'</th>
                                <th style="width:3%;">'.tr('Rata').'</th>
                            </tr>
                        </thead>

                        <tbody id="scadenze">';

foreach ($scadenze as $i => $scadenza) {
    $scadenza = (array) $scadenza;
    if ($scadenza['da_pagare'] === $scadenza['pagato'] && $scadenza['da_pagare'] > 0) {
        $class = 'success';
    } elseif (abs($scadenza['pagato']) === 0.000000) {
        $class = 'danger';
    } elseif (abs($scadenza['pagato']) <= abs($scadenza['da_pagare'])) {
        $class = 'warning';
    } else {
        $class = 'danger';
    }

    echo '
                            <tr class="'.$class.'">
                                <input type="hidden" name="id_scadenza['.$i.']" value="'.$scadenza['id'].'">
                                <td align="center">
                                    '.($dir == 'entrata' ?
                                '{[ "type": "select", "name": "id_banca_azienda['.$i.']", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "'.$scadenza['id_banca_azienda'].'", "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'" ]}'
                                :
                                '{[ "type": "select", "name": "id_banca_controparte['.$i.']", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).', "value": "'.$scadenza['id_banca_controparte'].'", "icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'"]}
                                    ').'
                                </td>

                                <td align="center">
                                    '.($dir == 'entrata' ?
                                '{[ "type": "select", "name": "id_banca_controparte['.$i.']", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).', "value": "'.$scadenza['id_banca_controparte'].'", "icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'"]}'
                                :
                                '{[ "type": "select", "name": "id_banca_azienda['.$i.']", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "'.$scadenza['id_banca_azienda'].'", "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'" ]}'
                                ).'
                                </td>

                                <td>
                                    {[ "type": "select", "name": "id_pagamento['.$i.']", "ajax-source": "pagamenti", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "'.$scadenza['id_pagamento'].'" ]}
                                </td>

                                <td align="center">
                                    {[ "type": "date", "name": "scadenza['.$i.']", "value": "'.$scadenza['scadenza'].'" ]}
                                </td>

                                <td align="center">
                                    {[ "type": "date", "name": "data_concordata['.$i.']", "value": "'.$scadenza['data_concordata'].'" ]}
                                </td>

                                <td class="text-right">
                                    {[ "type": "number", "name": "da_pagare['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['da_pagare'], 2).'", "onchange": "controlloTotale()" ]}
                                </td>

                                <td class="text-right">
                                    {[ "type": "number", "name": "pagato['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['pagato']).'"  ]}
                                </td>

                                <td align="center">
                                    <a onclick="launch_modal(\''.tr('Registra contabile pagamento').'\', \''.base_path().'/add.php?id_module='.$id_modulo_prima_nota.'&id_scadenze='.$scadenza['id'].'\');" class="btn btn-sm btn-primary">
                                        <i class="fa fa-euro"></i> '.($dir == 'entrata' ? tr('Incassa') : tr('Paga')).'
                                    </a>
                                </td>
                            </tr>';
}

echo '
                        </tbody>
                        <tfoot>
                            <tr>
                                <td class="text-right"></td>
                                <td class="text-right"></td>
                                <td class="text-right"></td>
                                <td class="text-right"></td>
                                <td class="text-right"><b>'.tr('Totale').'</b></td>
                                <td class="text-right" id="totale_utente">'.numberFormat($totale_da_pagare).'</td>
                                <td class="text-right"></td>
                            </tr>
                        </tfoot>
                    </table>
                </div>';
?>

            </div>
            <div class="alert alert-warning hide" id="totale"><?php echo tr('Il totale da pagare non corrisponde con il totale della fattura che è pari a _MONEY_', [
                    '_MONEY_' => '<b>'.moneyFormat($totale_da_pagare).'</b>',
                ]); ?>.<br><?php echo tr('Differenza di _TOT_ _CURRENCY_', [
                        '_TOT_' => '<span id="diff"></span>',
                        '_CURRENCY_' => currency(),
                    ]); ?>.
            </div>

            <input type="hidden" id="totale_da_pagare" value="<?php echo round($totale_da_pagare, 2); ?>">
        </div>
    </div>
</form>

{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "<?php echo $id_record; ?>" )}

{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}

<?php
if (empty($documento)) {
    echo '
<a class="btn btn-danger ask" data-backto="record-list">
    <i class="fa fa-trash"></i> '.tr('Elimina').'
</a>';
}

echo '
<table class="hide">
    <tbody id="scadenza-template">
        <tr class="danger">
            <input type="hidden" name="id_scadenza[-id-]" value="">
                <td align="center">
                    '.($dir == 'entrata' ?
'{[ "type": "select", "name": "id_banca_azienda[-id-]", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'" ]}'
:
'{[ "type": "select", "name": "id_banca_controparte[-id-]", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).', "icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'"]}
                    ').'
                </td>
                <td align="center">
                    '.($dir == 'entrata' ?
'{[ "type": "select", "name": "id_banca_controparte[-id-]", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).',"icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'"]}'
:
'{[ "type": "select", "name": "id_banca_azienda[-id-]", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'" ]}'
).'
                </td>

                <td>
                    {[ "type": "select", "name": "id_pagamento[-id-]", "ajax-source": "pagamenti", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).']}
                </td>

                <td align="center">
                    {[ "type": "date", "name": "scadenza[-id-]" ]}
                </td>

                <td align="center">
                    {[ "type": "date", "name": "data_concordata[-id-]" ]}
                </td>

                <td class="text-right">
                    {[ "type": "number", "name": "da_pagare[-id-]", "decimals": 2, "onchange": "controlloTotale()" ]}
                </td>

                <td class="text-right">
                    {[ "type": "number", "name": "pagato[-id-]", "decimals": 2 ]}
                </td>

                <td align="center">
                    <a onclick="launch_modal(\''.tr('Registra contabile pagamento').'\', \''.base_path().'/add.php?id_module='.$id_modulo_prima_nota.'&id_scadenze=-id-\');" class="btn btn-sm btn-primary">
                        <i class="fa fa-euro"></i> '.($dir == 'entrata' ? tr('Incassa') : tr('Paga')).'
                    </a>
                </td>      
            </input>    
        </tr>
    </tbody>
</table>

<script>
	$(document).on("click", "#add-scadenza", function() {
        var i = '.$i.';
        cleanup_inputs();

        i++;
		var text = replaceAll($("#scadenza-template").html(), "-id-", "" + i);

		$("#scadenze").append(text);

        $.ajax({
            url: globals.rootdir + "/actions.php",
            method: "POST",
            dataType: "json",
            data: {
                id_module: globals.id_module,
                id_record: globals.id_record,
                op: "add",
                idanagrafica: '.$record['idanagrafica'].',
                iddocumento: '.$documento['id'].',
                data_emissione: "'.$documento['data_emissione'].'",
            },
            success: function(response) {
                restart_inputs();
            },
            error: function(xhr, status, error) {
                console.error(error);
            }
        });

		restart_inputs();
	});
</script>';

// Abilitazione dei controlli solo per Scadenze collegate a documenti
if (!empty($documento)) {
    echo '
<script>
    globals.cifre_decimali = 2;

	$(document).ready(function() {
        controlloTotale();';

    if ($dir == 'uscita') {
        echo '
        $("#email-button").remove();
        $("#allega-fattura").remove();';
    }
    echo '
	});

    function controlloTotale() {
        let totale_da_pagare = parseFloat($("#totale_da_pagare").val());
        let totale_utente = 0;

        $("input[name*=da_pagare]").each(function() {
            totale_utente += input(this).get();
        });

        if (isNaN(totale_utente)) {
            totale_utente = 0;
        }

        totale_utente = Math.round(totale_utente * 100) / 100;
        totale_da_pagare = Math.round(totale_da_pagare * 100) / 100;

        let diff = Math.abs(totale_da_pagare) - Math.abs(totale_utente);

        if (diff == 0) {
            $("#totale").addClass("hide");
        } else {
            $("#totale").removeClass("hide");
        }

        $("#diff").html(diff.toLocale());
        $("#totale_utente").html(totale_utente.toLocale());
    }
</script>';
}