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);
         }
     }
 }