Merge
This commit is contained in:
commit
00e643e342
|
@ -318,7 +318,10 @@ elseif (post('op') == 'send-email') {
|
|||
|
||||
// Inclusione di eventuale plugin personalizzato
|
||||
if (!empty($structure['script'])) {
|
||||
include $structure->getEditFile();
|
||||
$path = $structure->getEditFile();
|
||||
if (!empty($path)) {
|
||||
include $path;
|
||||
}
|
||||
|
||||
$database->commitTransaction();
|
||||
|
||||
|
|
|
@ -136,7 +136,7 @@ Input.prototype.getElement = function () {
|
|||
/**
|
||||
* Gestisce l'abilitazione e la disibilitazione dell'input sulla base del valore indicato.
|
||||
*
|
||||
* @param {bool} value
|
||||
* @param {boolean} value
|
||||
* @returns {Input}
|
||||
*/
|
||||
Input.prototype.setDisabled = function (value) {
|
||||
|
@ -215,6 +215,15 @@ Input.prototype.enable = function () {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Controlla se l'input è disabilitato.
|
||||
*
|
||||
* @returns {boolean}
|
||||
*/
|
||||
Input.prototype.isDisabled = function () {
|
||||
return this.element.hasClass("disabled")
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce un oggetto cotentente le caratteristiche dell'input.
|
||||
*
|
||||
|
|
|
@ -273,7 +273,10 @@ if (empty($record) || !$has_access) {
|
|||
|
||||
<div id="module-edit">';
|
||||
|
||||
include $structure->getEditFile();
|
||||
$path = $structure->getEditFile();
|
||||
if (!empty($path)) {
|
||||
include $path;
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>
|
||||
|
|
|
@ -31,7 +31,10 @@ if (!empty($id_plugin)) {
|
|||
if (!empty($id_plugin)) {
|
||||
// Inclusione di eventuale plugin personalizzato
|
||||
if (!empty($structure['script'])) {
|
||||
include $structure->getEditFile();
|
||||
$path = $structure->getEditFile();
|
||||
if (!empty($path)) {
|
||||
include $path;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -234,7 +237,10 @@ if (!empty($type) && $type != 'menu' && $type != 'custom') {
|
|||
* Inclusione modulo personalizzato
|
||||
*/
|
||||
elseif ($type == 'custom') {
|
||||
include $structure->getEditFile();
|
||||
$path = $structure->getEditFile();
|
||||
if (!empty($path)) {
|
||||
include $path;
|
||||
}
|
||||
}
|
||||
|
||||
// Caricamento file aggiuntivo su elenco record
|
||||
|
|
36
mail.php
36
mail.php
|
@ -82,7 +82,7 @@ echo '
|
|||
<b>'.tr('Destinatari').' <span class="tip" title="'.tr('Email delle sedi, dei referenti o agente collegato all\'anagrafica.').'"><i class="fa fa-question-circle-o"></i></span></b>
|
||||
<div class="row" id="lista-destinatari">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "email", "name": "destinatari[0]", "value": "'.$email.'", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungi_destinatario();\'", "class": "destinatari", "required": 1 ]}
|
||||
{[ "type": "email", "name": "destinatari[0]", "value": "'.$email.'", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari", "required": 1 ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -136,7 +136,7 @@ echo '
|
|||
<!-- PULSANTI -->
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<button type="button" class="btn btn-primary" onclick="send()"><i class="fa fa-envelope"></i> '.tr('Invia').'</button>
|
||||
<button type="button" class="btn btn-primary" onclick="inviaEmail()"><i class="fa fa-envelope"></i> '.tr('Invia').'</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>';
|
||||
|
@ -144,7 +144,7 @@ echo '
|
|||
echo '
|
||||
<div class="hidden" id="template-destinatario">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "email", "name": "destinatari[-id-]", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungi_destinatario();\'", "class": "destinatari" ]}
|
||||
{[ "type": "email", "name": "destinatari[-id-]", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
|
@ -161,18 +161,10 @@ echo '
|
|||
emails = JSON.parse(response);
|
||||
|
||||
$(".destinatari").each(function(){
|
||||
$(this).autocomplete({
|
||||
source: emails,
|
||||
minLength: 0,
|
||||
close: function(){
|
||||
aggiungi_destinatario();
|
||||
}
|
||||
}).focus(function() {
|
||||
$(this).autocomplete("search", $(this).val());
|
||||
});
|
||||
addAutoComplete(this);
|
||||
});
|
||||
|
||||
aggiungi_destinatario();
|
||||
aggiungiDestinatario();
|
||||
});';
|
||||
}
|
||||
|
||||
|
@ -180,13 +172,25 @@ echo '
|
|||
|
||||
});
|
||||
|
||||
function send() {
|
||||
function inviaEmail() {
|
||||
if($("#email-form").parsley().validate() && confirm("Inviare e-mail?")) {
|
||||
$("#email-form").submit();
|
||||
}
|
||||
}
|
||||
|
||||
function aggiungi_destinatario() {
|
||||
function addAutoComplete(input){
|
||||
$(input).autocomplete({
|
||||
source: emails,
|
||||
minLength: 0,
|
||||
close: function() {
|
||||
aggiungiDestinatario();
|
||||
},
|
||||
}).focus(function() {
|
||||
$(this).autocomplete("search", $(this).val());
|
||||
});
|
||||
}
|
||||
|
||||
function aggiungiDestinatario() {
|
||||
var last = $("#lista-destinatari input").last();
|
||||
|
||||
if (last.val()) {
|
||||
|
@ -195,7 +199,7 @@ echo '
|
|||
aggiungiContenuto("#lista-destinatari", "#template-destinatario", {"-id-": $("#lista-destinatari > div").length});
|
||||
|
||||
$(".destinatari").each(function(){
|
||||
$(this).autocomplete({source: emails});
|
||||
addAutoComplete(this);
|
||||
});
|
||||
|
||||
restart_inputs();
|
||||
|
|
|
@ -218,7 +218,7 @@ class CSV extends CSVImporter
|
|||
|
||||
// Gestione categoria e sottocategoria
|
||||
$categoria = null;
|
||||
$sotto_categoria = null;
|
||||
$sottocategoria = null;
|
||||
if (!empty($record['id_categoria'])) {
|
||||
// Categoria
|
||||
$categoria = Categoria::where('nome', strtolower($record['id_categoria']))->first();
|
||||
|
@ -229,14 +229,14 @@ class CSV extends CSVImporter
|
|||
|
||||
// Sotto-categoria
|
||||
if (!empty($record['id_sottocategoria'])) {
|
||||
$sotto_categoria = Categoria::where('nome', $record['id_sottocategoria'])
|
||||
$sottocategoria = Categoria::where('nome', $record['id_sottocategoria'])
|
||||
->where('parent', $categoria->id)
|
||||
->first();
|
||||
|
||||
if (empty($sottocategoria)) {
|
||||
$sotto_categoria = Categoria::build($record['id_categoria']);
|
||||
$sotto_categoria->parent()->associate($categoria);
|
||||
$sotto_categoria->save();
|
||||
$sottocategoria = Categoria::build($record['id_sottocategoria']);
|
||||
$sottocategoria->parent()->associate($categoria);
|
||||
$sottocategoria->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -254,7 +254,7 @@ class CSV extends CSVImporter
|
|||
$articolo = Articolo::where($primary_key, $record[$primary_key])->first();
|
||||
}
|
||||
if (empty($articolo)) {
|
||||
$articolo = Articolo::build($record['codice'], $record['descrizione'], $categoria, $sotto_categoria);
|
||||
$articolo = Articolo::build($record['codice'], $record['descrizione'], $categoria, $sottocategoria);
|
||||
}
|
||||
|
||||
$articolo->idiva_vendita = $aliquota->id;
|
||||
|
|
|
@ -18,7 +18,9 @@
|
|||
*/
|
||||
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Modules\Anagrafiche\Nazione;
|
||||
use Modules\Banche\Banca;
|
||||
use Modules\Banche\IBAN;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
|
@ -28,10 +30,8 @@ switch (filter('op')) {
|
|||
$anagrafica = Anagrafica::find($id_anagrafica);
|
||||
|
||||
$nome = filter('nome');
|
||||
$iban = filter('iban');
|
||||
$bic = filter('bic');
|
||||
|
||||
$banca = Banca::build($anagrafica, $nome, $iban, $bic);
|
||||
$banca = Banca::build($anagrafica, $nome, filter('iban'), filter('bic'));
|
||||
$id_record = $banca->id;
|
||||
|
||||
if (isAjaxRequest()) {
|
||||
|
@ -75,5 +75,41 @@ switch (filter('op')) {
|
|||
'_TYPE_' => 'Banca',
|
||||
]));
|
||||
|
||||
break;
|
||||
|
||||
case 'compose':
|
||||
$nazione = Nazione::find(filter('id_nazione'));
|
||||
|
||||
$iban = IBAN::generate([
|
||||
'nation' => $nazione->iso2,
|
||||
'bank_code' => filter('bank_code'),
|
||||
'branch_code' => filter('branch_code'),
|
||||
'account_number' => filter('account_number'),
|
||||
'check_digits' => filter('check_digits'),
|
||||
'national_check_digits' => filter('national_check_digits'),
|
||||
]);
|
||||
|
||||
echo json_encode([
|
||||
'iban' => $iban->getIban(),
|
||||
]);
|
||||
|
||||
break;
|
||||
|
||||
case 'decompose':
|
||||
$iban = new IBAN(filter('iban'));
|
||||
$nazione = Nazione::where('iso2', '=', $iban->getNation())->first();
|
||||
|
||||
echo json_encode([
|
||||
'id_nazione' => [
|
||||
'id' => $nazione->id,
|
||||
'text' => $nazione->nome,
|
||||
],
|
||||
'bank_code' => $iban->getBankCode(),
|
||||
'branch_code' => $iban->getBranchCode(),
|
||||
'account_number' => $iban->getAccountNumber(),
|
||||
'check_digits' => $iban->getCheckDigits(),
|
||||
'national_check_digits' => $iban->getNationalCheckDigits(),
|
||||
]);
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -21,8 +21,6 @@ include_once __DIR__.'/../../core.php';
|
|||
|
||||
$id_anagrafica = filter('id_anagrafica');
|
||||
|
||||
$help_codice_bic = tr('Il codice BIC (o SWIFT) è composto da 8 a 11 caratteri (lettere e numeri) ed è suddiviso in:').'<br><br><ul><li>'.tr('AAAA - codice bancario').'</li><li>'.tr('BB - codice ISO della nazione').'</li><li>'.tr('CC - codice città presso la quale è ubicata la banca').'</li><li>'.tr('DD - codice della filiale (opzionale)').'</li></ul>';
|
||||
|
||||
echo '
|
||||
<form action="" method="post" id="add-form">
|
||||
<input type="hidden" name="op" value="add">
|
||||
|
@ -42,6 +40,7 @@ echo '
|
|||
<div class="col-md-8">
|
||||
{[ "type": "text", "label": "'.tr('IBAN').'", "name": "iban", "required": "1", "class": "alphanumeric-mask", "maxlength": 32, "value": "$iban$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "'.tr('BIC').'", "name": "bic", "required": "1", "class": "alphanumeric-mask", "minlength": 8, "maxlength": 11, "value": "$bic$", "help": "'.$help_codice_bic.'" ]}
|
||||
</div>
|
||||
|
|
|
@ -59,10 +59,12 @@ include_once __DIR__.'/../../core.php';
|
|||
{[ "type": "text", "label": "<?php echo tr('IBAN'); ?>", "name": "iban", "required": "1", "class": "alphanumeric-mask", "maxlength": 32, "value": "$iban$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('BIC'); ?>", "name": "bic", "required": "1", "class": "alphanumeric-mask", "maxlength": 11, "value": "$bic$" ]}
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('BIC'); ?>", "name": "bic", "required": "1", "class": "alphanumeric-mask", "minlength": 8, "maxlength": 11, "value": "$bic$", "help": "<?php echo $help_codice_bic; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "text", "label": "<?php echo tr('ID Creditore SEPA'); ?>", "name": "creditor_id", "class": "alphanumeric-mask", "value": "$creditor_id$", "help": "<?php echo tr("Codice identificativo per l'azienda nell'area SEPA. Nel caso di aziende aderenti alla procedura Allineamento Elettronico Archivio per le quali non risulta reperibile in CF/PIVA viene generato un codice identificativo non significativo (NOTPROVIDEDXXXXXXXXXXXX)."); ?>" ]}
|
||||
</div>
|
||||
|
@ -79,9 +81,45 @@ include_once __DIR__.'/../../core.php';
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<!-- Composizione IBAN -->
|
||||
<div class="box box-info">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title"><?php echo tr('Composizione IBAN'); ?></h3>
|
||||
</div>
|
||||
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Nazione'); ?>", "name": "id_nazione", "value": "$id_nazione$", "ajax-source": "nazioni" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice banca nazionale (ABI)'); ?>", "name": "branch_code", "class": "alphanumeric-mask", "value": "$branch_code$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice filiale (CAB)'); ?>", "name": "bank_code", "class": "alphanumeric-mask", "value": "$bank_code$" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Numero account'); ?>", "name": "account_number", "class": "alphanumeric-mask", "value": "$account_number$"]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Cifre di controllo (CIN europeo)'); ?>", "name": "check_digits", "class": "alphanumeric-mask", "value": "$check_digits$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "<?php echo tr('Cifre di verifica nazionale (CIN nazionale)'); ?>", "name": "national_check_digits", "class": "alphanumeric-mask", "value": "$national_check_digits$" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
// Collegamenti diretti (numerici)
|
||||
$numero_documenti = $dbo->fetchNum('SELECT idanagrafica FROM an_anagrafiche WHERE idbanca_vendite='.prepare($id_record).'
|
||||
|
@ -101,3 +139,105 @@ if (!empty($numero_documenti)) {
|
|||
<a class="btn btn-danger ask" data-backto="record-list">
|
||||
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
var iban = input("iban");
|
||||
|
||||
var branch_code = input("branch_code");
|
||||
var bank_code = input("bank_code");
|
||||
var account_number = input("account_number");
|
||||
var check_digits = input("check_digits");
|
||||
var national_check_digits = input("national_check_digits");
|
||||
var id_nazione = input("id_nazione");
|
||||
|
||||
var components = [branch_code, bank_code, account_number, check_digits, national_check_digits, id_nazione];
|
||||
|
||||
$(document).ready(function (){
|
||||
iban.trigger("change");
|
||||
});
|
||||
|
||||
iban.change(function () {
|
||||
if (!iban.isDisabled()){
|
||||
let value = iban.get();
|
||||
for (const component of components){
|
||||
component.setDisabled(value !== "")
|
||||
}
|
||||
|
||||
scomponiIban();
|
||||
}
|
||||
});
|
||||
|
||||
for (const component of components){
|
||||
component.change(function () {
|
||||
let i = input(this);
|
||||
if (!i.isDisabled()) {
|
||||
iban.setDisabled(i.get() !== "")
|
||||
|
||||
componiIban();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function scomponiIban() {
|
||||
$.ajax({
|
||||
url: globals.rootdir + '/actions.php',
|
||||
data: {
|
||||
id_module: globals.id_module,
|
||||
op: "decompose",
|
||||
iban: iban.get(),
|
||||
},
|
||||
type: 'GET',
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
compilaCampi(response);
|
||||
},
|
||||
error: function() {
|
||||
toastr["error"]("<?php echo tr('Formato IBAN non valido'); ?>");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function componiIban() {
|
||||
// Controllo su campi con valore impostato
|
||||
let continua = false;
|
||||
for (const component of components){
|
||||
continua |= !([undefined, null, ""].includes(component.get()));
|
||||
}
|
||||
|
||||
if (!continua){
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: globals.rootdir + '/actions.php',
|
||||
data: {
|
||||
id_module: globals.id_module,
|
||||
op: "compose",
|
||||
branch_code: branch_code.get(),
|
||||
bank_code: bank_code.get(),
|
||||
account_number: account_number.get(),
|
||||
check_digits: check_digits.get(),
|
||||
national_check_digits: national_check_digits.get(),
|
||||
id_nazione: id_nazione.get(),
|
||||
},
|
||||
type: 'GET',
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
compilaCampi(response);
|
||||
},
|
||||
error: function() {
|
||||
toastr["error"]("<?php echo tr('Formato IBAN non valido'); ?>");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function compilaCampi(values) {
|
||||
for([key, value] of Object.entries(values)) {
|
||||
if (typeof value === 'object' && value !== null) {
|
||||
input(key).getElement().selectSetNew(value.id, value.text, value);
|
||||
} else {
|
||||
input(key).set(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -28,3 +28,5 @@ if (isset($id_record)) {
|
|||
$record = $banca->toArray();
|
||||
}
|
||||
}
|
||||
|
||||
$help_codice_bic = tr('Il codice BIC (o SWIFT) è composto da 8 a 11 caratteri (lettere e numeri) ed è suddiviso in:').'<br><br><ul><li>'.tr('AAAA - codice bancario').'</li><li>'.tr('BB - codice ISO della nazione').'</li><li>'.tr('CC - codice città presso la quale è ubicata la banca').'</li><li>'.tr('DD - codice della filiale (opzionale)').'</li></ul>';
|
||||
|
|
|
@ -23,6 +23,7 @@ use Common\SimpleModelTrait;
|
|||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Modules\Anagrafiche\Nazione;
|
||||
|
||||
class Banca extends Model
|
||||
{
|
||||
|
@ -65,6 +66,17 @@ class Banca extends Model
|
|||
{
|
||||
$this->fixPredefined();
|
||||
|
||||
// Camponenti IBAN
|
||||
$iban = new IBAN($this->iban);
|
||||
$nazione = Nazione::where('iso2', '=', $iban->getNation())->first();
|
||||
$this->id_nazione = $nazione->id;
|
||||
$this->iban = $iban->getIban();
|
||||
$this->bank_code = $iban->getBankCode();
|
||||
$this->branch_code = $iban->getBranchCode();
|
||||
$this->account_number = $iban->getAccountNumber();
|
||||
$this->check_digits = $iban->getCheckDigits();
|
||||
$this->national_check_digits = $iban->getNationalCheckDigits();
|
||||
|
||||
return parent::save($options);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@ use UnexpectedValueException;
|
|||
* c = Account number
|
||||
* d = Account type
|
||||
* i = National identification number
|
||||
* k = IBAN check digits
|
||||
* x = National check digits (CIN).
|
||||
* k = IBAN check digits (CIN europeo)
|
||||
* x = National check digits (CIN nazionale).
|
||||
*/
|
||||
class IBAN
|
||||
{
|
||||
|
@ -417,7 +417,7 @@ class IBAN
|
|||
preg_match_all('/^'.$regex.'/', $iban, $matches);
|
||||
$matches = array_filter($matches, 'is_string', ARRAY_FILTER_USE_KEY);
|
||||
foreach ($matches as $key => $value) {
|
||||
if (empty($value[0])) {
|
||||
if (!isset($value[0])) {
|
||||
throw new UnexpectedValueException('Invalid '.$key.' for format '.$regex);
|
||||
}
|
||||
|
||||
|
@ -442,7 +442,9 @@ class IBAN
|
|||
$char = $structure[$current];
|
||||
if (in_array($char, $keys)) {
|
||||
$count = substr_count($structure, $char);
|
||||
$result .= str_pad($contents[self::$parsers[$char]], $count, STR_PAD_LEFT);
|
||||
$result .= str_pad(
|
||||
substr($contents[self::$parsers[$char]], 0, $count),
|
||||
$count, STR_PAD_LEFT);
|
||||
$current += $count;
|
||||
} else {
|
||||
$result .= $char;
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
echo'
|
||||
echo '
|
||||
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Duplicare questo template?\') ){ $(\'#copia-template\').submit(); }"> <i class="fa fa-copy"></i> '.tr('Duplica template').'</button>';
|
||||
|
||||
// Duplica template
|
||||
|
@ -28,4 +28,3 @@ echo '
|
|||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="copy">
|
||||
</form>';
|
||||
|
||||
|
|
|
@ -327,7 +327,7 @@ elseif ($record['stato'] == 'Bozza') {
|
|||
<strike>';
|
||||
}
|
||||
|
||||
echo (empty($scadenza->da_pagare) ? '<i class="fa fa-exclamation-triangle"></i>' : '').moneyFormat($scadenza->da_pagare);
|
||||
echo(empty($scadenza->da_pagare) ? '<i class="fa fa-exclamation-triangle"></i>' : '').moneyFormat($scadenza->da_pagare);
|
||||
|
||||
if ($pagamento_iniziato) {
|
||||
echo '
|
||||
|
|
|
@ -551,7 +551,6 @@ class Fattura extends Document
|
|||
$this->attributes['iva_rivalsainps'] = $this->iva_rivalsa_inps;
|
||||
$this->attributes['rivalsainps'] = $this->rivalsa_inps;
|
||||
$this->attributes['ritenutaacconto'] = $this->ritenuta_acconto;
|
||||
|
||||
|
||||
// Generazione numero fattura se non presente (Bozza -> Emessa)
|
||||
if ((($stato_precedente->descrizione == 'Bozza' && $this->stato['descrizione'] == 'Emessa') or (!$is_fiscale)) && empty($this->numero_esterno)) {
|
||||
|
|
|
@ -236,7 +236,7 @@ switch (post('op')) {
|
|||
} catch (InvalidArgumentException $e) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
flash()->info(tr('Interventi eliminati!'));
|
||||
break;
|
||||
}
|
||||
|
@ -247,7 +247,6 @@ if (App::debug()) {
|
|||
];
|
||||
}
|
||||
|
||||
|
||||
$operations['export-bulk'] = [
|
||||
'text' => '<span><i class="fa fa-file-archive-o"></i> '.tr('Esporta stampe'),
|
||||
'data' => [
|
||||
|
|
|
@ -165,7 +165,7 @@ switch ($operazione) {
|
|||
// Creazione fattura
|
||||
if (empty($id_documento)) {
|
||||
$fattura = Fattura::build($contratto->anagrafica, $tipo, $data, $id_segment);
|
||||
}else{
|
||||
} else {
|
||||
$fattura = Fattura::find($id_documento);
|
||||
}
|
||||
$fattura->note = post('note');
|
||||
|
|
|
@ -80,11 +80,15 @@ echo '
|
|||
</div>
|
||||
</div>';
|
||||
|
||||
// Descrizione fattura
|
||||
$descrizione = tr('Rata _N_ del contratto numero _NUM_', [
|
||||
'_N_' => $numero_rata,
|
||||
'_NUM_' => $contratto->numero,
|
||||
]);
|
||||
//gestione replace
|
||||
$descrizione = get_var('Descrizione fattura pianificata');
|
||||
$modules = MODULES::get('Contratti')['id'];
|
||||
$variables = include Modules::filepath($modules, 'variables.php');
|
||||
foreach ($variables as $variable => $value) {
|
||||
$descrizione = str_replace('{'.$variable.'}', $value, $descrizione);
|
||||
}
|
||||
$descrizione = str_replace('{rata}', $numero_rata, $descrizione);
|
||||
$descrizione = str_replace('{zona}', $zona, $descrizione);
|
||||
|
||||
echo '
|
||||
<div class="row">
|
||||
|
|
|
@ -72,7 +72,7 @@ class DefaultHandler implements HandlerInterface
|
|||
{
|
||||
// Generazione del codice HTML
|
||||
return '
|
||||
<input |attr| autocomplete='.setting("Autocompletamento form").'>';
|
||||
<input |attr| autocomplete="'.(database()->isInstalled() ? setting('Autocompletamento form') : 0).'">';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
*/
|
||||
|
||||
use Modules\Interventi\Intervento;
|
||||
use Carbon\Carbon;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
|
@ -59,21 +58,20 @@ echo '
|
|||
</tr>
|
||||
</table>';
|
||||
|
||||
|
||||
/*
|
||||
Sedi
|
||||
*/
|
||||
|
||||
$sedi = $dbo->fetchArray("SELECT * FROM an_sedi WHERE idanagrafica=".prepare($anagrafica->idanagrafica));
|
||||
if( !empty($sedi) ){
|
||||
$sedi = $dbo->fetchArray('SELECT * FROM an_sedi WHERE idanagrafica='.prepare($anagrafica->idanagrafica));
|
||||
if (!empty($sedi)) {
|
||||
echo '
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th colspan="4" style="font-size:13pt;" class="text-center">'.tr('Sedi', [], ['upper' => true]).'</th>
|
||||
</tr>';
|
||||
|
||||
for($i=0; count($sedi)>$i; $i++){
|
||||
echo '
|
||||
for ($i = 0; count($sedi) > $i; ++$i) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="4" class="text-left" >'.tr('Nome sede').': <b>'.$sedi[$i]['nomesede'].'</b></td>
|
||||
</tr>
|
||||
|
@ -90,11 +88,11 @@ if( !empty($sedi) ){
|
|||
<td class="text-left" colspan="2">'.tr('cellulare').': <b>'.$sedi[$i]['cellulare'].'</b></td>
|
||||
</tr>';
|
||||
|
||||
if( !empty($sedi[$i+1]) ){
|
||||
echo '
|
||||
if (!empty($sedi[$i + 1])) {
|
||||
echo '
|
||||
<tr><td colspan="4"></td></tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
</table>';
|
||||
|
@ -104,17 +102,17 @@ if( !empty($sedi) ){
|
|||
Impianti
|
||||
*/
|
||||
|
||||
$impianti = $dbo->fetchArray("SELECT * FROM my_impianti WHERE idanagrafica=".prepare($anagrafica->idanagrafica));
|
||||
$impianti = $dbo->fetchArray('SELECT * FROM my_impianti WHERE idanagrafica='.prepare($anagrafica->idanagrafica));
|
||||
|
||||
if( !empty($impianti) ){
|
||||
if (!empty($impianti)) {
|
||||
echo '
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th colspan="4" style="font-size:13pt;" class="text-center">'.tr('Impianti', [], ['upper' => true]).'</th>
|
||||
</tr>';
|
||||
|
||||
for($i=0; count($impianti)>$i; $i++){
|
||||
echo '
|
||||
for ($i = 0; count($impianti) > $i; ++$i) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="2" class="text-left" >'.tr('Matricola').': <b>'.$impianti[$i]['matricola'].'</b></td>
|
||||
<td colspan="2" class="text-left" >'.tr('Data').': <b>'.Translator::dataToLocale($impianti[$i]['data']).'</b></td>
|
||||
|
@ -126,11 +124,11 @@ if( !empty($impianti) ){
|
|||
<td colspan="4" class="text-left" >'.tr('descrizione').': <b>'.$impianti[$i]['descrizione'].'</b></td>
|
||||
</tr>';
|
||||
|
||||
if( !empty($impianti[$i+1]) ){
|
||||
echo '
|
||||
if (!empty($impianti[$i + 1])) {
|
||||
echo '
|
||||
<tr><td colspan="4"></td></tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
</table>';
|
||||
|
@ -140,18 +138,18 @@ if( !empty($impianti) ){
|
|||
Attività
|
||||
*/
|
||||
|
||||
$interventi = $dbo->fetchArray("SELECT id, sessione.inizio FROM in_interventi LEFT JOIN (SELECT MIN(orario_inizio) AS inizio, in_interventi_tecnici.idintervento FROM in_interventi_tecnici GROUP BY in_interventi_tecnici.idintervento) AS sessione ON sessione.idintervento=in_interventi.id WHERE idanagrafica=".prepare($anagrafica->idanagrafica));
|
||||
$interventi = $dbo->fetchArray('SELECT id, sessione.inizio FROM in_interventi LEFT JOIN (SELECT MIN(orario_inizio) AS inizio, in_interventi_tecnici.idintervento FROM in_interventi_tecnici GROUP BY in_interventi_tecnici.idintervento) AS sessione ON sessione.idintervento=in_interventi.id WHERE idanagrafica='.prepare($anagrafica->idanagrafica));
|
||||
|
||||
if( !empty($interventi) ){
|
||||
if (!empty($interventi)) {
|
||||
echo '
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th colspan="4" style="font-size:13pt;" class="text-center">'.tr('Attività', [], ['upper' => true]).'</th>
|
||||
</tr>';
|
||||
|
||||
for($i=0; count($interventi)>$i; $i++){
|
||||
$intervento = Intervento::find($interventi[$i]['id']);
|
||||
echo '
|
||||
for ($i = 0; count($interventi) > $i; ++$i) {
|
||||
$intervento = Intervento::find($interventi[$i]['id']);
|
||||
echo '
|
||||
<tr>
|
||||
<td class="text-left">'.tr('Data richiesta').': <b>'.Translator::dateToLocale($intervento->data_richiesta).'</b></td>
|
||||
<td class="text-left" colspan="2" >'.tr('Data scadenza').': <b>'.Translator::dateToLocale($intervento->data_scadenza).'</b></td>
|
||||
|
@ -165,12 +163,12 @@ if( !empty($interventi) ){
|
|||
<td colspan="4" class="text-left" >'.tr('richiesta').': <b>'.$intervento->richiesta.'</b></td>
|
||||
</tr>';
|
||||
|
||||
if( !empty($interventi[$i+1]) ){
|
||||
echo '
|
||||
if (!empty($interventi[$i + 1])) {
|
||||
echo '
|
||||
<tr><td colspan="4"></td></tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
</table>';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,4 +22,4 @@ include_once __DIR__.'/../../core.php';
|
|||
use Modules\Anagrafiche\Anagrafica;
|
||||
|
||||
$anagrafica = Anagrafica::find($id_record);
|
||||
$agente = Anagrafica::find($anagrafica->idagente);
|
||||
$agente = Anagrafica::find($anagrafica->idagente);
|
||||
|
|
|
@ -17,13 +17,11 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
use Modules\Interventi\Intervento;
|
||||
use Modules\Banche\Banca;
|
||||
use Carbon\Carbon;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$banca = Banca::where('id_anagrafica',$anagrafica->idanagrafica)
|
||||
$banca = Banca::where('id_anagrafica', $anagrafica->idanagrafica)
|
||||
->where('predefined', 1)
|
||||
->first();
|
||||
|
||||
|
@ -64,4 +62,4 @@ echo '
|
|||
<td class="text-left">'.tr('cellulare').': <b>'.$anagrafica['cellulare'].'</b></td>
|
||||
<td class="text-left">'.tr('fax').': <b>'.$anagrafica['fax'].'</b></td>
|
||||
</tr>
|
||||
</table>';
|
||||
</table>';
|
||||
|
|
|
@ -21,4 +21,4 @@ include_once __DIR__.'/../../core.php';
|
|||
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
|
||||
$anagrafica = Anagrafica::find(setting('Azienda predefinita'));
|
||||
$anagrafica = Anagrafica::find(setting('Azienda predefinita'));
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use Modules\Banche\Banca;
|
||||
use Modules\Fatture\Fattura;
|
||||
use Modules\Fatture\Gestori\Movimenti as GestoreMovimenti;
|
||||
|
||||
|
@ -14,3 +15,9 @@ foreach ($fatture as $fattura) {
|
|||
$gestore = new GestoreMovimenti($fattura);
|
||||
$gestore->registra();
|
||||
}
|
||||
|
||||
// Completamento automatico informazioni IBAN per banche
|
||||
$banche = Banca::all();
|
||||
foreach ($banche as $banca) {
|
||||
$banca->save();
|
||||
}
|
||||
|
|
|
@ -171,4 +171,13 @@ UPDATE `zz_widgets` SET `query` = 'SELECT \n CONCAT_WS(\' \', REPLACE(REPLACE(RE
|
|||
|
||||
-- Aggiunto campo descrizione revisione in preventivi
|
||||
ALTER TABLE `co_preventivi` ADD `descrizione_revision` VARCHAR(255) NOT NULL AFTER `default_revision`;
|
||||
UPDATE `zz_prints` SET `filename` = 'Preventivo num. {numero} del {data} rev {revisione}' WHERE `zz_prints`.`name` = 'Preventivo';
|
||||
UPDATE `zz_prints` SET `filename` = 'Preventivo num. {numero} del {data} rev {revisione}' WHERE `zz_prints`.`name` = 'Preventivo';
|
||||
|
||||
-- Aggiunti campi per componenti IBAN
|
||||
ALTER TABLE `co_banche` ADD `branch_code` VARCHAR(20) NULL,
|
||||
ADD `bank_code` VARCHAR(20) NULL,
|
||||
ADD `account_number` VARCHAR(20) NULL,
|
||||
ADD `check_digits` VARCHAR(20) NULL,
|
||||
ADD `national_check_digits` VARCHAR(20) NULL,
|
||||
ADD `id_nazione` INT(11) NULL,
|
||||
ADD FOREIGN KEY (`id_nazione`) REFERENCES `an_nazioni`(`id`);
|
||||
|
|
Loading…
Reference in New Issue