[ 'table' => 'dt_ddt', 'rows' => 'dt_righe_ddt', 'id' => 'idddt', 'condition' => '(id_riga_documento IS NOT NULL)', ], 'ord' => [ 'table' => 'or_ordini', 'rows' => 'or_righe_ordini', 'id' => 'idordine', 'condition' => '(id_riga_ddt IS NOT NULL OR id_riga_documento IS NOT NULL)', ], ]; $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_'); } else { $pos = 'ddt'; $op = 'fattura_da_ddt'; $head = tr('Ddt numero _NUM_'); } $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'] == 'Ddt di vendita') { $dir = 'entrata'; } else { $dir = 'uscita'; } 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'; } elseif ($module['name'] == 'Ddt di vendita') { $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']; /* Form di inserimento riga documento */ echo '

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

'; // Selezione articoli dell'ordine da portare nel ddt $rs = $dbo->fetchArray('SELECT *, (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'); 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-" ]}
'; } 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 ' '; echo nl2br($r['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|0" ]} '.Translator::numberToLocale($subtotale - $sconto + $iva).' €
'.Translator::numberToLocale($subtotale - $sconto).' + '.Translator::numberToLocale($iva).'
'; if (!empty($r['abilita_serial'])) { $values = $dbo->fetchArray('SELECT DISTINCT serial FROM mg_prodotti WHERE dir=\''.$dir.'\' AND '.$row.' = \''.$r['id'].'\' AND serial IS NOT NULL AND serial NOT IN (SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND dir=\''.$dir.'\' AND '.$data[$pos]['condition'].')'); echo ' {[ "type": "select", "name": "serial['.$i.']['.$r['id'].']", "id": "serial_'.$i.'", "multiple": 1, "values": "query=SELECT DISTINCT serial AS id, serial AS descrizione FROM mg_prodotti WHERE dir=\''.$dir.'\' AND '.$row.' = \''.$r['id'].'\' AND serial IS NOT NULL AND serial NOT IN (SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND dir=\''.$dir.'\' AND '.$data[$pos]['condition'].')", "value": "'.implode(',', array_column($values, 'serial')).'", "extra": "data-maximum=\"'.intval($r['qta_rimanente']).'\"" ]} '; } else { echo '-'; } echo '
'.tr('Totale').': '.Translator::numberToLocale($totale).' €
'; echo '
'; } else { echo '

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

'; } echo ' '; ?>