mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-02 00:46:44 +01:00
Auto stash before merge of "master" and "origin/master"
This commit is contained in:
parent
c7076f3557
commit
b3f91d4a36
@ -139,12 +139,26 @@ switch (post('op')) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'registra-contabile':
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
$bulk = [
|
||||
'delete-bulk' => tr('Elimina selezionati'),
|
||||
];
|
||||
|
||||
$bulk['registra-contabile'] = [
|
||||
'text' => tr('Registra contabile pagamento'),
|
||||
'data' => [
|
||||
'msg' => tr('Vuoi aggiungere un movimento contabile per le fatture selezionate?'),
|
||||
'button' => tr('Procedi'),
|
||||
'class' => 'btn btn-lg btn-warning',
|
||||
'blank' => true,
|
||||
],
|
||||
];
|
||||
|
||||
if ($module->name == 'Fatture di vendita') {
|
||||
$bulk['export-bulk'] = [
|
||||
'text' => tr('Esporta stampe'),
|
||||
|
@ -47,6 +47,14 @@ 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
|
||||
}
|
||||
|
||||
// Aggiunta prima nota solo se non c'è già, se non si è in bozza o se il pagamento non è completo
|
||||
$n2 = $dbo->fetchNum('SELECT id FROM co_movimenti WHERE iddocumento='.prepare($id_record).' AND primanota=1');
|
||||
|
||||
|
@ -29,6 +29,7 @@ if (isset($id_record)) {
|
||||
LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id
|
||||
INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica
|
||||
INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id
|
||||
LEFT JOIN co_pagamenti ON co_documenti.idpagamento=co_pagamenti.id
|
||||
WHERE co_tipidocumento.dir = '.prepare($dir).' AND co_documenti.id='.prepare($id_record));
|
||||
|
||||
$note_accredito = $dbo->fetchArray("SELECT co_documenti.id, IF(numero_esterno != '', numero_esterno, numero) AS numero, data FROM co_documenti JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE reversed = 1 AND ref_documento=".prepare($id_record));
|
||||
|
@ -122,52 +122,100 @@ function aggiorna_scadenziario($iddocumento, $totale_pagato, $data_pagamento)
|
||||
{
|
||||
$dbo = database();
|
||||
|
||||
// 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);
|
||||
$netto_fattura = get_netto_fattura($iddocumento);
|
||||
$rimanente = $netto_fattura;
|
||||
$rimanente_da_pagare = abs($rs[0]['pagato']) + $totale_pagato;
|
||||
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);
|
||||
$rimanente_da_pagare = abs($rs[0]['pagato']) + $totale_pagato;
|
||||
|
||||
// Verifico se la fattura è di acquisto o di vendita per scegliere che segno mettere nel totale
|
||||
$query2 = 'SELECT dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='.prepare($iddocumento);
|
||||
$rs2 = $dbo->fetchArray($query2);
|
||||
$dir = $rs2[0]['dir'];
|
||||
// Verifico se la fattura è di acquisto o di vendita per scegliere che segno mettere nel totale
|
||||
$query2 = 'SELECT dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='.prepare($iddocumento);
|
||||
$rs2 = $dbo->fetchArray($query2);
|
||||
$dir = $rs2[0]['dir'];
|
||||
|
||||
// Ciclo tra le rate dei pagamenti per inserire su `pagato` l'importo effettivamente pagato.
|
||||
// Nel caso il pagamento superi la rata, devo distribuirlo sulle rate successive
|
||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||
if ($rimanente_da_pagare != 0) {
|
||||
// ...riempio il pagato della rata con il totale della rata stessa se ho ricevuto un pagamento superiore alla rata stessa
|
||||
if (abs($rimanente_da_pagare) >= abs($rs[$i]['da_pagare'])) {
|
||||
$pagato = abs($rs[$i]['da_pagare']);
|
||||
$rimanente_da_pagare -= abs($rs[$i]['da_pagare']);
|
||||
} else {
|
||||
// Se si inserisce una somma maggiore al dovuto, tengo valido il rimanente per saldare il tutto...
|
||||
if (abs($rimanente_da_pagare) > abs($rs[$i]['da_pagare'])) {
|
||||
// Ciclo tra le rate dei pagamenti per inserire su `pagato` l'importo effettivamente pagato.
|
||||
// Nel caso il pagamento superi la rata, devo distribuirlo sulle rate successive
|
||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||
if ($rimanente_da_pagare > 0) {
|
||||
// ...riempio il pagato della rata con il totale della rata stessa se ho ricevuto un pagamento superiore alla rata stessa
|
||||
if (abs($rimanente_da_pagare) >= abs($rs[$i]['da_pagare'])) {
|
||||
$pagato = abs($rs[$i]['da_pagare']);
|
||||
$rimanente_da_pagare -= abs($rs[$i]['da_pagare']);
|
||||
}
|
||||
|
||||
// ...altrimenti aggiungo l'importo pagato
|
||||
else {
|
||||
$pagato = abs($rimanente_da_pagare);
|
||||
$rimanente_da_pagare -= abs($rimanente_da_pagare);
|
||||
}
|
||||
}
|
||||
|
||||
if ($dir == 'uscita') {
|
||||
$rimanente_da_pagare = -$rimanente_da_pagare;
|
||||
}
|
||||
|
||||
if ($pagato > 0) {
|
||||
if ($dir == 'uscita') {
|
||||
$dbo->query('UPDATE co_scadenziario SET pagato='.prepare(-$pagato).', data_pagamento='.prepare($data_pagamento).' WHERE id='.prepare($rs[$i]['id']));
|
||||
} else {
|
||||
$dbo->query('UPDATE co_scadenziario SET pagato='.prepare($pagato).', data_pagamento='.prepare($data_pagamento).' WHERE id='.prepare($rs[$i]['id']));
|
||||
// Se si inserisce una somma maggiore al dovuto, tengo valido il rimanente per saldare il tutto...
|
||||
if (abs($rimanente_da_pagare) > abs($rs[$i]['da_pagare'])) {
|
||||
$pagato = abs($rs[$i]['da_pagare']);
|
||||
$rimanente_da_pagare -= abs($rs[$i]['da_pagare']);
|
||||
}
|
||||
|
||||
// ...altrimenti aggiungo l'importo pagato
|
||||
else {
|
||||
$pagato = abs($rimanente_da_pagare);
|
||||
$rimanente_da_pagare -= abs($rimanente_da_pagare);
|
||||
}
|
||||
}
|
||||
|
||||
if ($dir == 'uscita') {
|
||||
$rimanente_da_pagare = -$rimanente_da_pagare;
|
||||
}
|
||||
|
||||
if ($pagato > 0) {
|
||||
if ($dir == 'uscita') {
|
||||
$dbo->query('UPDATE co_scadenziario SET pagato='.prepare(-$pagato).', data_pagamento='.prepare($data_pagamento).' WHERE id='.prepare($rs[$i]['id']));
|
||||
} else {
|
||||
$dbo->query('UPDATE co_scadenziario SET pagato='.prepare($pagato).', data_pagamento='.prepare($data_pagamento).' WHERE id='.prepare($rs[$i]['id']));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
|
||||
// Lettura righe scadenziario
|
||||
$query = "SELECT * FROM co_scadenziario WHERE iddocumento='$iddocumento' AND ABS(pagato)>0 ORDER BY scadenza DESC";
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$residuo_pagato = abs($rs[0]['pagato']) + $totale_pagato;
|
||||
|
||||
// Verifico se la fattura è di acquisto o di vendita per scegliere che segno mettere nel totale
|
||||
$query2 = 'SELECT dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='.prepare($iddocumento);
|
||||
$rs2 = $dbo->fetchArray($query2);
|
||||
$dir = $rs2[0]['dir'];
|
||||
|
||||
// Ciclo tra le rate dei pagamenti per inserire su `pagato` l'importo effettivamente pagato.
|
||||
// Nel caso il pagamento superi la rata, devo distribuirlo sulle rate successive
|
||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||
if ($residuo_pagato >= 0) {
|
||||
// ...riempio il pagato della rata con il totale della rata stessa se ho ricevuto un pagamento superiore alla rata stessa
|
||||
if (abs($residuo_pagato) <= abs($rs[$i]['pagato'])) {
|
||||
$pagato = 0;
|
||||
$residuo_pagato -= abs($rs[$i]['pagato']);
|
||||
} else {
|
||||
// Se si inserisce una somma maggiore al dovuto, tengo valido il rimanente per saldare il tutto...
|
||||
if (abs($residuo_pagato) < abs($rs[$i]['pagato'])) {
|
||||
$pagato = 0;
|
||||
$residuo_pagato -= abs($rs[$i]['pagato']);
|
||||
}
|
||||
|
||||
// ...altrimenti aggiungo l'importo pagato
|
||||
else {
|
||||
$pagato = abs($residuo_pagato);
|
||||
$residuo_pagato -= abs($residuo_pagato);
|
||||
}
|
||||
}
|
||||
|
||||
if ($dir == 'uscita') {
|
||||
$residuo_pagato = -$residuo_pagato;
|
||||
}
|
||||
|
||||
if ($pagato >= 0) {
|
||||
if ($dir == 'uscita') {
|
||||
$dbo->query('UPDATE co_scadenziario SET pagato='.prepare(-$pagato).', data_pagamento='.prepare($data_pagamento).' WHERE id='.prepare($rs[$i]['id']));
|
||||
} else {
|
||||
$dbo->query('UPDATE co_scadenziario SET pagato='.prepare($pagato).', data_pagamento='.prepare($data_pagamento).' WHERE id='.prepare($rs[$i]['id']));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
$r = $dbo->fetchOne('SELECT co_documenti.*,
|
||||
an_anagrafiche.email,
|
||||
an_anagrafiche.idconto_cliente,
|
||||
an_anagrafiche.idconto_fornitore,
|
||||
an_anagrafiche.pec,
|
||||
an_anagrafiche.ragione_sociale,
|
||||
(SELECT pec FROM zz_smtps WHERE zz_smtps.id='.prepare($template['id_smtp']).') AS is_pec
|
||||
@ -9,6 +11,17 @@ 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']!=''){
|
||||
$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']!=''){
|
||||
$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'];
|
||||
}
|
||||
|
||||
// Variabili da sostituire
|
||||
return [
|
||||
'email' => $r['is_pec'] ? $r['pec'] : $r['email'],
|
||||
@ -18,4 +31,6 @@ return [
|
||||
'note' => $r['note'],
|
||||
'data' => Translator::dateToLocale($r['data']),
|
||||
'logo_azienda' => !empty($logo_azienda) ? '<img src="'.$logo_azienda.'" />' : '',
|
||||
'conto' => $conto,
|
||||
'conto_descrizione' => $conto_descrizione,
|
||||
];
|
||||
|
@ -6,12 +6,15 @@ switch (post('op')) {
|
||||
case 'add':
|
||||
$idmastrino = get_new_idmastrino('co_movimenti_modelli');
|
||||
$descrizione = post('descrizione');
|
||||
$nome = post('nome');
|
||||
|
||||
for ($i = 0; $i < sizeof(post('idconto')); ++$i) {
|
||||
$idconto = post('idconto')[$i];
|
||||
$query = 'INSERT INTO co_movimenti_modelli(idmastrino, descrizione, idconto) VALUES('.prepare($idmastrino).', '.prepare($descrizione).', '.prepare($idconto).')';
|
||||
if ($dbo->query($query)) {
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,15 +23,18 @@ switch (post('op')) {
|
||||
case 'editriga':
|
||||
$idmastrino = post('idmastrino');
|
||||
$descrizione = post('descrizione');
|
||||
$nome = post('nome');
|
||||
|
||||
// Eliminazione prima nota
|
||||
$dbo->query('DELETE FROM co_movimenti_modelli WHERE idmastrino='.prepare($idmastrino));
|
||||
|
||||
for ($i = 0; $i < sizeof(post('idconto')); ++$i) {
|
||||
$idconto = post('idconto')[$i];
|
||||
$query = 'INSERT INTO co_movimenti_modelli(idmastrino, descrizione, idconto) VALUES('.prepare($idmastrino).', '.prepare($descrizione).', '.prepare($idconto).')';
|
||||
if ($dbo->query($query)) {
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7,8 +7,11 @@ include_once __DIR__.'/../../core.php';
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1 ]}
|
||||
<div class="col-md-5">
|
||||
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "nome", "required": 1 ]}
|
||||
</div>
|
||||
<div class="col-md-7">
|
||||
{[ "type": "text", "label": "<?php echo tr('Causale'); ?>", "name": "descrizione", "required": 1 ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -40,7 +43,36 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
echo '
|
||||
</table>';
|
||||
?>
|
||||
|
||||
// Variabili utilizzabili
|
||||
$variables = include Modules::filepath(Modules::get("Fatture di vendita")['id'], 'variables.php');
|
||||
|
||||
echo '
|
||||
<!-- Istruzioni per il contenuto -->
|
||||
<div class="box box-info">
|
||||
<div class="box-body">';
|
||||
|
||||
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 '
|
||||
<li><code>{'.$variable.'}</code></li>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</ul>';
|
||||
} else {
|
||||
echo '
|
||||
<p><i class="fa fa-warning"></i> '.tr('Non sono state definite variabili da utilizzare nel template').'.</p>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>
|
||||
</div>';
|
||||
?>
|
||||
|
||||
<!-- PULSANTI -->
|
||||
<div class="row">
|
||||
|
@ -11,8 +11,11 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "text", "label": "<?php echo tr('Causale predefinita'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$" ]}
|
||||
<div class="col-md-5">
|
||||
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "nome", "required": 1, "value": "$nome$" ]}
|
||||
</div>
|
||||
<div class="col-md-7">
|
||||
{[ "type": "text", "label": "<?php echo tr('Causale'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -52,7 +55,7 @@ for ($i = 0; $i < 10; ++$i) {
|
||||
echo '
|
||||
<tr>
|
||||
<td>
|
||||
{[ "type": "select", "name": "idconto['.$i.']", "value": "'.$rs[$i]['idconto'].'", "ajax-source": "conti", "required": "'.$required.'" ]}
|
||||
{[ "type": "select", "name": "idconto['.$i.']", "value": "'.$rs[$i]['idconto'].'", "ajax-source": "conti-modelliprimanota", "required": "'.$required.'" ]}
|
||||
</td>
|
||||
</tr>';
|
||||
}
|
||||
@ -80,6 +83,50 @@ echo '
|
||||
|
||||
</form>
|
||||
|
||||
<?php
|
||||
// Variabili utilizzabili
|
||||
$variables = include Modules::filepath(Modules::get("Fatture di vendita")['id'], 'variables.php');
|
||||
|
||||
echo '
|
||||
<!-- Istruzioni per il contenuto -->
|
||||
<div class="box box-info">
|
||||
<div class="box-body">';
|
||||
|
||||
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 '
|
||||
<li><code>{'.$variable.'}</code></li>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</ul>';
|
||||
} else {
|
||||
echo '
|
||||
<p><i class="fa fa-warning"></i> '.tr('Non sono state definite variabili da utilizzare nel template').'.</p>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>
|
||||
</div>';
|
||||
?>
|
||||
|
||||
|
||||
<a class="btn btn-danger ask" data-backto="record-list" data-idmastrino="<?php echo $record['idmastrino']; ?>">
|
||||
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
</a>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
$('select[name=idconto]').each(function(){
|
||||
this.selectAdd([{
|
||||
'value': -1,
|
||||
'text': "Conto cliente fattura",
|
||||
}]);
|
||||
});
|
||||
|
||||
</Script>
|
||||
|
@ -1,7 +1,5 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM co_movimenti_modelli WHERE id='.prepare($id_record));
|
||||
$record = $dbo->fetchOne('SELECT * FROM co_movimenti_modelli WHERE idmastrino='.prepare($id_record));
|
||||
}
|
||||
|
@ -84,4 +84,57 @@ switch ($resource) {
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'conti-modelliprimanota':
|
||||
$query = 'SELECT co_pianodeiconti2.* FROM co_pianodeiconti2 LEFT JOIN co_pianodeiconti3 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id |where| GROUP BY co_pianodeiconti2.id';
|
||||
|
||||
if ($search != '') {
|
||||
$wh = 'WHERE (co_pianodeiconti3.descrizione LIKE '.prepare('%'.$search.'%')." OR CONCAT( co_pianodeiconti2.numero, '.', co_pianodeiconti3.numero ) LIKE ".prepare('%'.$search.'%').')';
|
||||
} else {
|
||||
$wh = '';
|
||||
}
|
||||
$query = str_replace('|where|', $wh, $query);
|
||||
|
||||
$rs = $dbo->fetchArray($query);
|
||||
foreach ($rs as $r) {
|
||||
$results[] = ['text' => $r['numero'].' '.$r['descrizione'], 'children' => []];
|
||||
|
||||
$subquery = 'SELECT co_pianodeiconti3.* FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id |where|';
|
||||
|
||||
$where = [];
|
||||
$filter = [];
|
||||
$search_fields = [];
|
||||
|
||||
foreach ($elements as $element) {
|
||||
$filter[] = 'co_pianodeiconti3.id='.prepare($element);
|
||||
}
|
||||
if (!empty($filter)) {
|
||||
$where[] = '('.implode(' OR ', $filter).')';
|
||||
}
|
||||
|
||||
$where[] = 'idpianodeiconti2='.prepare($r['id']);
|
||||
|
||||
if (!empty($search)) {
|
||||
$search_fields[] = '(co_pianodeiconti3.descrizione LIKE '.prepare('%'.$search.'%')." OR CONCAT(co_pianodeiconti2.numero, '.', co_pianodeiconti3.numero) LIKE ".prepare('%'.$search.'%').')';
|
||||
}
|
||||
if (!empty($search_fields)) {
|
||||
$where[] = '('.implode(' OR ', $search_fields).')';
|
||||
}
|
||||
|
||||
$wh = '';
|
||||
if (count($where) != 0) {
|
||||
$wh = 'WHERE '.implode(' AND ', $where);
|
||||
}
|
||||
$subquery = str_replace('|where|', $wh, $subquery);
|
||||
|
||||
$rs2 = $dbo->fetchArray($subquery);
|
||||
foreach ($rs2 as $r2) {
|
||||
$results[count($results) - 1]['children'][] = ['id' => $r2['id'], 'text' => $r['numero'].'.'.$r2['numero'].' '.$r2['descrizione']];
|
||||
}
|
||||
|
||||
$results[] = ['text' => 'Conto cliente/fornitore fattura', 'children' => []];
|
||||
$results[count($results) - 1]['children'][] = ['id' => '-1', 'text' => '{Conto cliente/fornitore fattura}'];
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ switch (post('op')) {
|
||||
$data = post('data');
|
||||
$idmastrino = get_new_idmastrino();
|
||||
$descrizione = post('descrizione');
|
||||
$insoluto = post('insoluto');
|
||||
|
||||
// Lettura info fattura
|
||||
$query = 'SELECT *, co_documenti.note, co_documenti.idpagamento, co_documenti.id AS iddocumento, co_statidocumento.descrizione AS `stato`, co_tipidocumento.descrizione AS `descrizione_tipodoc` FROM ((co_documenti LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='.prepare($iddocumento);
|
||||
@ -42,9 +43,12 @@ switch (post('op')) {
|
||||
}
|
||||
}
|
||||
|
||||
// Inserisco nello scadenziario il totale pagato
|
||||
if ($totale_pagato != 0) {
|
||||
if ($totale_pagato != 0 && empty($insoluto)) {
|
||||
// Inserisco nello scadenziario il totale pagato
|
||||
aggiorna_scadenziario($iddocumento, abs($totale_pagato), $data);
|
||||
}else if(!empty($insoluto)){
|
||||
//Rimuovo dallo scadenzario l'insoluto
|
||||
aggiorna_scadenziario($iddocumento, -abs($totale_pagato), $data);
|
||||
}
|
||||
|
||||
// Se non va a buon fine qualcosa elimino il mastrino per non lasciare incongruenze nel db
|
||||
@ -61,8 +65,10 @@ 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 {
|
||||
} else if(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{
|
||||
$dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Emessa') WHERE id=".prepare($iddocumento));
|
||||
}
|
||||
|
||||
// Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono
|
||||
@ -101,7 +107,7 @@ switch (post('op')) {
|
||||
|
||||
for ($i = 0; $i < sizeof(post('idconto')); ++$i) {
|
||||
$idconto = post('idconto')[$i];
|
||||
$query = 'INSERT INTO co_movimenti_modelli(idmastrino, descrizione, idconto) VALUES('.prepare($idmastrino).', '.prepare($descrizione).', '.prepare($idconto).')';
|
||||
$query = 'INSERT INTO co_movimenti_modelli(idmastrino, nome, descrizione, idconto) VALUES('.prepare($idmastrino).', '.prepare($descrizione).', '.prepare($descrizione).', '.prepare($idconto).')';
|
||||
$dbo->query($query);
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
|
||||
?><form action="<?php echo ROOTDIR; ?>/controller.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>" method="post" id="add-form">
|
||||
<input type="hidden" name="op" value="add">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="iddocumento" value="<?php echo get('iddocumento'); ?>">
|
||||
<input type="hidden" name="iddocumento" id="iddocumento" value="<?php echo get('iddocumento'); ?>">
|
||||
<input type="hidden" name="crea_modello" id="crea_modello" value="0">
|
||||
<input type="hidden" name="idmastrino" id="idmastrino" value="0">
|
||||
|
||||
@ -13,6 +13,15 @@ include_once __DIR__.'/../../core.php';
|
||||
$idconto = get('idconto');
|
||||
$iddocumento = get('iddocumento');
|
||||
$dir = get('dir');
|
||||
$insoluto = get('insoluto');
|
||||
|
||||
if(!empty($insoluto)){
|
||||
echo '<input type="hidden" name="insoluto" value="1">';
|
||||
}
|
||||
|
||||
// Lettura delle variabili nei singoli moduli
|
||||
$id_record = $iddocumento;
|
||||
$variables = include Modules::filepath(Modules::get('Fatture di vendita')['id'], 'variables.php');
|
||||
|
||||
if (!empty($iddocumento)) {
|
||||
// Lettura numero e tipo di documento
|
||||
@ -33,7 +42,14 @@ include_once __DIR__.'/../../core.php';
|
||||
$tipo_doc = 'fattura';
|
||||
}
|
||||
|
||||
$descrizione = tr('Pag. _DOC_ num. _NUM_ del _DATE_ (_NAME_)', [
|
||||
if(!empty($insoluto)){
|
||||
$operation = 'Registrazione insoluto';
|
||||
}else{
|
||||
$operation = 'Pag.';
|
||||
}
|
||||
|
||||
$descrizione = tr('_OP_ _DOC_ num. _NUM_ del _DATE_ (_NAME_)', [
|
||||
'_OP_' => $operation,
|
||||
'_DOC_' => $tipo_doc,
|
||||
'_NUM_' => $numero_doc,
|
||||
'_DATE_' => Translator::dateToLocale($rs[0]['data']),
|
||||
@ -74,7 +90,11 @@ 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);
|
||||
|
||||
$importo_conto_aziendale = abs($rs[0]['tot_da_pagare']) - abs($rs[0]['tot_pagato']);
|
||||
if(!empty($insoluto)){
|
||||
$importo_conto_aziendale = abs($rs[0]['tot_da_pagare']);
|
||||
}else{
|
||||
$importo_conto_aziendale = abs($rs[0]['tot_da_pagare']) - abs($rs[0]['tot_pagato']);
|
||||
}
|
||||
$totale_dare = $importo_conto_aziendale;
|
||||
}
|
||||
|
||||
@ -124,7 +144,7 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "select", "label": "<?php echo tr('Modello primanota'); ?>", "id": "modello_primanota", "values": "query=SELECT idmastrino AS id, descrizione FROM co_movimenti_modelli GROUP BY idmastrino" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Modello primanota'); ?>", "id": "modello_primanota", "values": "query=SELECT idmastrino AS id, nome AS descrizione, descrizione as causale FROM co_movimenti_modelli GROUP BY idmastrino" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -195,7 +215,7 @@ include_once __DIR__.'/../../core.php';
|
||||
}
|
||||
|
||||
// Se è una nota di credito, inverto i valori
|
||||
if ($nota_credito) {
|
||||
if ($nota_credito || $insoluto) {
|
||||
$tmp = $value_dare;
|
||||
$value_dare = $value_avere;
|
||||
$value_avere = $tmp;
|
||||
@ -350,26 +370,53 @@ include_once __DIR__.'/../../core.php';
|
||||
$('#bs-popup #idmastrino').val(0);
|
||||
}
|
||||
|
||||
var idmastrino = $(this).val();
|
||||
var idmastrino = $(this).val();
|
||||
var variables = <?php echo json_encode($variables); ?>;
|
||||
|
||||
var replaced = 0;
|
||||
|
||||
if(idmastrino!=''){
|
||||
var causale = $(this).find('option:selected').text();
|
||||
var causale = $(this).find('option:selected').data('causale');
|
||||
|
||||
if($('#iddocumento').val()!=''){
|
||||
for (i in variables){
|
||||
if(causale.includes('{'+i+'}')){
|
||||
replaced++;
|
||||
causale = causale.replace('{'+i+'}', variables[i]);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
for (i in variables){
|
||||
causale = causale.replace('{'+i+'}', '_');
|
||||
}
|
||||
}
|
||||
|
||||
//aggiornava erroneamente anche la causale ed eventuale numero di fattura e data
|
||||
<?php if (empty($iddocumento)) {
|
||||
?>
|
||||
$('#bs-popup #desc').val(causale);
|
||||
<?php
|
||||
} ?>
|
||||
//aggiornava erroneamente anche la causale ed eventuale numero di fattura e data
|
||||
if(replaced>0 || $('#iddocumento').val()==''){
|
||||
$('#bs-popup #desc').val(causale);
|
||||
}
|
||||
|
||||
$.get('<?php echo $rootdir; ?>/ajax_complete.php?op=get_conti&idmastrino='+idmastrino, function(data){
|
||||
var conti = data.split(',');
|
||||
for(i=0;i<conti.length;i++){
|
||||
var conto = conti[i].split(';');
|
||||
var option = $("<option selected></option>").val(conto[0]).text(conto[1]);
|
||||
$('#bs-popup #conto'+i).selectReset();
|
||||
$('#bs-popup #conto'+i).append(option).trigger('change');
|
||||
}
|
||||
var conto = conti[i].split(';');
|
||||
//Sostituzione conto cliente/fornitore
|
||||
if(conto[0]==-1){
|
||||
if($('#iddocumento').val()!=''){
|
||||
var option = $("<option selected></option>").val(variables['conto']).text(variables['conto_descrizione']);
|
||||
$('#bs-popup #conto'+i).selectReset();
|
||||
$('#bs-popup #conto'+i).append(option).trigger('change');
|
||||
}
|
||||
}else{
|
||||
var option = $("<option selected></option>").val(conto[0]).text(conto[1]);
|
||||
$('#bs-popup #conto'+i).selectReset();
|
||||
$('#bs-popup #conto'+i).append(option).trigger('change');
|
||||
}
|
||||
}
|
||||
for(i=9;i>=conti.length;i--){
|
||||
$('#bs-popup #conto'+i).selectReset();
|
||||
console.log('#bs-popup #conto'+i);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -6,7 +6,7 @@ switch ($resource) {
|
||||
case 'get_conti':
|
||||
$idmastrino = get('idmastrino');
|
||||
$conti = [];
|
||||
$rs_conti = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM co_pianodeiconti3 WHERE id=co_movimenti_modelli.idconto) AS descrizione_conto FROM co_movimenti_modelli WHERE idmastrino='.prepare($idmastrino).' GROUP BY id');
|
||||
$rs_conti = $dbo->fetchArray('SELECT *, (SELECT CONCAT ((SELECT numero FROM co_pianodeiconti2 WHERE id=co_pianodeiconti3.idpianodeiconti2), ".", numero, " ", descrizione) FROM co_pianodeiconti3 WHERE id=co_movimenti_modelli.idconto) AS descrizione_conto FROM co_movimenti_modelli WHERE idmastrino='.prepare($idmastrino).' GROUP BY id ORDER BY id');
|
||||
|
||||
for ($i = 0; $i < sizeof($rs_conti); ++$i) {
|
||||
$conti[$i] = $rs_conti[$i]['idconto'].';'.$rs_conti[$i]['descrizione_conto'];
|
||||
|
@ -127,8 +127,10 @@ echo '
|
||||
?>
|
||||
|
||||
</table>
|
||||
|
||||
<a onclick="launch_modal( 'Aggiungi prima nota', '<?php echo $rootdir; ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>&iddocumento=<?php echo $record['iddocumento']; ?>&dir=<?php echo $dir; ?>', 1 );" class="btn btn-sm btn-primary pull-right"><i class="fa fa-euro"></i> <?php echo tr('Aggiungi prima nota...'); ?></a>
|
||||
|
||||
<div class='pull-right'>
|
||||
<a onclick="launch_modal( 'Aggiungi prima nota', '<?php echo $rootdir; ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>&iddocumento=<?php echo $record['iddocumento']; ?>&dir=<?php echo $dir; ?>', 1 );" class="btn btn-sm btn-primary"><i class="fa fa-euro"></i> <?php echo tr('Aggiungi prima nota...'); ?></a>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
|
@ -150,3 +150,31 @@ UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS('' '', REPLACE(REPLACE(REPLA
|
||||
|
||||
-- Aggiunta idsede anche preventivi (completamento 2.4.1)
|
||||
ALTER TABLE `co_preventivi` ADD `idsede` INT NOT NULL AFTER `idanagrafica`;
|
||||
|
||||
-- Aggiunta flag riba per tipi di pagamento Ri.Ba.
|
||||
ALTER TABLE `co_pagamenti` ADD `riba` TINYINT(1) NOT NULL DEFAULT '0' AFTER `codice_modalita_pagamento_fe`;
|
||||
UPDATE `co_pagamenti` SET `riba` = 1 WHERE `descrizione` LIKE 'Ri.Ba.%';
|
||||
|
||||
-- Creazione nuovo conto per anticipi Ri.Ba.
|
||||
INSERT INTO `co_pianodeiconti3` (`id`, `numero`, `descrizione`, `idpianodeiconti2`, `dir`, `can_delete`, `can_edit`) VALUES (NULL, '000021', 'Banca C/C (conto anticipi)', '1', '', '0', '0');
|
||||
|
||||
-- Aggiunta colonna nome per i modelli primanota
|
||||
ALTER TABLE `co_movimenti_modelli` ADD `nome` VARCHAR(255) NOT NULL AFTER `idmastrino`;
|
||||
|
||||
UPDATE `zz_views` SET `name` = 'Nome', `query` = 'co_movimenti_modelli.nome' WHERE `zz_views`.`id_module` = (SELECT id FROM zz_modules WHERE name='Modelli prima nota') AND `zz_views`.`name`='Causale predefinita';
|
||||
UPDATE `zz_views` SET `query` = 'co_movimenti_modelli.idmastrino' WHERE `zz_views`.`id_module` = (SELECT id FROM zz_modules WHERE name='Modelli prima nota') AND `zz_views`.`name`='id';
|
||||
|
||||
-- Modelli primanota default
|
||||
INSERT INTO `co_movimenti_modelli` (`id`, `idmastrino`, `nome`, `descrizione`, `idconto`) VALUES
|
||||
(NULL, 1, 'Anticipo fattura', 'Anticipo fattura num. {numero} del {data}', -1),
|
||||
(NULL, 1, 'Anticipo fattura', 'Anticipo fattura num. {numero} del {data}', (SELECT id FROM co_pianodeiconti3 WHERE descrizione = 'Banca C/C (conto anticipi)')),
|
||||
(NULL, 1, 'Anticipo fattura', 'Anticipo fattura num. {numero} del {data}', (SELECT id FROM co_pianodeiconti3 WHERE descrizione = 'Spese bancarie')),
|
||||
(NULL, 2, 'Accredito anticipo', 'Accredito anticipo fattura num. {numero} del {data}', (SELECT id FROM co_pianodeiconti3 WHERE descrizione = 'Banca C/C (conto anticipi)')),
|
||||
(NULL, 2, 'Accredito anticipo', 'Accredito anticipo fattura num. {numero} del {data}', (SELECT id FROM co_pianodeiconti3 WHERE descrizione = 'Banca C/C'));
|
||||
|
||||
-- Segmenti per modulo scadenzario
|
||||
INSERT INTO `zz_segments` (`id`, `id_module`, `name`, `clause`, `position`, `pattern`, `note`, `predefined`, `predefined_accredito`, `predefined_addebito` `is_fiscale`) VALUES
|
||||
(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);
|
Loading…
x
Reference in New Issue
Block a user