Aggiunta banca controparte nei documenti
This commit is contained in:
parent
3fffde3d07
commit
d21066a1d8
|
@ -89,7 +89,8 @@ switch (post('op')) {
|
||||||
$fattura->idanagrafica = post('idanagrafica');
|
$fattura->idanagrafica = post('idanagrafica');
|
||||||
$fattura->idagente = post('idagente');
|
$fattura->idagente = post('idagente');
|
||||||
$fattura->idpagamento = post('idpagamento');
|
$fattura->idpagamento = post('idpagamento');
|
||||||
$fattura->idbanca = post('idbanca');
|
$fattura->id_banca_azienda = post('id_banca_azienda');
|
||||||
|
$fattura->id_banca_controparte = post('id_banca_controparte');
|
||||||
$fattura->idcausalet = post('idcausalet');
|
$fattura->idcausalet = post('idcausalet');
|
||||||
$fattura->idspedizione = post('idspedizione');
|
$fattura->idspedizione = post('idspedizione');
|
||||||
$fattura->idporto = post('idporto');
|
$fattura->idporto = post('idporto');
|
||||||
|
@ -753,7 +754,8 @@ switch (post('op')) {
|
||||||
$nota->ref_documento = $fattura->id;
|
$nota->ref_documento = $fattura->id;
|
||||||
$nota->idconto = $fattura->idconto;
|
$nota->idconto = $fattura->idconto;
|
||||||
$nota->idpagamento = $fattura->idpagamento;
|
$nota->idpagamento = $fattura->idpagamento;
|
||||||
$nota->idbanca = $fattura->idbanca;
|
$nota->id_banca_azienda = $fattura->id_banca_azienda;
|
||||||
|
$nota->id_banca_controparte = $fattura->id_banca_controparte;
|
||||||
$nota->idsede_partenza = $fattura->idsede_partenza;
|
$nota->idsede_partenza = $fattura->idsede_partenza;
|
||||||
$nota->idsede_destinazione = $fattura->idsede_destinazione;
|
$nota->idsede_destinazione = $fattura->idsede_destinazione;
|
||||||
$nota->split_payment = $fattura->split_payment;
|
$nota->split_payment = $fattura->split_payment;
|
||||||
|
@ -809,7 +811,8 @@ if (get('op') == 'nota_addebito') {
|
||||||
$nota->ref_documento = $fattura->id;
|
$nota->ref_documento = $fattura->id;
|
||||||
$nota->idconto = $fattura->idconto;
|
$nota->idconto = $fattura->idconto;
|
||||||
$nota->idpagamento = $fattura->idpagamento;
|
$nota->idpagamento = $fattura->idpagamento;
|
||||||
$nota->idbanca = $fattura->idbanca;
|
$nota->id_banca_azienda = $fattura->id_banca_azienda;
|
||||||
|
$nota->id_banca_controparte = $fattura->id_banca_controparte;
|
||||||
$nota->idsede_partenza = $fattura->idsede_partenza;
|
$nota->idsede_partenza = $fattura->idsede_partenza;
|
||||||
$nota->idsede_destinazione = $fattura->idsede_destinazione;
|
$nota->idsede_destinazione = $fattura->idsede_destinazione;
|
||||||
$nota->save();
|
$nota->save();
|
||||||
|
|
|
@ -268,11 +268,11 @@ elseif ($record['stato'] == 'Bozza') {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{[ "type": "select", "label": "<?php echo tr('Pagamento'); ?>", "name": "idpagamento", "required": 1, "ajax-source": "pagamenti", "value": "$idpagamento$", "extra": "onchange=\"$('#idbanca').val($(this).selectData().id_banca_<?php echo $conto; ?>).change(); \" " ]}
|
{[ "type": "select", "label": "<?php echo tr('Pagamento'); ?>", "name": "idpagamento", "required": 1, "ajax-source": "pagamenti", "value": "$idpagamento$", "extra": "onchange=\"$('#id_banca_azienda').val($(this).selectData().id_banca_<?php echo $conto; ?>).change(); \" " ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{[ "type": "select", "label": "<?php echo tr('Banca'); ?>", "name": "idbanca", "ajax-source": "banche", "select-options": <?php echo json_encode(['id_anagrafica' => $anagrafica_azienda->id]); ?>, "value": "$idbanca$", "icon-after": "add|<?php echo Modules::get('Banche')['id']; ?>||", "extra": " <?php echo (intval($block_edit)) ? 'disabled' : ''; ?> " ]}
|
{[ "type": "select", "label": "<?php echo tr('Banca'); ?>", "name": "id_banca_azienda", "ajax-source": "banche", "select-options": <?php echo json_encode(['id_anagrafica' => $anagrafica_azienda->id]); ?>, "value": "$id_banca_azienda$", "icon-after": "add|<?php echo Modules::get('Banche')['id']; ?>||", "extra": " <?php echo (intval($block_edit)) ? 'disabled' : ''; ?> " ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
@ -340,7 +340,7 @@ elseif ($record['stato'] == 'Bozza') {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
//TODO: Fattura per conto del fornitore (es. cooperative agricole che emettono la fattura per conto dei propri soci produttori agricoli conferenti)
|
// TODO: Fattura per conto del fornitore (es. cooperative agricole che emettono la fattura per conto dei propri soci produttori agricoli conferenti)
|
||||||
if ($dir == 'entrata') {
|
if ($dir == 'entrata') {
|
||||||
?>
|
?>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
|
|
|
@ -88,14 +88,14 @@ class Fattura extends Document
|
||||||
public static function build(Anagrafica $anagrafica, Tipo $tipo_documento, $data, $id_segment, $numero_esterno = null)
|
public static function build(Anagrafica $anagrafica, Tipo $tipo_documento, $data, $id_segment, $numero_esterno = null)
|
||||||
{
|
{
|
||||||
$model = parent::build();
|
$model = parent::build();
|
||||||
|
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
|
$database = database();
|
||||||
|
|
||||||
|
// Individuazione dello stato predefinito per il documento
|
||||||
$stato_documento = Stato::where('descrizione', 'Bozza')->first();
|
$stato_documento = Stato::where('descrizione', 'Bozza')->first();
|
||||||
$direzione = $tipo_documento->dir;
|
$direzione = $tipo_documento->dir;
|
||||||
|
|
||||||
$database = database();
|
// Conto predefinito sulla base del flusso di denaro
|
||||||
|
|
||||||
if ($direzione == 'entrata') {
|
if ($direzione == 'entrata') {
|
||||||
$id_conto = setting('Conto predefinito fatture di vendita');
|
$id_conto = setting('Conto predefinito fatture di vendita');
|
||||||
$conto = 'vendite';
|
$conto = 'vendite';
|
||||||
|
@ -104,6 +104,7 @@ class Fattura extends Document
|
||||||
$conto = 'acquisti';
|
$conto = 'acquisti';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Informazioni di base
|
||||||
$model->anagrafica()->associate($anagrafica);
|
$model->anagrafica()->associate($anagrafica);
|
||||||
$model->tipo()->associate($tipo_documento);
|
$model->tipo()->associate($tipo_documento);
|
||||||
$model->stato()->associate($stato_documento);
|
$model->stato()->associate($stato_documento);
|
||||||
|
@ -115,55 +116,62 @@ class Fattura extends Document
|
||||||
$model->data_registrazione = $data;
|
$model->data_registrazione = $data;
|
||||||
$model->data_competenza = $data;
|
$model->data_competenza = $data;
|
||||||
$model->id_segment = $id_segment;
|
$model->id_segment = $id_segment;
|
||||||
|
$model->idconto = $id_conto;
|
||||||
if ($numero_esterno) {
|
if ($numero_esterno) {
|
||||||
$model->numero_esterno = $numero_esterno;
|
$model->numero_esterno = $numero_esterno;
|
||||||
}
|
}
|
||||||
|
|
||||||
$model->idconto = $id_conto;
|
// Sede aziendale scelta tra le sedi disponibili per l'utente
|
||||||
|
$id_sede = $user->sedi[0];
|
||||||
// Imposto, come sede aziendale, la prima sede disponibile come utente
|
|
||||||
if ($direzione == 'entrata') {
|
if ($direzione == 'entrata') {
|
||||||
$model->idsede_destinazione = $user->sedi[0];
|
$model->idsede_destinazione = $id_sede;
|
||||||
} else {
|
} else {
|
||||||
$model->idsede_partenza = $user->sedi[0];
|
$model->idsede_partenza = $id_sede;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Gestione della marca da bollo predefinita
|
||||||
$model->addebita_bollo = setting('Addebita marca da bollo al cliente');
|
$model->addebita_bollo = setting('Addebita marca da bollo al cliente');
|
||||||
|
|
||||||
|
// Ritenuta contributi predefinita
|
||||||
$id_ritenuta_contributi = ($tipo_documento->dir == 'entrata') ? setting('Ritenuta contributi') : null;
|
$id_ritenuta_contributi = ($tipo_documento->dir == 'entrata') ? setting('Ritenuta contributi') : null;
|
||||||
$model->id_ritenuta_contributi = $id_ritenuta_contributi ?: null;
|
$model->id_ritenuta_contributi = $id_ritenuta_contributi ?: null;
|
||||||
|
|
||||||
// Tipo di pagamento e banca predefinite dall'anagrafica
|
// Banca predefinita per l'anagrafica controparte
|
||||||
|
$model->id_banca_controparte = $anagrafica->{'idbanca_'.$conto};
|
||||||
|
|
||||||
|
// Tipo di pagamento dall'anagrafica controparte
|
||||||
$id_pagamento = $database->fetchOne('SELECT id FROM co_pagamenti WHERE id = :id_pagamento', [
|
$id_pagamento = $database->fetchOne('SELECT id FROM co_pagamenti WHERE id = :id_pagamento', [
|
||||||
':id_pagamento' => $anagrafica->{'idpagamento_'.$conto},
|
':id_pagamento' => $anagrafica->{'idpagamento_'.$conto},
|
||||||
])['id'];
|
])['id'];
|
||||||
$id_banca = $anagrafica->{'idbanca_'.$conto};
|
|
||||||
|
|
||||||
// Se la fattura è di vendita e non è stato associato un pagamento predefinito al cliente leggo il pagamento dalle impostazioni
|
// Per Fatture di Vendita senza pagamento predefinito per il Cliente, si utilizza il pagamento predefinito dalle Impostazioni
|
||||||
if ($direzione == 'entrata' && empty($id_pagamento)) {
|
if ($direzione == 'entrata' && empty($id_pagamento)) {
|
||||||
$id_pagamento = setting('Tipo di pagamento predefinito');
|
$id_pagamento = setting('Tipo di pagamento predefinito');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Se non è impostata la banca dell'anagrafica, uso quella del pagamento.
|
// Salvataggio del pagamento
|
||||||
if (empty($id_banca)) {
|
|
||||||
$id_banca = $database->fetchOne('SELECT id FROM co_banche WHERE id_pianodeiconti3 = (SELECT idconto_'.$conto.' FROM co_pagamenti WHERE id = :id_pagamento)', [
|
|
||||||
':id_pagamento' => $id_pagamento,
|
|
||||||
])['id'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($id_pagamento)) {
|
if (!empty($id_pagamento)) {
|
||||||
$model->idpagamento = $id_pagamento;
|
$model->idpagamento = $id_pagamento;
|
||||||
}
|
}
|
||||||
if (!empty($id_banca)) {
|
|
||||||
$model->idbanca = $id_banca;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Split Payment
|
// Banca predefinita per l'azienda, con ricerca della banca impostata per il pagamento
|
||||||
|
$azienda = Anagrafica::find(setting('Azienda predefinita'));
|
||||||
|
$id_banca_azienda = $database->fetchOne('SELECT id FROM co_banche WHERE id_pianodeiconti3 = (SELECT idconto_'.$conto.' FROM co_pagamenti WHERE id = :id_pagamento) AND id_anagrafica = :id_anagrafica', [
|
||||||
|
':id_pagamento' => $id_pagamento,
|
||||||
|
':id_anagrafica' => $azienda->id,
|
||||||
|
])['id'];
|
||||||
|
if (empty($id_banca_azienda)) {
|
||||||
|
$id_banca_azienda = $azienda->{'idbanca_'.$conto};
|
||||||
|
}
|
||||||
|
$model->id_banca_azienda = $id_banca_azienda;
|
||||||
|
|
||||||
|
// Gestione dello Split Payment sulla base dell'anagrafica Controparte
|
||||||
$split_payment = $anagrafica->split_payment;
|
$split_payment = $anagrafica->split_payment;
|
||||||
if (!empty($split_payment)) {
|
if (!empty($split_payment)) {
|
||||||
$model->split_payment = $split_payment;
|
$model->split_payment = $split_payment;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dichiarazione d'Intento
|
// Gestione della Dichiarazione d'Intento associata all'anargafica Controparte
|
||||||
$now = new Carbon();
|
$now = new Carbon();
|
||||||
$dichiarazione = $anagrafica->dichiarazioni()
|
$dichiarazione = $anagrafica->dichiarazioni()
|
||||||
->where('massimale', '>', 'totale')
|
->where('massimale', '>', 'totale')
|
||||||
|
@ -173,6 +181,7 @@ class Fattura extends Document
|
||||||
if (!empty($dichiarazione)) {
|
if (!empty($dichiarazione)) {
|
||||||
$model->dichiarazione()->associate($dichiarazione);
|
$model->dichiarazione()->associate($dichiarazione);
|
||||||
|
|
||||||
|
// Registrazione dell'operazione nelle note
|
||||||
$model->note = tr("Operazione non imponibile come da vostra dichiarazione d'intento nr _PROT_ del _PROT_DATE_ emessa in data _RELEASE_DATE_, da noi registrata al nr _ID_ del _DATE_", [
|
$model->note = tr("Operazione non imponibile come da vostra dichiarazione d'intento nr _PROT_ del _PROT_DATE_ emessa in data _RELEASE_DATE_, da noi registrata al nr _ID_ del _DATE_", [
|
||||||
'_PROT_' => $dichiarazione->numero_protocollo,
|
'_PROT_' => $dichiarazione->numero_protocollo,
|
||||||
'_PROT_DATE_' => $dichiarazione->data_protocollo,
|
'_PROT_DATE_' => $dichiarazione->data_protocollo,
|
||||||
|
@ -644,7 +653,7 @@ class Fattura extends Document
|
||||||
if ($riba['riba'] == 1) {
|
if ($riba['riba'] == 1) {
|
||||||
$id_banca = $this->anagrafica->idbanca_vendite;
|
$id_banca = $this->anagrafica->idbanca_vendite;
|
||||||
} else {
|
} else {
|
||||||
$id_banca = $this->idbanca;
|
$id_banca = $this->id_banca_azienda;
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = Banca::find($id_banca);
|
$result = Banca::find($id_banca);
|
||||||
|
|
|
@ -35,7 +35,7 @@ $record = $dbo->fetchOne('SELECT *,
|
||||||
(SELECT descrizione FROM dt_aspettobeni WHERE id=idaspettobeni) AS aspettobeni,
|
(SELECT descrizione FROM dt_aspettobeni WHERE id=idaspettobeni) AS aspettobeni,
|
||||||
(SELECT descrizione FROM dt_spedizione WHERE id=idspedizione) AS spedizione,
|
(SELECT descrizione FROM dt_spedizione WHERE id=idspedizione) AS spedizione,
|
||||||
(SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idvettore) AS vettore,
|
(SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idvettore) AS vettore,
|
||||||
(SELECT id FROM co_banche WHERE id=idbanca) AS id_banca,
|
(SELECT id FROM co_banche WHERE id = id_banca_azienda) AS id_banca,
|
||||||
(SELECT is_fiscale FROM zz_segments WHERE id = id_segment) AS is_fiscale
|
(SELECT is_fiscale FROM zz_segments WHERE id = id_segment) AS is_fiscale
|
||||||
FROM co_documenti WHERE id='.prepare($id_record));
|
FROM co_documenti WHERE id='.prepare($id_record));
|
||||||
|
|
||||||
|
|
|
@ -201,3 +201,18 @@ UPDATE `an_anagrafiche` SET `idbanca_vendite` = (SELECT `id` FROM `co_banche` WH
|
||||||
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_banche` INNER JOIN an_anagrafiche ON `an_anagrafiche`.`idanagrafica` = `co_banche`.`id_anagrafica` WHERE 1=1 AND `co_banche`.`deleted_at` IS NULL AND `an_anagrafiche`.`deleted_at` IS NULL HAVING 2=2' WHERE `name` = 'Banche';
|
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_banche` INNER JOIN an_anagrafiche ON `an_anagrafiche`.`idanagrafica` = `co_banche`.`id_anagrafica` WHERE 1=1 AND `co_banche`.`deleted_at` IS NULL AND `an_anagrafiche`.`deleted_at` IS NULL HAVING 2=2' WHERE `name` = 'Banche';
|
||||||
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `visible`, `summable`, `default`) VALUES
|
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `visible`, `summable`, `default`) VALUES
|
||||||
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Banche'), 'Anagrafica', 'an_anagrafiche.ragione_sociale', 0, 1, 0, 0, 1, 0, 1);
|
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Banche'), 'Anagrafica', 'an_anagrafiche.ragione_sociale', 0, 1, 0, 0, 1, 0, 1);
|
||||||
|
|
||||||
|
-- Campo id_banca_controparte e id_banca_azienda per i Documenti
|
||||||
|
ALTER TABLE `co_documenti` ADD `id_banca_controparte` INT(11) AFTER `idpagamento`;
|
||||||
|
ALTER TABLE `co_preventivi` ADD `id_banca_controparte` INT(11) AFTER `idpagamento`;
|
||||||
|
ALTER TABLE `co_contratti` ADD `id_banca_controparte` INT(11) AFTER `idpagamento`;
|
||||||
|
ALTER TABLE `dt_ddt` ADD `id_banca_controparte` INT(11) AFTER `idpagamento`;
|
||||||
|
ALTER TABLE `or_ordini` ADD `id_banca_controparte` INT(11) NOT NULL AFTER `idpagamento`;
|
||||||
|
|
||||||
|
ALTER TABLE `co_documenti` CHANGE `idbanca` `id_banca_azienda` INT(11) AFTER `idpagamento`;
|
||||||
|
ALTER TABLE `co_preventivi` ADD `id_banca_azienda` INT(11) AFTER `idpagamento`;
|
||||||
|
ALTER TABLE `co_contratti` ADD `id_banca_azienda` INT(11) AFTER `idpagamento`;
|
||||||
|
ALTER TABLE `dt_ddt` ADD `id_banca_azienda` INT(11) AFTER `idpagamento`;
|
||||||
|
ALTER TABLE `or_ordini` ADD `id_banca_azienda` INT(11) AFTER `idpagamento`;
|
||||||
|
|
||||||
|
UPDATE `co_documenti` SET `id_banca_azienda` = NULL WHERE `id_banca_azienda` = 0;
|
||||||
|
|
Loading…
Reference in New Issue