public function addtolocalAction() { $form = new Application_Form_Addtolocal(); $this->view->form = $form; if ($this->getRequest()->isPost()) { $formData = $this->getRequest()->getPost(); if ($form->isValid($formData)) { $cajatarea = new Application_Model_DbTable_Cajatarea(); $destinatario = new Application_Model_DbTable_Destinatario(); $documentoPrincipal = new Application_Model_DbTable_Documentoprincipal(); $docHasDestinatario = new Application_Model_DbTable_Documentohasdestinatario(); $documentoSecundario = new Application_Model_DbTable_Documentosecundario(); $inventario = new Application_Model_DbTable_Inventario(); $investado = new Application_Model_DbTable_Investado(); $transaccion = new Application_Model_DbTable_Transaccion(); $transporte = new Application_Model_DbTable_Transporte(); $principalHasSecundario = new Application_Model_DbTable_Principalhassecundario(); $inventarioHasTransaccion = new Application_Model_DbTable_Inventariohastransaccion(); $usuarioInfo = Zend_Auth::getInstance()->getStorage()->read(); $fecha = date('Y/m/d H:i:s'); if ($formData['tipoSubmit'] == "procesar") { $investadoArr = $investado->getInvestado2("En tránsito"); } $id_investado = $investadoArr['inve_id_inv_estado']; //MANEJO DE INVENTARIO, SE DIVIDE EN FILAS CON LOS DATOS DE LA GUIA DESPACHO/FACTURA $filaInventario = explode('-', $formData['stringMercanciaInput']); //INDICES DE LA FILA DE INVENTARIO: 0 => string '',1 => codigo, 2 => cant. cajas, 3 al 8 => talla/cantidad, 9 => total mercaderia, 10 => subtotal, 11 => '' for ($i = 0; $i < count($filaInventario); $i++) { $columnaInventario = explode('|', $filaInventario[$i]); // SEPARA LAS COLUMNAS 3 a 8, que contienen TALLA/CANTIDAD for ($j = 3, $k = 0; $j < 9; $j++, $k++) { $duplaCurva = explode(',', $columnaInventario[$j]); $tallaCurva[$k] = $duplaCurva[0]; // ARREGLO DE TALLAS $cantidadCurva[$k] = $duplaCurva[1]; // ARREGLO DE CANTIDAD if ($k == 0) { $curva = $duplaCurva[1]; } else { $curva .= ',' . $duplaCurva[1]; } } $columnaInventario['curva'] = $curva; $columnaInventario['completa'] = "1"; //1 COMPLETA, 0 INCOMPLETA //No se agrega una caja nueva, ya que existe en la bodega principal, //hay que buscar si existe la cantidad de cajas de la mercaderia a enviar a local, //solamente son cuando el estado de inventario es 'disponible' //buscar lista de Cajas para MARCAR COMO 'EN TRANSITO' $listaCajasInv = $cajatarea->getListaCajatarea($columnaInventario['1'], "Bodega Principal", "Disponible", "1"); $cantCajasInv = count($listaCajasInv); if ($columnaInventario[2] <= $cantCajasInv) { //si se pide menos que la cant de cajas disponibles en bodega for ($h = 0; $h < $columnaInventario[2]; $h++) { // cantidad de cajas pedidas //buscar lista de inventario para cada caja a MARCAR COMO 'EN TRANSITO', ordenar por id de caja ASC $listaInventarioPorCaja = $inventario->getListaPorCajaInventario($listaCajasInv[$h]['cjt_id_caja_tarea'], "Bodega Principal", "Disponible", "1"); for ($g = 0; $g < count($listaInventarioPorCaja); $g++) { //Para cada talla de la caja $listaInventarioPorCaja[$g]['inve_id_inv_estado'] = $id_investado; $listaInventarioPorCaja[$g]['inv_fecha'] = $fecha; $id_inventario = $inventario->updateInventario($listaInventarioPorCaja[$g]); // EDITA INVENTARIO, ESTADO = 'en transito' $indice = $g + 6 * $h; $id_inventarioArr[$indice] = $id_inventario; } } } } if ($formData['dop_numero_identificador'] == '' && $formData['dos_numero_identificador'] != '') { //seleccionar tipo de documento principal = factura/guiadespacho $formData['dop_tipo_doc_principal'] = "Guía de Despacho"; $formData['dop_numero_identificador'] = $formData['dos_numero_identificador']; $formData['dos_numero_identificador'] = ""; } else { if ($formData['dop_numero_identificador'] != '' && $formData['dos_numero_identificador'] == '') { $formData['dop_tipo_doc_principal'] = "Factura"; } else { if ($formData['dop_numero_identificador'] != '' && $formData['dos_numero_identificador'] != '') { $formData['dop_tipo_doc_principal'] = "Factura"; } else { $formData['dop_tipo_doc_principal'] = "No disponible"; } } } $formData['fecha'] = $fecha; $destinatarioArr2 = $destinatario->getDestinatarioPorId($formData['des_id_destinatario']); //get nombre de salida $destinatarioArr2->toArray(); $formData['des_salida'] = $destinatarioArr2[0]['des_nombre']; $destinatarioArr = $destinatario->getDestinatarioPorId($formData['des_id_destinatario2']); //get nombre de llegada $destinatarioArr->toArray(); $formData['dop_empresa_relacionada'] = $destinatarioArr[0]['des_nombre']; $formData['dop_tipo_motivo'] = "Entrega"; $id_docPrincipal = $documentoPrincipal->addDocumentoPrincipal($formData); // AGREGA DOCUMENTO PRINCIPAL $time_salida = $fecha; $time_llegada = DateTime::createFromFormat('d/m/Y', '01/01/2000')->format('Y/m/d H:i:s'); //AL INGRESAR AUN NO SE SABE LA FECHA DE LLEGADA $formData['ctr_fecha_salida'] = $time_salida; $formData['ctr_fecha_llegada'] = $time_llegada; $id_transporte = $transporte->addTransporte($formData); // AGREGA TRANSPORTE //ORIGEN $docHasDestinatarioArr['dop_id_documento_principal'] = $id_docPrincipal; $docHasDestinatarioArr['des_id_destinatario'] = $formData['des_id_destinatario']; $docHasDestinatarioArr['dhdo_tipo'] = 'Origen'; $docHasDestinatario->addDocumentohasdestinatario($docHasDestinatarioArr); // DOCUMENTO HAS DESTINATARIO (Origen) //DESTINATARIO $docHasDestinatarioArr['des_id_destinatario'] = $formData['des_id_destinatario2']; $docHasDestinatarioArr['dhdo_tipo'] = 'Destinatario'; $docHasDestinatario->addDocumentohasdestinatario($docHasDestinatarioArr); // DOCUMENTO HAS DESTINATARIO (Destinatario/llegada) if ($formData['dos_numero_identificador'] != '') { $id_docSecundario = $documentoSecundario->addDocumentoSecundario($formData['dos_numero_identificador']); // DOCUMENTO SECUNDARIO $prinHasSecArr['id_principal'] = $id_docPrincipal; $prinHasSecArr['id_secundario'] = $id_docSecundario; $principalHasSecundario->addPrincipalHasSecundario($prinHasSecArr); // DOCUMENTO PRINCIPAL HAS SECUNDARIO } if ($formData['tipoSubmit'] == "procesar") { $formData['tra_tipo_motivo'] = "Hacia Local (En Tránsito)"; } else { if ($formData['tipoSubmit'] == "finalizar") { $formData['tra_tipo_motivo'] = "Hacia Local (Finalizada)"; } } $transaccionArr = array('dop_id_documento_principal' => $id_docPrincipal, 'ctr_id_transporte' => $id_transporte, 'tra_tipo_motivo' => $formData['tra_tipo_motivo'], 'tra_fecha_inicio' => $fecha, 'tra_fecha_finalizacion' => '', 'tra_rut_autorizado_inicio' => $usuarioInfo->usu_rut, 'tra_rut_autorizado_final' => '', 'tra_tipo' => $formData['dop_tipo_doc_principal'], 'tra_raw_mercaderia_input' => $formData['stringMercanciaInput']); $id_transaccion = $transaccion->addTransaccion($transaccionArr); // TRANSACCION for ($i = 0; $i < count($id_inventarioArr); $i++) { $invHasTransaccionArr = array('tra_id_transaccion' => $id_transaccion, 'inv_id_inventario' => $id_inventarioArr[$i], 'iht_fecha' => $fecha); $inventarioHasTransaccion->addInventariohastransaccion($invHasTransaccionArr); // INVENTARIO HAS TRANSACCION } //$this->_helper->redirector('index'); $returnUrl = $form->getElement('returnUrl')->getValue(); if (!empty($returnUrl)) { $this->_helper->getHelper('Redirector')->setGotoUrl($returnUrl); } } else { $form->populate($formData); } } }