This commit is contained in:
Matteo Baccarin 2019-04-11 16:31:32 +02:00
commit d1603cbc6b
22 changed files with 106 additions and 91 deletions

View File

@ -21,17 +21,17 @@
"type": "project",
"require": {
"php": ">=5.6",
"ext-mbstring": "*",
"ext-json": "*",
"ext-pdo": "*",
"ext-zip": "*",
"ext-intl": "*",
"ext-simplexml": "*",
"ext-libxml": "*",
"ext-dom": "*",
"ext-curl": "*",
"ext-dom": "*",
"ext-intl": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
"ext-pdo": "*",
"ext-simplexml": "*",
"ext-xsl": "*",
"ext-zip": "*",
"aluguest/ical-easy-reader": "^1.5",
"danielstjules/stringy": "^3.1",
"davidepastore/codice-fiscale": "^0.4.0",

View File

@ -106,17 +106,11 @@ if (!empty($righe)) {
echo '
</tr>';
$totale = 0.00;
foreach ($righe as $i => $r) {
// Descrizione
echo '
<tr>
<td>
<input type="hidden" name="abilita_serial['.$r['id'].']" value="'.$r['abilita_serial'].'" />
<input type="hidden" id="idarticolo_'.$i.'" name="idarticolo['.$r['id'].']" value="'.$r['idarticolo'].'" />
<input type="hidden" id="descrizione_'.$i.'" name="descrizione['.$r['id'].']" value="'.$r['descrizione'].'" />';
<td>';
// Checkbox - da evadere?
echo '
@ -133,7 +127,6 @@ if (!empty($righe)) {
echo '
<td>
<input type="hidden" id="qtamax_'.$i.'" value="'.($r['qta'] - $r['qta_evasa']).'" />
<input type="hidden" id="um_'.$i.'" name="um['.$r['id'].']" value="'.$r['um'].'" />
<p class="text-center">'.Translator::numberToLocale($r['qta_rimanente']).'</p>
</td>';
@ -152,7 +145,6 @@ if (!empty($righe)) {
<td>
<input type="hidden" id="subtot_'.$i.'" name="subtot['.$r['id'].']" value="'.str_replace('.', ',', ($r['subtotale'] / $r['qta'])).'" />
<input type="hidden" id="sconto_'.$i.'" name="sconto['.$r['id'].']" value="'.str_replace('.', ',', ($r['sconto'] / $r['qta'])).'" />
<input type="hidden" id="idiva_'.$i.'" name="idiva['.$r['id'].']" value="'.$r['idiva'].'" />
<input type="hidden" id="iva_'.$i.'" name="iva['.$r['id'].']" value="'.str_replace('.', ',', ($r['iva'] / $r['qta'])).'" />
<big id="subtotale_'.$i.'">'.Translator::numberToLocale($subtotale - $sconto + $iva).' &euro;</big><br/>
@ -185,8 +177,6 @@ if (!empty($righe)) {
echo '
</tr>';
$totale += $subtotale - $sconto + $iva;
}
// Totale
@ -196,7 +186,7 @@ if (!empty($righe)) {
<b>'.tr('Totale').':</b>
</td>
<td class="text-right" colspan="2">
<big id="totale">'.Translator::numberToLocale($totale).' &euro;</big>
<big id="totale"></big>
</td>
</tr>
</table>';
@ -285,7 +275,9 @@ echo '
subtot = subtot - sconto;
totale += subtot * qta + iva * qta;
if(subtot) {
totale += subtot * qta + iva * qta;
}
r++;
@ -306,4 +298,6 @@ echo '
?>
}
ricalcola_totale();
</script>

View File

@ -16,6 +16,7 @@ abstract class Description extends Model
if (!$bypass) {
$model->is_descrizione = 1;
$model->qta = 1;
}
$model->setParent($document);
@ -42,6 +43,16 @@ abstract class Description extends Model
return $diff;
}
/**
* Restituisce la quantità rimanente dell'elemento.
*
* @return float
*/
public function getQtaRimanenteAttribute()
{
return $this->qta - $this->qta_evasa;
}
public function delete()
{
$this->evasione(-$this->qta);
@ -62,8 +73,6 @@ abstract class Description extends Model
if (empty($this->disableOrder)) {
$this->order = orderValue($this->table, $this->getParentID(), $document->id);
}
$this->save();
}
/**
@ -163,6 +172,7 @@ abstract class Description extends Model
protected function customInitCopiaIn($original)
{
$this->is_descrizione = $original->is_descrizione;
$this->is_sconto = $original->is_sconto;
}
/**

View File

@ -9,11 +9,12 @@ abstract class Discount extends Row
{
protected $guarded = [];
public static function build(Document $document, $bypass = false)
public static function build(Document $document)
{
$model = parent::build($document, true);
$model->is_sconto = 1;
$model->qta = 1;
return $model;
}

View File

@ -126,8 +126,8 @@ switch (post('op')) {
}
break;
// Duplica contratto
// Duplica contratto
case 'copy':
$dbo->query('CREATE TEMPORARY TABLE tmp SELECT * FROM co_contratti WHERE id = '.prepare($id_record));
$dbo->query('ALTER TABLE tmp DROP id');
@ -146,14 +146,13 @@ switch (post('op')) {
$dbo->query('UPDATE tmp SET idcontratto = '.prepare($id_record));
$dbo->query('INSERT INTO co_righe_contratti SELECT NULL,tmp.* FROM tmp');
$dbo->query('DROP TEMPORARY TABLE tmp');
//Azzero eventuale quantità evasa
$dbo->query('UPDATE co_righe_contratti SET qta_evasa=0 WHERE id='.prepare($id_record));
//Azzero eventuale quantità evasa
$dbo->query('UPDATE co_righe_contratti SET qta_evasa=0 WHERE id='.prepare($id_record));
flash()->info(tr('Contratto duplicato correttamente!'));
break;
break;
case 'manage_sconto':
if (post('idriga') != null) {
@ -162,8 +161,6 @@ switch (post('op')) {
$sconto = Sconto::build($contratto);
}
$sconto->qta = 1;
$sconto->descrizione = post('descrizione');
$sconto->id_iva = post('idiva');

View File

@ -26,10 +26,9 @@ if ($record['rinnovabile']) {
</div>';
}
// Duplica contratto
echo '
<form action="" method="post" id="copia-contratto">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="copy">
</form>';
</form>';

View File

@ -188,8 +188,6 @@ switch (post('op')) {
$sconto = Sconto::build($ddt);
}
$sconto->qta = 1;
$sconto->descrizione = post('descrizione');
$sconto->id_iva = post('idiva');

View File

@ -299,7 +299,7 @@ switch (post('op')) {
$articolo->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto') ?: null;
$articolo->id_ritenuta_acconto = post('id_ritenuta_acconto') ?: null;
$articolo->ritenuta_contributi = post('ritenuta_contributi');
$articolo->ritenuta_contributi = boolval(post('ritenuta_contributi'));
$articolo->id_rivalsa_inps = post('id_rivalsa_inps') ?: null;
$articolo->prezzo_unitario_acquisto = post('prezzo_acquisto') ?: 0;
@ -339,8 +339,6 @@ switch (post('op')) {
$sconto = Sconto::build($fattura);
}
$sconto->qta = 1;
$sconto->descrizione = post('descrizione');
$sconto->id_iva = post('idiva');
@ -348,7 +346,7 @@ switch (post('op')) {
$sconto->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto') ?: null;
$sconto->id_ritenuta_acconto = post('id_ritenuta_acconto') ?: null;
$sconto->ritenuta_contributi = post('ritenuta_contributi');
$sconto->ritenuta_contributi = boolval(post('ritenuta_contributi'));
$sconto->id_rivalsa_inps = post('id_rivalsa_inps') ?: null;
$sconto->sconto_unitario = post('sconto_unitario');
@ -387,7 +385,7 @@ switch (post('op')) {
$riga->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto') ?: null;
$riga->id_ritenuta_acconto = post('id_ritenuta_acconto') ?: null;
$riga->ritenuta_contributi = post('ritenuta_contributi');
$riga->ritenuta_contributi = boolval(post('ritenuta_contributi'));
$riga->id_rivalsa_inps = post('id_rivalsa_inps') ?: null;
$riga->prezzo_unitario_acquisto = post('prezzo_acquisto') ?: 0;

View File

@ -141,7 +141,7 @@ switch (post('op')) {
break;
case 'registra-contabile':
break;
}

View File

@ -47,10 +47,9 @@ if (empty($record['is_fiscale'])) {
<?php
if (!empty($record['is_fiscale'])) {
//Aggiunta insoluto
if (!empty($record['riba']) && ($record['stato'] == 'Emessa' || $record['stato'] == 'Parzialmente pagato' || $record['stato'] == 'Pagato') && $dir == 'entrata') {
?>
?>
<button type="button" class="btn btn-primary" onclick="launch_modal( '<?php echo tr('Registra insoluto'); ?>', '<?php echo $rootdir; ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>&iddocumento=<?php echo $id_record; ?>&dir=<?php echo $dir; ?>&insoluto=1', 1 );"><i class="fa fa-euro"></i> <?php echo tr('Registra insoluto'); ?>...</button>
<?php
}

View File

@ -122,7 +122,7 @@ function aggiorna_scadenziario($iddocumento, $totale_pagato, $data_pagamento)
{
$dbo = database();
if($totale_pagato>0){
if ($totale_pagato > 0) {
// Lettura righe scadenziario
$query = "SELECT * FROM co_scadenziario WHERE iddocumento='$iddocumento' AND ABS(pagato) < ABS(da_pagare) ORDER BY scadenza ASC";
$rs = $dbo->fetchArray($query);
@ -168,8 +168,7 @@ function aggiorna_scadenziario($iddocumento, $totale_pagato, $data_pagamento)
}
}
}
}else{
} else {
// Lettura righe scadenziario
$query = "SELECT * FROM co_scadenziario WHERE iddocumento='$iddocumento' AND ABS(pagato)>0 ORDER BY scadenza DESC";
$rs = $dbo->fetchArray($query);
@ -214,7 +213,6 @@ function aggiorna_scadenziario($iddocumento, $totale_pagato, $data_pagamento)
}
}
}
}
}
}

View File

@ -12,12 +12,12 @@ FROM co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anag
$logo_azienda = str_replace(DOCROOT, ROOTDIR, App::filepath('templates/base|custom|/logo_azienda.jpg'));
//cliente
if($r['idconto_cliente']!=''){
if ($r['idconto_cliente'] != '') {
$conto = $r['idconto_cliente'];
$conto_descrizione = $dbo->fetchOne('SELECT CONCAT ((SELECT numero FROM co_pianodeiconti2 WHERE id=co_pianodeiconti3.idpianodeiconti2), ".", numero, " ", descrizione) AS descrizione FROM co_pianodeiconti3 WHERE id='.prepare($conto))['descrizione'];
}
//Fornitore
else if($r['idconto_fornitore']!=''){
elseif ($r['idconto_fornitore'] != '') {
$conto = $r['idconto_fornitore'];
$conto_descrizione = $dbo->fetchOne('SELECT CONCAT ((SELECT numero FROM co_pianodeiconti2 WHERE id=co_pianodeiconti3.idpianodeiconti2), ".", numero, " ", descrizione) AS descrizione FROM co_pianodeiconti3 WHERE id='.prepare($conto))['descrizione'];
}

View File

@ -332,8 +332,6 @@ switch (post('op')) {
$sconto = Riga::build($intervento);
}
$sconto->qta = 1;
$sconto->descrizione = post('descrizione');
$sconto->id_iva = post('idiva');

View File

@ -10,7 +10,7 @@ switch (post('op')) {
for ($i = 0; $i < sizeof(post('idconto')); ++$i) {
$idconto = post('idconto')[$i];
if(!empty($idconto)){
if (!empty($idconto)) {
$query = 'INSERT INTO co_movimenti_modelli(idmastrino, nome, descrizione, idconto) VALUES('.prepare($idmastrino).', '.prepare($nome).', '.prepare($descrizione).', '.prepare($idconto).')';
if ($dbo->query($query)) {
$id_record = $idmastrino;
@ -30,8 +30,8 @@ switch (post('op')) {
for ($i = 0; $i < sizeof(post('idconto')); ++$i) {
$idconto = post('idconto')[$i];
if(!empty($idconto)){
$query = 'INSERT INTO co_movimenti_modelli(idmastrino, nome, descrizione, idconto) VALUES('.prepare($idmastrino).', '.prepare($nome).', '.prepare($descrizione).', '.prepare($idconto).')';
if (!empty($idconto)) {
$query = 'INSERT INTO co_movimenti_modelli(idmastrino, nome, descrizione, idconto) VALUES('.prepare($idmastrino).', '.prepare($nome).', '.prepare($descrizione).', '.prepare($idconto).')';
if ($dbo->query($query)) {
$id_record = $idmastrino;
}

View File

@ -44,32 +44,32 @@ include_once __DIR__.'/../../core.php';
echo '
</table>';
// Variabili utilizzabili
$variables = include Modules::filepath(Modules::get("Fatture di vendita")['id'], 'variables.php');
// Variabili utilizzabili
$variables = include Modules::filepath(Modules::get('Fatture di vendita')['id'], 'variables.php');
echo '
echo '
<!-- Istruzioni per il contenuto -->
<div class="box box-info">
<div class="box-body">';
if (!empty($variables)) {
echo '
if (!empty($variables)) {
echo '
<p>'.tr("Puoi utilizzare le seguenti sequenze di testo all'interno del campo causale, verranno sostituite in fase generazione prima nota dalla fattura.").':</p>
<ul>';
foreach ($variables as $variable => $value) {
echo '
foreach ($variables as $variable => $value) {
echo '
<li><code>{'.$variable.'}</code></li>';
}
}
echo '
echo '
</ul>';
} else {
echo '
} else {
echo '
<p><i class="fa fa-warning"></i> '.tr('Non sono state definite variabili da utilizzare nel template').'.</p>';
}
}
echo '
echo '
</div>
</div>';
?>

View File

@ -85,7 +85,7 @@ echo '
<?php
// Variabili utilizzabili
$variables = include Modules::filepath(Modules::get("Fatture di vendita")['id'], 'variables.php');
$variables = include Modules::filepath(Modules::get('Fatture di vendita')['id'], 'variables.php');
echo '
<!-- Istruzioni per il contenuto -->

View File

@ -220,6 +220,7 @@ switch (post('op')) {
flash()->info(tr('Riga rimossa!'));
}
break;
case 'manage_sconto':
@ -229,8 +230,6 @@ switch (post('op')) {
$sconto = Sconto::build($ordine);
}
$sconto->qta = 1;
$sconto->descrizione = post('descrizione');
$sconto->id_iva = post('idiva');
@ -371,7 +370,7 @@ switch (post('op')) {
$id_record = $ordine->id;
}
$parziale = false;
$righe = $preventivo->getRighe();
foreach ($righe as $riga) {

View File

@ -32,7 +32,7 @@ switch (post('op')) {
$idstato = post('idstato');
$nome = post('nome');
$idanagrafica = post('idanagrafica');
$idsede = post('idsede');
$idsede = post('idsede');
$idagente = post('idagente');
$idreferente = post('idreferente');
$idpagamento = post('idpagamento');
@ -70,7 +70,7 @@ switch (post('op')) {
$query = 'UPDATE co_preventivi SET idstato='.prepare($idstato).','.
' nome='.prepare($nome).','.
' idanagrafica='.prepare($idanagrafica).','.
' idsede='.prepare($idsede).','.
' idsede='.prepare($idsede).','.
' idagente='.prepare($idagente).','.
' idreferente='.prepare($idreferente).','.
' idpagamento='.prepare($idpagamento).','.
@ -116,9 +116,9 @@ switch (post('op')) {
$dbo->query('UPDATE tmp SET idpreventivo = '.prepare($id_record));
$dbo->query('INSERT INTO co_righe_preventivi SELECT NULL,tmp.* FROM tmp');
$dbo->query('DROP TEMPORARY TABLE tmp');
//Azzero eventuale quantità evasa
$dbo->query('UPDATE co_righe_preventivi SET qta_evasa=0 WHERE id='.prepare($id_record));
//Azzero eventuale quantità evasa
$dbo->query('UPDATE co_righe_preventivi SET qta_evasa=0 WHERE id='.prepare($id_record));
flash()->info(tr('Preventivo duplicato correttamente!'));
@ -243,8 +243,6 @@ switch (post('op')) {
$sconto = Sconto::build($preventivo);
}
$sconto->qta = 1;
$sconto->descrizione = post('descrizione');
$sconto->id_iva = post('idiva');

View File

@ -46,7 +46,7 @@ switch (post('op')) {
if ($totale_pagato != 0 && empty($insoluto)) {
// Inserisco nello scadenziario il totale pagato
aggiorna_scadenziario($iddocumento, abs($totale_pagato), $data);
}else if(!empty($insoluto)){
} elseif (!empty($insoluto)) {
//Rimuovo dallo scadenzario l'insoluto
aggiorna_scadenziario($iddocumento, -abs($totale_pagato), $data);
}
@ -65,9 +65,9 @@ switch (post('op')) {
// Aggiorno lo stato della fattura
if (abs($rs[0]['tot_pagato']) == abs($rs[0]['tot_da_pagare'])) {
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Pagato') WHERE id=".prepare($iddocumento));
} else if(abs($rs[0]['tot_pagato']) != abs($rs[0]['tot_da_pagare']) && abs($rs[0]['tot_pagato'])!='0'){
} elseif (abs($rs[0]['tot_pagato']) != abs($rs[0]['tot_da_pagare']) && abs($rs[0]['tot_pagato']) != '0') {
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Parzialmente pagato') WHERE id=".prepare($iddocumento));
}else{
} else {
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Emessa') WHERE id=".prepare($iddocumento));
}

View File

@ -15,7 +15,7 @@ include_once __DIR__.'/../../core.php';
$dir = get('dir');
$insoluto = get('insoluto');
if(!empty($insoluto)){
if (!empty($insoluto)) {
echo '<input type="hidden" name="insoluto" value="1">';
}
@ -42,9 +42,9 @@ include_once __DIR__.'/../../core.php';
$tipo_doc = 'fattura';
}
if(!empty($insoluto)){
if (!empty($insoluto)) {
$operation = 'Registrazione insoluto';
}else{
} else {
$operation = 'Pag.';
}
@ -90,9 +90,9 @@ include_once __DIR__.'/../../core.php';
$query = 'SELECT SUM(pagato) AS tot_pagato, SUM(da_pagare) AS tot_da_pagare FROM co_scadenziario GROUP BY iddocumento HAVING iddocumento='.prepare($iddocumento);
$rs = $dbo->fetchArray($query);
if(!empty($insoluto)){
if (!empty($insoluto)) {
$importo_conto_aziendale = abs($rs[0]['tot_da_pagare']);
}else{
} else {
$importo_conto_aziendale = abs($rs[0]['tot_da_pagare']) - abs($rs[0]['tot_pagato']);
}
$totale_dare = $importo_conto_aziendale;

View File

@ -72,7 +72,7 @@ switch (post('op')) {
case 'test':
$mail = new Mail($id_record);
echo json_encode( [
echo json_encode([
'test' => $mail->testSMTP(),
]);

View File

@ -138,7 +138,7 @@ UPDATE `dt_righe_ddt` SET `sconto` = `sconto_globale`, `sconto_unitario` = `scon
ALTER TABLE `dt_righe_ddt` DROP `sconto_globale`;
-- Fix per la tabella in_righe_interventi
ALTER TABLE `in_righe_interventi` ADD `is_descrizione` TINYINT(1) NOT NULL AFTER `idintervento`, ADD `idarticolo` INT(11) AFTER `idintervento`, ADD FOREIGN KEY (`idarticolo`) REFERENCES `mg_articoli`(`id`);
ALTER TABLE `in_righe_interventi` ADD `is_descrizione` TINYINT(1) NOT NULL AFTER `idintervento`, ADD `idarticolo` INT(11) AFTER `idintervento`, ADD FOREIGN KEY (`idarticolo`) REFERENCES `mg_articoli`(`id`), ADD `is_sconto` BOOLEAN DEFAULT FALSE NOT NULL AFTER `is_descrizione`;
ALTER TABLE `mg_articoli_interventi` ADD `is_descrizione` TINYINT(1) NOT NULL AFTER `idintervento`, ADD `is_sconto` BOOLEAN DEFAULT FALSE NOT NULL AFTER `is_descrizione`;
-- Rimozione campi inutilizzati co_ritenutaacconto
@ -177,4 +177,30 @@ INSERT INTO `zz_segments` (`id`, `id_module`, `name`, `clause`, `position`, `pat
(NULL, (SELECT id FROM zz_modules WHERE name='Scadenzario'), 'Scadenzario totale', '1=1', 'WHR', '####', '', 1, 0, 0, 1),
(NULL, (SELECT id FROM zz_modules WHERE name='Scadenzario'), 'Scadenzario clienti', '((SELECT dir FROM co_tipidocumento WHERE co_tipidocumento.id=co_documenti.idtipodocumento)=\'entrata\')', 'WHR', '####', '', 0, 0, 0, 0),
(NULL, (SELECT id FROM zz_modules WHERE name='Scadenzario'), 'Scadenzario fornitori', '((SELECT dir FROM co_tipidocumento WHERE co_tipidocumento.id=co_documenti.idtipodocumento)=\'uscita\')', 'WHR', '####', '', 0, 0, 0, 0),
(NULL, (SELECT id FROM zz_modules WHERE name='Scadenzario'), 'Scadenzario Ri.Ba.', 'co_pagamenti.riba=1', 'WHR', '####', '', 0, 0, 0, 0);
(NULL, (SELECT id FROM zz_modules WHERE name='Scadenzario'), 'Scadenzario Ri.Ba.', 'co_pagamenti.riba=1', 'WHR', '####', '', 0, 0, 0, 0);
-- Fix vari
ALTER TABLE `co_righe_documenti` CHANGE `um` `um` VARCHAR(20) NULL;
UPDATE `co_righe_documenti` SET `um` = NULL WHERE `um` = '';
ALTER TABLE `co_righe_documenti` CHANGE `idritenutaacconto` `idritenutaacconto` INT(11) NULL, CHANGE `idrivalsainps` `idrivalsainps` INT(11) NULL;
UPDATE `co_righe_documenti` SET `idritenutaacconto` = NULL WHERE `idritenutaacconto` = 0;
UPDATE `co_righe_documenti` SET `idrivalsainps` = NULL WHERE `idrivalsainps` = 0;
ALTER TABLE `co_righe_preventivi` CHANGE `um` `um` VARCHAR(20) NULL;
UPDATE `co_righe_preventivi` SET `um` = NULL WHERE `um` = '';
ALTER TABLE `co_righe_contratti` CHANGE `um` `um` VARCHAR(20) NULL;
UPDATE `co_righe_contratti` SET `um` = NULL WHERE `um` = '';
ALTER TABLE `or_righe_ordini` CHANGE `um` `um` VARCHAR(20) NULL;
UPDATE `or_righe_ordini` SET `um` = NULL WHERE `um` = '';
ALTER TABLE `dt_righe_ddt` CHANGE `um` `um` VARCHAR(20) NULL;
UPDATE `dt_righe_ddt` SET `um` = NULL WHERE `um` = '';
ALTER TABLE `in_righe_interventi` CHANGE `um` `um` VARCHAR(20) NULL;
UPDATE `in_righe_interventi` SET `um` = NULL WHERE `um` = '';
ALTER TABLE `mg_articoli_interventi` CHANGE `um` `um` VARCHAR(20) NULL;
UPDATE `mg_articoli_interventi` SET `um` = NULL WHERE `um` = '';