id)." AND (SELECT dir FROM or_tipiordine WHERE or_tipiordine.id=or_ordini.idtipoordine) = '|direzione|' AND (or_righe_ordini.qta - or_righe_ordini.qta_evasa) > 0 GROUP BY or_ordini.id HAVING qta_ordinata > 0"; /* ** Impegnato */ echo '
'.tr('Quantità impegnate in ordini cliente che non siano già completamente evasi o articoli in cesta commessa').'

'.tr('Impegnato').'

'; $ordini = $dbo->fetchArray(str_replace('|dir|', 'entrata', $query)); $impegnato = sum(array_column($ordini, 'qta_ordinata')); if (!empty($ordini)) { echo ' '; $modulo = Modules::get('Ordini cliente'); foreach ($ordini as $documento) { $numero = !empty($documento['numero_esterno']) ? $documento['numero_esterno'] : $documento['numero']; $qta = $documento['qta_ordinata']; echo ' '; } echo '
'.tr('Descrizione').' '.tr('Qta').'
'.Modules::link($modulo['id'], $documento['id'], tr('Ordine num. _NUM_ del _DATE_', [ '_NUM_' => $numero, '_DATE_' => dateFormat($documento['data']), ])).' '.numberFormat($qta).' '.$documento['um'].'
'.tr('Totale').' '.numberFormat($impegnato).'
'; } else { echo '

'.tr('Nessun ordine cliente con quantità da evadere individuato').'.

'; } echo '
'; /* ** In ordine */ echo '
'.tr('Quantità ordinate al fornitore in ordini che non siano già completamente evasi').'

'.tr('In ordine').'

'; $ordini = $dbo->fetchArray(str_replace('|dir|', 'uscita', $query)); $ordinato = sum(array_column($ordini, 'qta_ordinata')); if (!empty($ordini)) { echo ' '; $modulo = Modules::get('Ordini fornitore'); foreach ($ordini as $documento) { $numero = !empty($documento['numero_esterno']) ? $documento['numero_esterno'] : $documento['numero']; $qta = $documento['qta_ordinata']; echo ' '; } echo '
'.tr('Descrizione').' '.tr('Qta').'
'.Modules::link($modulo['id'], $documento['id'], tr('Ordine num. _NUM_ del _DATE_', [ '_NUM_' => $numero, '_DATE_' => dateFormat($documento['data']), ])).' '.numberFormat($qta).' '.$documento['um'].'
'.tr('Totale').' '.numberFormat($ordinato).'
'; } else { echo '

'.tr('Nessun ordine fornitore con quantità da evadere individuato').'.

'; } echo '
'; /** ** Da ordinare. */ $qta_presente = $articolo->qta > 0 ? $articolo->qta : 0; $diff = ($qta_presente - $impegnato + $ordinato) * -1; $da_ordinare = $diff < 0 ? 0 : $diff; echo '
'.tr('Quantità richieste dal cliente meno le quantità già ordinate').'

'.tr('Da ordinare').'

'.numberFormat($da_ordinare).' '.$articolo->um.'
'; /** ** Disponibile. */ $qta_disponibile = $qta_presente - $impegnato; $disponibile = $qta_presente < 0 ? 0 : $qta_presente; echo '
'.tr('Quantità disponibili nel magazzino').'

'.tr('Disponibile').'

'.numberFormat($disponibile).' '.$articolo->um.'
'; $sedi = $dbo->fetchArray('(SELECT "0" AS id, "Sede legale" AS nomesede) UNION (SELECT id, CONCAT(nomesede, " - ", citta ) AS nomesede FROM an_sedi WHERE idanagrafica='.prepare(setting('Azienda predefinita')).')'); echo '

'.tr('Giacenze').'

'; foreach ($sedi as $sede) { // Lettura movimenti delle mie sedi $qta_azienda = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_azienda= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_azienda WHERE mg_movimenti.idarticolo=".prepare($id_record).' AND idsede_azienda='.prepare($sede['id']).' GROUP BY idsede_azienda'); // Lettura eventuali movimenti ad una propria sede (nel caso di movimenti fra sedi della mia azienda) if ($sede['id'] != 0) { $qta_controparte = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_controparte= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte WHERE mg_movimenti.idarticolo=".prepare($id_record).' AND idsede_controparte='.prepare($sede['id']).' GROUP BY idsede_controparte'); } else { $qta_controparte = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_controparte= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM ((( mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte ) LEFT JOIN dt_ddt ON mg_movimenti.idddt = dt_ddt.id ) LEFT JOIN co_documenti ON mg_movimenti.iddocumento = co_documenti.id ) WHERE mg_movimenti.idarticolo=".prepare($id_record).' AND idsede_controparte='.prepare($sede['id']).' AND IFNULL( dt_ddt.idanagrafica, co_documenti.idanagrafica ) = '.prepare(setting('Azienda predefinita')).' GROUP BY idsede_controparte'); } echo ' '; } echo '
'.tr('Sede').' '.tr('Q.tà').'
'.$sede['nomesede'].' '.Translator::numberToLocale($qta_azienda['qta'] - $qta_controparte['qta']).'
';