[ 'table' => 'dt_ddt', // Tabella del documento 'rows' => 'dt_righe_ddt', // Tabella delle righe 'id' => 'idddt', // ID nella tabella delle righe 'condition' => '(id_riga_documento IS NOT NULL)', // Condizione per i seriali ], 'ord' => [ 'table' => 'or_ordini', 'rows' => 'or_righe_ordini', 'id' => 'idordine', 'condition' => '(id_riga_ddt IS NOT NULL OR id_riga_documento IS NOT NULL)', ], 'fat' => [ 'table' => 'co_documenti', 'rows' => 'co_righe_documenti', 'id' => 'iddocumento', 'condition' => '(1 = 2)', 'allow-empty' => true, ], ]; $documento = get('documento'); if ($module['name'] == 'Ordini cliente' || $module['name'] == 'Ordini fornitore') { $pos = 'ord'; $op = ($documento == 'ddt') ? 'ddt_da_ordine' : 'fattura_da_ordine'; $head = tr('Ordine numero _NUM_'); $dir = ($module['name'] == 'Ordini cliente') ? 'entrata' : 'uscita'; } elseif ($module['name'] == 'Ddt di vendita' || $module['name'] == 'Ddt di acquisto') { $pos = 'ddt'; $op = 'fattura_da_ddt'; $head = tr('Ddt numero _NUM_'); $dir = ($module['name'] == 'Ddt di vendita') ? 'entrata' : 'uscita'; } else { $pos = 'fat'; $op = 'nota_credito'; $head = tr('Fattura numero _NUM_'); $dir = 'entrata'; } $table = $data[$pos]['table']; $rows = $data[$pos]['rows']; $id = $data[$pos]['id']; $row = str_replace('id', 'id_riga_', $id); if ($module['name'] == 'Ordini cliente') { $module_name = ($documento == 'ddt') ? 'Ddt di vendita' : 'Fatture di vendita'; } elseif ($module['name'] == 'Ordini fornitore') { $module_name = ($documento == 'ddt') ? 'Ddt di acquisto' : 'Fatture di acquisto'; } elseif ($module['name'] == 'Ddt di acquisto') { $module_name = 'Fatture di acquisto'; } else { $module_name = 'Fatture di vendita'; } $op = !empty(get('op')) ? get('op') : $op; $button = ($documento == 'ddt') ? tr('Crea ddt') : tr('Crea fattura'); $button = !empty(get('op')) ? tr('Aggiungi') : $button; // Info documento $rs = $dbo->fetchArray('SELECT * FROM '.$table.' WHERE id='.prepare($id_record)); $numero = !empty($rs[0]['numero_esterno']) ? $rs[0]['numero_esterno'] : $rs[0]['numero']; $idanagrafica = $rs[0]['idanagrafica']; $idpagamento = $rs[0]['idpagamento']; $idconto = $rs[0]['idconto']; if (empty($idconto)) { $idconto = ($dir == 'entrata') ? setting('Conto predefinito fatture di vendita') : setting('Conto predefinito fatture di acquisto'); } /* Form di inserimento riga documento */ echo '

'.str_replace('_NUM_', $numero, $head).'.

'; // Selezione articoli dell'ordine da portare nel ddt $rs = $dbo->fetchArray('SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),"") AS codice, (qta - qta_evasa) AS qta_rimanente FROM '.$table.' INNER JOIN '.$rows.' ON '.$table.'.id='.$rows.'.'.$id.' WHERE '.$table.'.id='.prepare($id_record).' HAVING qta_rimanente > 0 ORDER BY `order`'); if (!empty($rs)) { echo '

'.tr('Seleziona le righe e le relative quantità da inserire nel documento').'.

'; if (empty(get('op'))) { echo '
{[ "type": "date", "label": "'.tr('Data del documento').'", "name": "data", "required": 1, "value": "-now-" ]}
'; if ($module_name == 'Fatture di vendita' || $module_name == 'Fatture di acquisto') { $rs_segment = $dbo->fetchArray("SELECT * FROM zz_segments WHERE predefined_accredito='1'"); if ($op == 'nota_accredito' && sizeof($rs_segment) > 0) { echo '
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.prepare(Modules::get($module_name)['id']).' ORDER BY name", "value": "'.$rs_segment[0]['id'].'" ]}
'; } else { echo '
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.prepare(Modules::get($module_name)['id']).' ORDER BY name", "value": "'.$_SESSION['module_'.Modules::get($module_name)['id']]['id_segment'].'" ]}
'; } } echo '
'; } echo '

'; $totale = 0.00; foreach ($rs as $i => $r) { // Descrizione echo ' '; // Q.tà rimanente echo ' '; // Q.tà da evadere echo ' '; // Subtotale $subtotale = $r['subtotale'] / $r['qta'] * ($r['qta'] - $r['qta_evasa']); $sconto = $r['sconto'] / $r['qta'] * ($r['qta'] - $r['qta_evasa']); $iva = $r['iva'] / $r['qta'] * ($r['qta'] - $r['qta_evasa']); echo ' '; // Seriali echo ' '; $totale += $subtotale - $sconto + $iva; } // Totale echo '
'.tr('Descrizione').' '.tr('Q.tà').' '.tr('Q.tà da evadere').' '.tr('Subtot.').' '.tr('Seriali').'
'; // Checkbox - da evadere? echo ' '; $descrizione = (!empty($r['codice']) ? $r['codice'].' - ' : '').$r['descrizione']; echo ' '.nl2br($descrizione); echo '

'.Translator::numberToLocale($r['qta_rimanente']).'

{[ "type": "number", "name": "qta_da_evadere['.$r['id'].']", "id": "qta_'.$i.'", "required": 1, "value": "'.$r['qta_rimanente'].'", "extra" : "onkeyup=\"ricalcola_subtotale_riga('.$i.');\"", "decimals": "qta", "min-value": "0" ]} '.Translator::numberToLocale($subtotale - $sconto + $iva).' €
'.Translator::numberToLocale($subtotale - $sconto).' + '.Translator::numberToLocale($iva).'
'; if (!empty($r['abilita_serial'])) { $query = 'SELECT DISTINCT serial AS id, serial AS descrizione FROM mg_prodotti WHERE dir='.prepare($dir).' AND '.$row.' = '.prepare($r['id']).' AND serial IS NOT NULL AND serial NOT IN (SELECT serial FROM mg_prodotti AS t WHERE serial IS NOT NULL AND dir='.prepare($dir).' AND '.$data[$pos]['condition'].')'; $values = $dbo->fetchArray($query); if (!empty($values)) { echo ' {[ "type": "select", "name": "serial['.$r['id'].'][]", "id": "serial_'.$i.'", "multiple": 1, "values": "query='.$query.'", "value": "'.implode(',', array_column($values, 'id')).'", "extra": "data-maximum=\"'.intval($r['qta_rimanente']).'\"" ]}'; } else { echo '-'; } } else { echo '-'; } echo '
'.tr('Totale').': '.Translator::numberToLocale($totale).' €
'; echo '
'; } else { echo '

'.tr('Non ci sono articoli da evadere').'...

'; } echo ' '; ?>