Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
2fc78f4cac
|
@ -274,10 +274,17 @@ function currency()
|
|||
*/
|
||||
function moneyFormat($number, $decimals = null)
|
||||
{
|
||||
return tr('_TOTAL_ _CURRENCY_', [
|
||||
'_TOTAL_' => numberFormat($number, $decimals),
|
||||
'_CURRENCY_' => currency(),
|
||||
]);
|
||||
if (setting('Posizione del simbolo valuta') == 'Prima'){
|
||||
return tr('_CURRENCY_ _TOTAL_', [
|
||||
'_CURRENCY_' => currency(),
|
||||
'_TOTAL_' => numberFormat($number, $decimals),
|
||||
]);
|
||||
} else {
|
||||
return tr('_TOTAL_ _CURRENCY_', [
|
||||
'_TOTAL_' => numberFormat($number, $decimals),
|
||||
'_CURRENCY_' => currency(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -94,6 +94,7 @@ switch (post('op')) {
|
|||
$anagrafica->riferimento_amministrazione = post('riferimento_amministrazione');
|
||||
$anagrafica->colore = post('colore');
|
||||
$anagrafica->idtipointervento_default = post('idtipointervento_default') ?: null;
|
||||
$anagrafica->id_dichiarazione_intento_default = post('id_dichiarazione_intento_default') ?: null;
|
||||
$anagrafica->provvigione_default = post('provvigione_default');
|
||||
$anagrafica->id_ritenuta_acconto_acquisti = post('id_ritenuta_acconto_acquisti');
|
||||
$anagrafica->id_ritenuta_acconto_vendite = post('id_ritenuta_acconto_vendite');
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Modules\Banche\Banca;
|
||||
|
||||
|
@ -529,6 +530,10 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
|||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Tipo attività predefinita').'", "name": "idtipointervento_default", "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC", "value": "$idtipointervento_default$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr("Dichiarazione d'intento").'", "name": "id_dichiarazione_intento_default", "ajax-source": "dichiarazioni_intento", "select-options": {"idanagrafica": '.$id_record.', "data": "'.Carbon::now().'"},"value": "$id_dichiarazione_intento_default$" ]}
|
||||
</div>';
|
||||
|
||||
// Collegamento con il conto
|
||||
|
|
|
@ -308,7 +308,6 @@ switch (post('op')) {
|
|||
$list = [];
|
||||
foreach ($id_records as $id) {
|
||||
$fattura = Fattura::find($id);
|
||||
array_push($list, $fattura->numero_esterno);
|
||||
|
||||
$id_segment = (post('id_segment') ? post('id_segment') : $fattura->id_segment);
|
||||
$dir = $dbo->fetchOne('SELECT dir FROM co_tipidocumento WHERE id='.prepare($fattura->idtipodocumento))['dir'];
|
||||
|
@ -332,9 +331,10 @@ switch (post('op')) {
|
|||
if (post('skip_time') == 'Anno') {
|
||||
$data = date('Y-m-d', strtotime('+1 year', strtotime($fattura->data)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
$new = $fattura->replicate();
|
||||
|
||||
|
||||
$new->data = $data;
|
||||
$new->id_segment = $id_segment;
|
||||
$new->numero = Fattura::getNextNumero($data, $dir, $id_segment);
|
||||
|
@ -360,6 +360,10 @@ switch (post('op')) {
|
|||
$new_riga->movimenta($new_riga->qta);
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($fattura->numero_esterno)){
|
||||
array_push($list, $fattura->numero_esterno);
|
||||
}
|
||||
}
|
||||
|
||||
flash()->info(tr('Fatture _LIST_ duplicate correttamente!', [
|
||||
|
|
|
@ -188,9 +188,15 @@ class Fattura extends Document
|
|||
$model->split_payment = $split_payment;
|
||||
}
|
||||
|
||||
// Gestione della Dichiarazione d'Intento associata all'anargafica Controparte
|
||||
// Gestione della Dichiarazione d'Intento associata all'anagrafica Controparte
|
||||
$now = new Carbon();
|
||||
$dichiarazione = $anagrafica->dichiarazioni()
|
||||
->where('massimale', '>', 'totale')
|
||||
->where('data_inizio', '<', $now)
|
||||
->where('data_fine', '>', $now)
|
||||
->where('id', $anagrafica->id_dichiarazione_intento_default)
|
||||
->first();
|
||||
$dichiarazione = $dichiarazione ?: $anagrafica->dichiarazioni()
|
||||
->where('massimale', '>', 'totale')
|
||||
->where('data_inizio', '<', $now)
|
||||
->where('data_fine', '>', $now)
|
||||
|
@ -694,7 +700,7 @@ class Fattura extends Document
|
|||
|
||||
// In fase di duplicazione di una fattura non deve essere calcolato il numero progressivo ma questo deve
|
||||
// essere generato in fase di emissione della stessa.
|
||||
$new->numero_esterno = '';
|
||||
$new->numero_esterno = null;
|
||||
$new->numero = Fattura::getNextNumero($now, $new->direzione, $new->id_segment);
|
||||
|
||||
// Rimozione informazioni di Fattura Elettronica
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
use Plugins\PianificazioneFatturazione\Pianificazione;
|
||||
|
||||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
|
@ -36,40 +36,6 @@ $mesi = [
|
|||
12 => 'Dicembre',
|
||||
];
|
||||
|
||||
$pianificazioni = Pianificazione::doesntHave('fattura')
|
||||
->whereHas('contratto', function ($q) {
|
||||
$q->whereHas('stato', function ($q) {
|
||||
$q
|
||||
->where('is_fatturabile', 1)
|
||||
->where('descrizione', '<>', 'Concluso');
|
||||
});
|
||||
})->get();
|
||||
|
||||
|
||||
if ($pianificazioni->isEmpty()) {
|
||||
echo '<p>'.tr('Non ci sono fatture da emettere').'.</p>';
|
||||
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
|
||||
'<div class="container"
|
||||
<div class="row">
|
||||
|
|
|
@ -151,5 +151,19 @@ HAVING
|
|||
ORDER BY
|
||||
`scadenza` ASC" WHERE `name` = 'Scadenzario';
|
||||
|
||||
-- Aggiunta dichiarazione d'intento predefinita
|
||||
ALTER TABLE `an_anagrafiche` ADD `id_dichiarazione_intento_default` INT NULL AFTER `idtipointervento_default`, ADD FOREIGN KEY (`id_dichiarazione_intento_default`) REFERENCES `co_dichiarazioni_intento`(`id`);
|
||||
|
||||
-- Aggiunta impostazione Movimentazione articoli da fatture di acquisto
|
||||
INSERT INTO zz_settings(nome, valore, tipo, editable, sezione) VALUES ('Movimenta magazzino da fatture di acquisto','1','boolean','1','Fatturazione Elettronica');
|
||||
INSERT INTO zz_settings(nome, valore, tipo, editable, sezione) VALUES ('Movimenta magazzino da fatture di acquisto','1','boolean','1','Fatturazione Elettronica');
|
||||
|
||||
-- Permetto valore null per numero_esterno di co_documenti
|
||||
ALTER TABLE `co_documenti` CHANGE `numero_esterno` `numero_esterno` VARCHAR(100) NULL DEFAULT NULL;
|
||||
|
||||
-- Aggiunta impostazione Posizione della valuta
|
||||
INSERT INTO zz_settings(nome, valore, tipo, editable, sezione) VALUES ('Posizione del simbolo valuta','Dopo','list[Prima,Dopo]','1','Generali');
|
||||
|
||||
-- Miglioria segmenti scadenzario
|
||||
UPDATE `zz_segments` SET `name` = 'Scadenzario completo' WHERE `zz_segments`.`name` = 'Scadenziaro completo';
|
||||
UPDATE `zz_segments` SET `clause` = '(`co_scadenziario`.`scadenza` BETWEEN \'|period_start|\' AND \'|period_end|\' AND idtipodocumento < 14)' WHERE `zz_segments`.`name` = 'Scadenzario completo';
|
||||
INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`,`note`, `dicitura_fissa`,`predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario'), 'Scadenzario autofatture', '(idtipodocumento >= 14)', 'WHR', '####', '', '', 0, 0, 0, 0, 0);
|
Loading…
Reference in New Issue