function llenarPropiedadesMovimiento($encabezado, $detalle, $origen = 'interface', $listaprecio = '', $listapreciotercero = '', $mediopago = array())
 {
     $ruta = dirname(realpath(__FILE__)) . DIRECTORY_SEPARATOR;
     // instanciamos la clase movimiento y llenamos sus propiedades para que ella se encargue de importar los datos
     require_once '../clases/movimiento.class.php';
     $movimiento = new Movimiento();
     $retorno = array();
     // contamos los registros del encabezado
     $totalreg = isset($encabezado[0]["numeroMovimiento"]) ? count($encabezado) : 0;
     //print_r($encabezado);
     //echo '<br>';
     //                 print_r($encabezado);
     //print_r($detalle);
     //                 exit();
     //echo '<br>';
     $nuevoserrores = $this->validarMovimiento($encabezado, $detalle, $listaprecio, $listapreciotercero, $origen);
     // print_r($nuevoserrores);
     //exit();
     ////
     if (!isset($nuevoserrores[0]["error"]) or $nuevoserrores[0]["error"] == '') {
         //                    echo "<br>entra1<br>";
         //                    return;
         echo 'entra1';
         for ($i = 0; $i < $totalreg; $i++) {
             //                    echo "<br> entra for encabezado<br>";
             //echo " entra if isset ";
             // para cada registro, ejecutamos el constructor de la clase para que inicialice todas las variables y arrys
             $movimiento->Movimiento();
             //echo 'registros de detalle '.count($movimiento->idMovimientoDetalle)."<br><br>";
             $movimiento->idMovimiento = isset($encabezado[$i]["idMovimiento"]) ? $encabezado[$i]["idMovimiento"] : 0;
             $movimiento->Documento_idDocumento = isset($encabezado[$i]["Documento_idDocumento"]) ? $encabezado[$i]["Documento_idDocumento"] : 0;
             $movimiento->DocumentoConcepto_idDocumentoConcepto = isset($encabezado[$i]["DocumentoConcepto_idDocumentoConcepto"]) ? $encabezado[$i]["DocumentoConcepto_idDocumentoConcepto"] : 0;
             $movimiento->prefijoMovimiento = isset($encabezado[$i]["prefijoMovimiento"]) ? $encabezado[$i]["prefijoMovimiento"] : '';
             $movimiento->sufijoMovimiento = isset($encabezado[$i]["sufijoMovimiento"]) ? $encabezado[$i]["sufijoMovimiento"] : '';
             $movimiento->fechaElaboracionMovimiento = isset($encabezado[$i]["fechaElaboracionMovimiento"]) ? $encabezado[$i]["fechaElaboracionMovimiento"] : date("Y-m-d");
             $movimiento->horaElaboracionMovimiento = isset($encabezado[$i]["horaElaboracionMovimiento"]) ? $encabezado[$i]["horaElaboracionMovimiento"] : date("H:i:s");
             // obtenemos el período contable segun la fecha de elaboracion del documento
             $sql = "Select idPeriodo\n                            From Periodo\n                            Where fechaInicialPeriodo <= '" . $movimiento->fechaElaboracionMovimiento . "' and fechaFinalPeriodo >= '" . $movimiento->fechaElaboracionMovimiento . "'";
             $bd = Db::getInstance();
             $dato = $bd->ejecutar($sql);
             $movimiento->Periodo_idPeriodo = isset($dato[0]["idPeriodo"]) ? $dato[0]["idPeriodo"] : 0;
             $sql = "Select  FormaPago_idFormaPago\n                            From    Tercero\n                            Where   idTercero = " . $encabezado[$i]["Tercero_idTercero"];
             $bd = Db::getInstance();
             $dato = $bd->ejecutar($sql);
             $movimiento->FormaPago_idFormaPago = isset($dato[0]["FormaPago_idFormaPago"]) ? $dato[0]["FormaPago_idFormaPago"] : 0;
             $sql = "Select  afectaWMSDocumento, estadoWMSDocumento\n                            From    Documento\n                            Where   idDocumento = " . $movimiento->Documento_idDocumento;
             $bd = Db::getInstance();
             $dato = $bd->ejecutar($sql);
             $movimiento->estadoWMSMovimiento = $dato[0]["afectaWMSDocumento"] == 'SI' ? $dato[0]["estadoWMSDocumento"] : 'CERRADO';
             // con el id de la forma de pago, buscamos cuantos días de pago tiene
             $sql = "Select  diasFormaPago\n                            From    FormaPago\n                            Where   idFormaPago = " . $movimiento->FormaPago_idFormaPago;
             $bd = Db::getInstance();
             $dato = $bd->ejecutar($sql);
             $dias = isset($dato[0]["diasFormaPago"]) ? $dato[0]["diasFormaPago"] : 0;
             echo 'ahi va';
             // calculamos la fecha de vencimiento según la fecha de elaboracion y la forma de pago del documento
             $movimiento->fechaVencimientoMovimiento = $this->calcularvencimiento($movimiento->fechaElaboracionMovimiento, $dias);
             $movimiento->fechaMinimaMovimiento = isset($encabezado[$i]["fechaMinimaMovimiento"]) ? $encabezado[$i]["fechaMinimaMovimiento"] : '';
             $movimiento->fechaMaximaMovimiento = isset($encabezado[$i]["fechaMaximaMovimiento"]) ? $encabezado[$i]["fechaMaximaMovimiento"] : '';
             $movimiento->fechaSolicitudMovimiento = isset($encabezado[$i]["fechaSolicitudMovimiento"]) ? $encabezado[$i]["fechaSolicitudMovimiento"] : '';
             $movimiento->numeroMovimiento = isset($encabezado[$i]["numeroMovimiento"]) ? $encabezado[$i]["numeroMovimiento"] : '';
             $movimiento->Tercero_idTercero = isset($encabezado[$i]["Tercero_idTercero"]) ? $encabezado[$i]["Tercero_idTercero"] : 0;
             $movimiento->Tercero_idPrincipal = isset($encabezado[$i]["Tercero_idPrincipal"]) ? $encabezado[$i]["Tercero_idPrincipal"] : 0;
             $movimiento->Tercero_idVendedor = isset($encabezado[$i]["Tercero_idVendedor"]) ? $encabezado[$i]["Tercero_idVendedor"] : 0;
             $movimiento->CentroCosto_idCentroCosto = isset($encabezado[$i]["CentroCosto_idCentroCosto"]) ? $encabezado[$i]["CentroCosto_idCentroCosto"] : 0;
             $movimiento->Tercero_idEntrega = isset($encabezado[$i]["Tercero_idEntrega"]) ? $encabezado[$i]["Tercero_idEntrega"] : 0;
             $movimiento->tipoMovimiento = isset($encabezado[$i]["tipoMovimiento"]) ? $encabezado[$i]["tipoMovimiento"] : 'NORMAL';
             $movimiento->tipoReferenciaInternoMovimiento = isset($encabezado[$i]["tipoReferenciaInternoMovimiento"]) ? $encabezado[$i]["tipoReferenciaInternoMovimiento"] : 0;
             $movimiento->numeroReferenciaInternoMovimiento = isset($encabezado[$i]["numeroReferenciaInternoMovimiento"]) ? $encabezado[$i]["numeroReferenciaInternoMovimiento"] : '';
             $movimiento->tipoReferenciaExternoMovimiento = isset($encabezado[$i]["tipoReferenciaExternoMovimiento"]) ? $encabezado[$i]["tipoReferenciaExternoMovimiento"] : 0;
             $movimiento->numeroReferenciaExternoMovimiento = isset($encabezado[$i]["numeroReferenciaExternoMovimiento"]) ? $encabezado[$i]["numeroReferenciaExternoMovimiento"] : '';
             $movimiento->Importacion_idImportacion = isset($encabezado[$i]["Importacion_idImportacion"]) ? $encabezado[$i]["Importacion_idImportacion"] : 0;
             $movimiento->Embarque_idEmbarque = isset($encabezado[$i]["Embarque_idEmbarque"]) ? $encabezado[$i]["Embarque_idEmbarque"] : 0;
             $movimiento->Moneda_idMoneda = isset($encabezado[$i]["Moneda_idMoneda"]) ? $encabezado[$i]["Moneda_idMoneda"] : 0;
             $movimiento->tasaCambioMovimiento = !empty($encabezado[$i]["tasaCambioMovimiento"]) ? $encabezado[$i]["tasaCambioMovimiento"] : 0;
             $movimiento->factorMovimiento = !empty($encabezado[$i]["factorMovimiento"]) ? $encabezado[$i]["factorMovimiento"] : 0;
             $movimiento->Incoterm_idIncoterm = isset($encabezado[$i]["Incoterm_idIncoterm"]) ? $encabezado[$i]["Incoterm_idIncoterm"] : 0;
             $movimiento->observacionMovimiento = isset($encabezado[$i]["observacionMovimiento"]) ? $encabezado[$i]["observacionMovimiento"] : '';
             $movimiento->totalUnidadesMovimiento = 0;
             $movimiento->valorFleteMovimiento = !empty($encabezado[$i]["valorFleteMovimiento"]) ? $encabezado[$i]["valorFleteMovimiento"] : 0;
             $movimiento->valorSeguroMovimiento = !empty($encabezado[$i]["valorSeguroMovimiento"]) ? $encabezado[$i]["valorSeguroMovimiento"] : 0;
             $movimiento->valorAcarreoMovimiento = !empty($encabezado[$i]["valorAcarreoMovimiento"]) ? $encabezado[$i]["valorAcarreoMovimiento"] : 0;
             $movimiento->estadoMovimiento = 'ACTIVO';
             $movimiento->SegLogin_idUsuarioCrea = isset($encabezado[$i]["SegLogin_idUsuarioCrea"]) ? $encabezado[$i]["SegLogin_idUsuarioCrea"] : '';
             $movimiento->impresoMovimiento = isset($encabezado[$i]["impresoMovimiento"]) ? $encabezado[$i]["impresoMovimiento"] : '';
             $movimiento->SegLogin_idUsuarioAnula = isset($encabezado[$i]["SegLogin_idUsuarioAnula"]) ? $encabezado[$i]["SegLogin_idUsuarioAnula"] : '';
             $movimiento->fechaAnuladoMovimiento = isset($encabezado[$i]["fechaAnuladoMovimiento"]) ? $encabezado[$i]["fechaAnuladoMovimiento"] : '';
             $movimiento->LiquidacionNomina_idLiquidacionNomina = isset($encabezado[$i]["LiquidacionNomina_idLiquidacionNomina"]) ? $encabezado[$i]["LiquidacionNomina_idLiquidacionNomina"] : 0;
             $movimiento->Embarque_idTransito = isset($encabezado[$i]["Embarque_idTransito"]) ? $encabezado[$i]["Embarque_idTransito"] : 0;
             $movimiento->MercanciaExtranjera_idMercanciaExtranjera = isset($encabezado[$i]["MercanciaExtranjera_idMercanciaExtranjera"]) ? $encabezado[$i]["MercanciaExtranjera_idMercanciaExtranjera"] : 0;
             $movimiento->Nacionalizacion_idNacionalizacion = isset($encabezado[$i]["Nacionalizacion_idNacionalizacion"]) ? $encabezado[$i]["Nacionalizacion_idNacionalizacion"] : 0;
             $movimiento->tipoDescuentoMovimiento = isset($encabezado[$i]["tipoDescuentoMovimiento"]) ? $encabezado[$i]["tipoDescuentoMovimiento"] : 'Porcentaje';
             $movimiento->nivelDescuentoMovimiento = isset($encabezado[$i]["nivelDescuentoMovimiento"]) ? $encabezado[$i]["nivelDescuentoMovimiento"] : 'Detalle';
             $movimiento->CentroProduccion_idCentroProduccion = isset($encabezado[$i]["CentroProduccion_idCentroProduccion"]) ? $encabezado[$i]["CentroProduccion_idCentroProduccion"] : 0;
             $movimiento->OrdenProduccion_idOrdenProduccion = isset($encabezado[$i]["OrdenProduccion_idOrdenProduccion"]) ? $encabezado[$i]["OrdenProduccion_idOrdenProduccion"] : 0;
             $movimiento->ListaPrecio_idListaPrecio = isset($encabezado[$i]["ListaPrecio_idListaPrecio"]) ? $encabezado[$i]["ListaPrecio_idListaPrecio"] : (isset($nuevoserrores[0]["ListaPrecio_idListaPrecioDetalle"]) ? $nuevoserrores[0]["ListaPrecio_idListaPrecioDetalle"] : 0);
             $subtotal = 0;
             $descuento = 0;
             $base = 0;
             $impuesto = 0;
             $retencion = 0;
             $reteiva = 0;
             $totalUnidades = 0;
             // por cada registro del encabezado, recorremos el detalle para obtener solo los datos del mismo numero de movimiento del encabezado, con estos
             // llenamos arrays por cada campo
             $totaldet = isset($detalle[0]["numeroMovimiento"]) ? count($detalle) : 0;
             $ids = '';
             $precios = '';
             $descuentos = '';
             $cants = '';
             $regs = '';
             $ivas = '';
             $totalBaseImp = 0;
             $totalImp = 0;
             $totalImpoc = 0;
             $totalIva = 0;
             $totalImpDep = 0;
             // llevamos un contador de registros por cada producto del detalle
             $registroact = 0;
             for ($j = 0; $j < $totaldet; $j++) {
                 if (isset($encabezado[$i]["Documento_idDocumento"]) and isset($detalle[$j]["Documento_idDocumento"]) and $encabezado[$i]["Documento_idDocumento"] == $detalle[$j]["Documento_idDocumento"]) {
                     if (isset($encabezado[$i]["numeroMovimiento"]) and isset($detalle[$j]["numeroMovimiento"]) and $encabezado[$i]["numeroMovimiento"] == $detalle[$j]["numeroMovimiento"]) {
                         $sql = "Select   Impuesto_idImpuesto\n                                        From    viewProductoImpuesto\n                                        Where   idProducto IN (" . $detalle[$j]["Producto_idProducto"] . ")";
                         $bd = Db::getInstance();
                         $dato = $bd->ejecutar($sql);
                         $idImpuesto = isset($dato[0]['Impuesto_idImpuesto']) ? $dato[0]['Impuesto_idImpuesto'] : 0;
                         $sql = "Select   Retencion_idRetencion\n                                        From    viewProductoRetencion\n                                        Where   idProducto IN (" . $detalle[$j]["Producto_idProducto"] . ")";
                         $bd = Db::getInstance();
                         $dato = $bd->ejecutar($sql);
                         $idRetencion = isset($dato[0]['Retencion_idRetencion']) ? $dato[0]['Retencion_idRetencion'] : 0;
                         $movimiento->idMovimientoDetalle[$registroact] = 0;
                         $movimiento->Bodega_idBodegaOrigen[$registroact] = isset($detalle[$j]["Bodega_idBodegaOrigen"]) ? $detalle[$j]["Bodega_idBodegaOrigen"] : 0;
                         $movimiento->Bodega_idBodegaDestino[$registroact] = isset($detalle[$j]["Bodega_idBodegaDestino"]) ? $detalle[$j]["Bodega_idBodegaDestino"] : 0;
                         $movimiento->ProductoSerie_idProductoSerie[$registroact] = isset($detalle[$j]["ProductoSerie_idProductoSerie"]) ? $detalle[$j]["ProductoSerie_idProductoSerie"] : 0;
                         $movimiento->numeroProductoSerie[$registroact] = isset($detalle[$j]["numeroProductoSerie"]) ? $detalle[$j]["numeroProductoSerie"] : 0;
                         $movimiento->numeroLoteMovimientoDetalle[$registroact] = isset($detalle[$j]["numeroLoteMovimientoDetalle"]) ? $detalle[$j]["numeroLoteMovimientoDetalle"] : '';
                         $movimiento->Movimiento_idDocumentoRef[$registroact] = isset($detalle[$j]["Movimiento_idDocumentoRef"]) ? $detalle[$j]["Movimiento_idDocumentoRef"] : 0;
                         $movimiento->Poliza_idPoliza[$registroact] = isset($detalle[$j]["Poliza_idPoliza"]) ? $detalle[$j]["Poliza_idPoliza"] : 0;
                         $movimiento->Producto_idProducto[$registroact] = isset($detalle[$j]["Producto_idProducto"]) ? $detalle[$j]["Producto_idProducto"] : 0;
                         $movimiento->Producto_idSustitutoPrincipal[$registroact] = isset($detalle[$j]["Producto_idProducto"]) ? $detalle[$j]["Producto_idProducto"] : 0;
                         $movimiento->Tercero_idAlmacen[$registroact] = isset($detalle[$j]["Tercero_idAlmacen"]) ? $detalle[$j]["Tercero_idAlmacen"] : 0;
                         $movimiento->cantidadMovimientoDetalle[$registroact] = isset($detalle[$j]["cantidadMovimientoDetalle"]) ? $detalle[$j]["cantidadMovimientoDetalle"] : 0;
                         $movimiento->ListaPrecio_idListaPrecioDetalle[$registroact] = isset($encabezado[$i]["ListaPrecio_idListaPrecio"]) ? $encabezado[$i]["ListaPrecio_idListaPrecio"] : (isset($nuevoserrores[$j]["ListaPrecio_idListaPrecioDetalle"]) ? $nuevoserrores[$j]["ListaPrecio_idListaPrecioDetalle"] : 0);
                         $movimiento->precioListaMovimientoDetalle[$registroact] = isset($nuevoserrores[$j]["precioListaMovimientoDetalle"]) ? $nuevoserrores[$j]["precioListaMovimientoDetalle"] : (isset($detalle[$j]["precioListaMovimientoDetalle"]) ? $detalle[$j]["precioListaMovimientoDetalle"] : 0);
                         $movimiento->valorBrutoMovimientoDetalle[$registroact] = isset($nuevoserrores[$j]["valorBrutoMovimientoDetalle"]) ? $nuevoserrores[$j]["valorBrutoMovimientoDetalle"] : (isset($detalle[$j]["valorBrutoMovimientoDetalle"]) ? $detalle[$j]["valorBrutoMovimientoDetalle"] : 0);
                         $movimiento->BodegaUbicacion_idBodegaUbicacionOrigen = isset($detalle[$j]["BodegaUbicacion_idBodegaUbicacionOrigen"]) ? $detalle[$j]["BodegaUbicacion_idBodegaUbicacionOrigen"] : 0;
                         $movimiento->BodegaUbicacion_idBodegaUbicacionDestino[$registroact] = isset($detalle[$j]["BodegaUbicacion_idBodegaUbicacionDestino"]) ? $detalle[$j]["BodegaUbicacion_idBodegaUbicacionDestino"] : 0;
                         $movimiento->Embalaje_idEmbalaje[$registroact] = isset($detalle[$j]["Embalaje_idEmbalaje"]) ? $detalle[$j]["Embalaje_idEmbalaje"] : 0;
                         $movimiento->CentroCosto_idCentroCostoDetalle[$registroact] = isset($detalle[$j]["CentroCosto_idCentroCostoDetalle"]) ? $detalle[$j]["CentroCosto_idCentroCostoDetalle"] : 0;
                         // descuento comercial
                         $movimiento->porcentajeDescuentoMovimientoDetalle[$registroact] = isset($detalle[$j]["porcentajeDescuentoMovimientoDetalle"]) ? $detalle[$j]["porcentajeDescuentoMovimientoDetalle"] : 0;
                         $movimiento->valorDescuentoMovimientoDetalle[$registroact] = (isset($nuevoserrores[$j]["valorBrutoMovimientoDetalle"]) ? $nuevoserrores[$j]["valorBrutoMovimientoDetalle"] : (isset($detalle[$j]["valorBrutoMovimientoDetalle"]) ? $detalle[$j]["valorBrutoMovimientoDetalle"] : 0)) * (isset($detalle[$j]["porcentajeDescuentoMovimientoDetalle"]) ? $detalle[$j]["porcentajeDescuentoMovimientoDetalle"] : 0) / 100;
                         $movimiento->valorBaseMovimientoDetalle[$registroact] = (isset($nuevoserrores[$j]["valorBrutoMovimientoDetalle"]) ? $nuevoserrores[$j]["valorBrutoMovimientoDetalle"] : (isset($detalle[$j]["valorBrutoMovimientoDetalle"]) ? $detalle[$j]["valorBrutoMovimientoDetalle"] : 0)) - (isset($detalle[$j]["valorDescuentoMovimientoDetalle"]) ? $detalle[$j]["valorDescuentoMovimientoDetalle"] : 0);
                         // campos de descuento financiero para las NIIF
                         $movimiento->porcentajeDescuentoFinancieroMovimientoDetalle[$registroact] = isset($detalle[$j]["porcentajeDescuentoFinancieroMovimientoDetalle"]) ? $detalle[$j]["porcentajeDescuentoFinancieroMovimientoDetalle"] : 0;
                         $movimiento->valorDescuentoFinancieroMovimientoDetalle[$registroact] = isset($detalle[$j]["valorDescuentoFinancieroMovimientoDetalle"]) ? $detalle[$j]["valorDescuentoFinancieroMovimientoDetalle"] : 0;
                         $movimiento->valorBaseNIIFMovimientoDetalle[$registroact] = $movimiento->valorBrutoMovimientoDetalle[$registroact] - $movimiento->valorDescuentoMovimientoDetalle[$registroact] - $movimiento->valorDescuentoFinancieroMovimientoDetalle[$registroact];
                         // llenamos los id de iva y retencion antes consultados
                         $movimiento->Impuesto_idIva[$registroact] = isset($detalle[$j]["Impuesto_idIva"]) ? $detalle[$j]["Impuesto_idIva"] : 0;
                         $movimiento->Impuesto_idReteFuente[$registroact] = isset($detalle[$j]["Impuesto_idReteFuente"]) ? $detalle[$j]["Impuesto_idReteFuente"] : 0;
                         $movimiento->Impuesto_idReteCree[$registroact] = 0;
                         $movimiento->volumenTotalMovimientoDetalle[$registroact] = isset($detalle[$j]["volumenTotalMovimientoDetalle"]) ? $detalle[$j]["volumenTotalMovimientoDetalle"] : 0;
                         $movimiento->pesoTotalMovimientoDetalle[$registroact] = isset($detalle[$j]["pesoTotalMovimientoDetalle"]) ? $detalle[$j]["pesoTotalMovimientoDetalle"] : 0;
                         $movimiento->numeroCajasMovimientoDetalle[$registroact] = isset($detalle[$j]["numeroCajasMovimientoDetalle"]) ? $detalle[$j]["numeroCajasMovimientoDetalle"] : 0;
                         $movimiento->precioVentaPublicoMovimientoDetalle[$registroact] = isset($detalle[$j]["precioVentaPublicoMovimientoDetalle"]) ? $detalle[$j]["precioVentaPublicoMovimientoDetalle"] : 0;
                         $movimiento->margenUtilidadMovimientoDetalle[$registroact] = isset($detalle[$j]["margenUtilidadMovimientoDetalle"]) ? $detalle[$j]["margenUtilidadMovimientoDetalle"] : 0;
                         // datos de marcacion de productos
                         $movimiento->EtiquetaProducto_idEtiquetaProducto[$registroact] = isset($detalle[$j]["EtiquetaProducto_idEtiquetaProducto"]) ? $detalle[$j]["EtiquetaProducto_idEtiquetaProducto"] : 0;
                         $movimiento->etiquetaSeccionMovimientoDetalle[$registroact] = isset($detalle[$j]["etiquetaSeccionMovimientoDetalle"]) ? $detalle[$j]["etiquetaSeccionMovimientoDetalle"] : '';
                         $movimiento->etiquetaClasificacionMovimientoDetalle[$registroact] = isset($detalle[$j]["etiquetaClasificacionMovimientoDetalle"]) ? $detalle[$j]["etiquetaClasificacionMovimientoDetalle"] : '';
                         $movimiento->etiquetaFechaMovimientoDetalle[$registroact] = isset($detalle[$j]["etiquetaFechaMovimientoDetalle"]) ? $detalle[$j]["etiquetaFechaMovimientoDetalle"] : '';
                         $movimiento->etiquetaPrecioVentaNormalMovimientoDetalle[$registroact] = isset($detalle[$j]["etiquetaPrecioVentaNormalMovimientoDetalle"]) ? $detalle[$j]["etiquetaPrecioVentaNormalMovimientoDetalle"] : '';
                         $movimiento->etiquetaPrecioVentaOfertaMovimientoDetalle[$registroact] = isset($detalle[$j]["etiquetaPrecioVentaOfertaMovimientoDetalle"]) ? $detalle[$j]["etiquetaPrecioVentaOfertaMovimientoDetalle"] : '';
                         $movimiento->etiquetaLugarExhibicionMovimientoDetalle[$registroact] = isset($detalle[$j]["etiquetaLugarExhibicionMovimientoDetalle"]) ? $detalle[$j]["etiquetaLugarExhibicionMovimientoDetalle"] : '';
                         $movimiento->etiquetaDescripcion1MovimientoDetalle[$registroact] = isset($detalle[$j]["etiquetaDescripcion1MovimientoDetalle"]) ? $detalle[$j]["etiquetaDescripcion1MovimientoDetalle"] : '';
                         $movimiento->etiquetaDescripcion2MovimientoDetalle[$registroact] = isset($detalle[$j]["etiquetaDescripcion2MovimientoDetalle"]) ? $detalle[$j]["etiquetaDescripcion2MovimientoDetalle"] : '';
                         $movimiento->etiquetaDescripcion3MovimientoDetalle[$registroact] = isset($detalle[$j]["etiquetaDescripcion3MovimientoDetalle"]) ? $detalle[$j]["etiquetaDescripcion3MovimientoDetalle"] : '';
                         $movimiento->etiquetaReferenciaClienteMovimientoDetalle[$registroact] = isset($detalle[$j]["etiquetaReferenciaClienteMovimientoDetalle"]) ? $detalle[$j]["etiquetaReferenciaClienteMovimientoDetalle"] : '';
                         $movimiento->Lote_idLote[$registroact] = 0;
                         // inicializamos los impuestos en cero
                         $movimiento->valorIvaMovimientoDetalle[$registroact] = 0;
                         $movimiento->valorImpoconsumoMovimientoDetalle[$registroact] = 0;
                         $movimiento->valorImpDeporteMovimientoDetalle[$registroact] = 0;
                         $movimiento->valorReteCreeMovimientoDetalle[$registroact] = 0;
                         // inicializamos las retenciones en cero
                         $movimiento->valorReteIcaMovimientoDetalle[$registroact] = 0;
                         $movimiento->valorReteFuenteMovimientoDetalle[$registroact] = 0;
                         $movimiento->valorReteIvaMovimientoDetalle[$registroact] = 0;
                         //$movimiento->valorReteOtrosMovimientoDetalle[$registroact] = 0;
                         $movimiento->valorNetoMovimientoDetalle[$registroact] = $movimiento->valorBaseMovimientoDetalle[$registroact];
                         $movimiento->valorTotalMovimientoDetalle[$registroact] = $movimiento->valorBaseMovimientoDetalle[$registroact] * $movimiento->cantidadMovimientoDetalle[$registroact];
                         $movimiento->observacionMovimientoDetalle[$registroact] = isset($detalle[$j]["observacionMovimientoDetalle"]) ? $detalle[$j]["observacionMovimientoDetalle"] : '';
                         // luego de tener llenas las matrices, consultamos los impuestos y retenciones
                         //
                         $impuestos = $movimiento->consultarimpuestos($encabezado[$i]["Tercero_idTercero"], $encabezado[$i]["Documento_idDocumento"], $encabezado[$i]["DocumentoConcepto_idDocumentoConcepto"], $movimiento->Producto_idProducto[$registroact], $movimiento->cantidadMovimientoDetalle[$registroact], $movimiento->precioListaMovimientoDetalle[$registroact], $registroact, $movimiento->porcentajeDescuentoMovimientoDetalle[$registroact], $movimiento->fechaElaboracionMovimiento);
                         //print_r($impuestos);
                         // sumamos los impuestos para enviar al calculo de las retenciones la base de impuestos
                         // para esto recorremos el array de impuestos y aplicamos una suma
                         $totalregimp = isset($impuestos[0]["Producto_idProducto"]) ? count($impuestos) : 0;
                         if (isset($impuestos[0]["Producto_idProducto"])) {
                             //echo " entra if isset 3 ";
                             $totalBaseImp += $impuestos[0]["valorBaseMovimientoImpuesto"] * $impuestos[0]["cantidadMovimientoDetalle"];
                             $totalImp += $impuestos[0]["valorUnitarioMovimientoImpuesto"] * $impuestos[0]["cantidadMovimientoDetalle"];
                             // cada impuesto que recorremos, lo vamos acumulando en el campo correspondiente (segun el tipoImpuesto) y en el producto correspondiente
                             // (segun el registro del array de impuestos)
                             switch ($impuestos[0]["tipoImpuesto"]) {
                                 case 'valorImpoconsumoMovimientoDetalle':
                                     $movimiento->valorImpoconsumoMovimientoDetalle[$registroact] += $impuestos[0]["valorUnitarioMovimientoImpuesto"];
                                     $totalImpoc += $impuestos[0]["valorUnitarioMovimientoImpuesto"] * $impuestos[0]["cantidadMovimientoDetalle"];
                                     break;
                                 case 'valorIvaMovimientoDetalle':
                                     $movimiento->valorIvaMovimientoDetalle[$registroact] += $impuestos[0]["valorUnitarioMovimientoImpuesto"];
                                     $movimiento->valorBrutoMovimientoDetalle[$registroact] = $impuestos[0]["valorBrutoMovimientoImpuesto"];
                                     $movimiento->valorBaseMovimientoDetalle[$registroact] = $impuestos[0]["valorBaseMovimientoImpuesto"];
                                     $movimiento->Impuesto_idIva[$registroact] += $impuestos[0]["Impuesto_idImpuesto"];
                                     $totalIva += $impuestos[0]["valorUnitarioMovimientoImpuesto"] * $impuestos[0]["cantidadMovimientoDetalle"];
                                     break;
                                 case 'valorImpDeporteMovimientoDetalle':
                                     $movimiento->valorImpDeporteMovimientoDetalle[$registroact] += $impuestos[0]["valorUnitarioMovimientoImpuesto"];
                                     $totalImpDep += $impuestos[0]["valorUnitarioMovimientoImpuesto"] * $impuestos[0]["cantidadMovimientoDetalle"];
                                     break;
                             }
                             $ids .= $movimiento->Producto_idProducto[$registroact] . ',';
                             $precios .= $movimiento->valorBrutoMovimientoDetalle[$registroact] . ',';
                             $descuentos .= $movimiento->porcentajeDescuentoMovimientoDetalle[$registroact] . ',';
                             $cants .= $movimiento->cantidadMovimientoDetalle[$registroact] . ',';
                             $regs .= $registroact . ',';
                             $ivas .= $movimiento->valorIvaMovimientoDetalle[$registroact] * $movimiento->cantidadMovimientoDetalle[$registroact] . ',';
                             $movimiento->valorBaseMovimientoDetalle[$registroact] = $movimiento->valorBrutoMovimientoDetalle[$registroact] - $movimiento->valorDescuentoMovimientoDetalle[$registroact];
                             $movimiento->valorNetoMovimientoDetalle[$registroact] = $movimiento->valorBaseMovimientoDetalle[$registroact] + $movimiento->valorIvaMovimientoDetalle[$registroact] + $movimiento->valorImpoconsumoMovimientoDetalle[$registroact] + $movimiento->valorImpDeporteMovimientoDetalle[$registroact] - $movimiento->valorReteFuenteMovimientoDetalle[$registroact] - $movimiento->valorReteIvaMovimientoDetalle[$registroact] - $movimiento->valorReteCreeMovimientoDetalle[$registroact] - $movimiento->valorReteIcaMovimientoDetalle[$registroact];
                             $movimiento->valorTotalMovimientoDetalle[$registroact] = $movimiento->valorNetoMovimientoDetalle[$registroact] * $movimiento->cantidadMovimientoDetalle[$registroact];
                             $movimiento->margenUtilidadMovimientoDetalle[$registroact] = $movimiento->precioVentaPublicoMovimientoDetalle[$registroact] / ($movimiento->valorNetoMovimientoDetalle[$registroact] == 0 ? 1 : $movimiento->valorNetoMovimientoDetalle[$registroact] * 100);
                         }
                         $subtotal += (isset($nuevoserrores[$j]["valorBrutoMovimientoDetalle"]) ? $nuevoserrores[$j]["valorBrutoMovimientoDetalle"] : (isset($movimiento->valorBrutoMovimientoDetalle[$registroact]) ? $movimiento->valorBrutoMovimientoDetalle[$registroact] : 0)) * $detalle[$j]["cantidadMovimientoDetalle"];
                         $descuento += $movimiento->valorDescuentoMovimientoDetalle[$registroact] * $detalle[$j]["cantidadMovimientoDetalle"];
                         $totalUnidades += $detalle[$j]["cantidadMovimientoDetalle"];
                         $registroact++;
                     }
                 }
             }
             $base = $subtotal - $descuento;
             // luego de calculados los impuestos, calculamos las retenciones ya que estas dependen de la base de impuestos de documento
             $retenciones = $movimiento->consultarretenciones($encabezado[$i]["Tercero_idTercero"], $encabezado[$i]["Documento_idDocumento"], $encabezado[$i]["DocumentoConcepto_idDocumentoConcepto"], substr($ids, 0, strlen($ids) - 1), substr($cants, 0, strlen($cants) - 1), substr($precios, 0, strlen($precios) - 1), substr($ivas, 0, strlen($ivas) - 1), substr($regs, 0, strlen($regs) - 1), substr($descuentos, 0, strlen($descuentos) - 1), $totalBaseImp, $totalImp, $movimiento->tasaCambioMovimiento == 0 ? 1 : $movimiento->tasaCambioMovimiento, $movimiento->fechaElaboracionMovimiento);
             // sumamos las retenciones en los campos correspondientes
             $totalregret = isset($retenciones[0]["Producto_idProducto"]) ? count($retenciones) : 0;
             $totalReteFte = 0;
             $totalReteIva = 0;
             $totalReteIca = 0;
             $totalReteOtr = 0;
             $totalReteCree = 0;
             for ($ret = 0; $ret < $totalregret; $ret++) {
                 //                            echo " entra for 3 ";
                 // cada retencion que recorremos, la vamos acumulando en el campo correspondiente (segun el tipoRetencion) y en el producto correspondiente
                 // (segun el registro del array de retenciones)
                 switch ($retenciones[$ret]["tipoRetencion"]) {
                     case 'valorReteFuenteMovimientoDetalle':
                         $movimiento->valorReteFuenteMovimientoDetalle[(int) $retenciones[$ret]["registro"]] += $retenciones[$ret]["valorUnitarioMovimientoRetencion"];
                         $totalReteFte += $retenciones[$ret]["valorUnitarioMovimientoRetencion"] * $retenciones[$ret]["cantidadMovimientoDetalle"];
                         break;
                     case 'valorReteIcaMovimientoDetalle':
                         $movimiento->valorReteIcaMovimientoDetalle[(int) $retenciones[$ret]["registro"]] += $retenciones[$ret]["valorUnitarioMovimientoRetencion"];
                         $totalReteIca += $retenciones[$ret]["valorUnitarioMovimientoRetencion"] * $retenciones[$ret]["cantidadMovimientoDetalle"];
                         break;
                     case 'valorReteIvaMovimientoDetalle':
                         $movimiento->valorReteIvaMovimientoDetalle[(int) $retenciones[$ret]["registro"]] += $retenciones[$ret]["valorUnitarioMovimientoRetencion"];
                         $totalReteIva += $retenciones[$ret]["valorUnitarioMovimientoRetencion"] * $retenciones[$ret]["cantidadMovimientoDetalle"];
                         $afecReteIva = $retenciones[$ret]["ReteIvaAfectable"];
                         break;
                     case 'valorReteCreeMovimientoDetalle':
                         $movimiento->valorReteCreeMovimientoDetalle[(int) $retenciones[$ret]["registro"]] += $retenciones[$ret]["valorUnitarioMovimientoRetencion"];
                         $totalReteCree += $retenciones[$ret]["valorUnitarioMovimientoRetencion"] * $retenciones[$ret]["cantidadMovimientoDetalle"];
                         break;
                 }
                 //echo $retenciones[$ret]["tipoRetencion"].' = '.  $retenciones[$ret]["valorUnitarioMovimientoRetencion"]."<br>";
             }
             $movimiento->totalUnidadesMovimiento = $totalUnidades;
             $movimiento->subtotalMovimiento = $subtotal;
             $movimiento->porcentajeDescuentoMovimiento = isset($encabezado[$i]["porcentajeDescuentoMovimiento"]) ? $encabezado[$i]["porcentajeDescuentoMovimiento"] : 0;
             $movimiento->valorDescuentoMovimiento = $descuento;
             $movimiento->valorBaseMovimiento = $base;
             $movimiento->valorIvaMovimiento = $totalImp;
             // Pendiente llenar estos datos automaticamente en la importacion (son para las NIIF)
             $movimiento->porcentajeDescuentoFinancieroMovimiento = 0;
             $movimiento->valorDescuentoFinancieroMovimiento = 0;
             //$movimiento->valorBaseNIIFMovimiento = 0;
             $movimiento->valorIvaMovimiento = $totalImp;
             $movimiento->valorRetencionMovimiento = $totalReteFte;
             $movimiento->valorReteIvaMovimiento = $totalReteIva;
             $movimiento->valorReteIcaMovimiento = $totalReteIca;
             $movimiento->valorTotalMovimiento = number_format($base + $totalImp - $totalReteFte - ($afecReteIva == 'NO' ? 0 : $totalReteIva) - $totalReteIca + $movimiento->valorFleteMovimiento + $movimiento->valorSeguroMovimiento + $movimiento->valorAcarreoMovimiento, $datosDoc[0]['redondeoTotalDocumento'], '.', '');
             $movimiento->valorRecibidoMovimiento = 0;
             // cada que llenamos un documento, lo cargamos a la base de datos
             // pero antes de adicionarlo, consultamos que exista del mismo tipo de documento y con el mismo numero para obtener el id
             // la variable Origen, es para identificar si viene de Excel, EDI, o es de una liquidacion de importacion
             switch ($origen) {
                 case 'interface':
                     $movimiento->ConsultarMovimiento("Documento_idDocumento = " . $movimiento->Documento_idDocumento . " and numeroMovimiento = '" . $movimiento->numeroMovimiento . "'");
                     break;
                 case 'importacion':
                     $movimiento->ConsultarMovimiento("Documento_idDocumento = " . $movimiento->Documento_idDocumento . " and Importacion_idImportacion  = " . $movimiento->Importacion_idImportacion . " and numeroMovimiento = '" . $movimiento->numeroMovimiento . "'");
                     break;
                 case 'produccion':
                     $movimiento->ConsultarMovimiento("Documento_idDocumento = " . $movimiento->Documento_idDocumento . " and numeroReferenciaInternoMovimiento = '" . $movimiento->numeroReferenciaInternoMovimiento . "'");
                     break;
                 case 'conectividad':
                     //						$movimiento->ConsultarMovimiento("Documento_idDocumento = " . $movimiento->Documento_idDocumento . " and numeroReferenciaInternoMovimiento = '" . $movimiento->numeroReferenciaInternoMovimiento . "' and DocumentoConcepto_idDocumentoConcepto = ".$movimiento->DocumentoConcepto_idDocumentoConcepto);
                     $movimiento->ConsultarMovimiento("Documento_idDocumento = " . $movimiento->Documento_idDocumento . " and numeroReferenciaExternoMovimiento = '" . $movimiento->numeroReferenciaExternoMovimiento . "'");
                     break;
             }
             if ($movimiento->idMovimiento == 0) {
                 //                           echo 'entra1';
                 $movimiento->AdicionarMovimiento();
             } else {
                 //                            echo 'entra2';
                 $movimiento->ModificarMovimiento();
             }
         }
     }
     $returnuevoserrores = isset($nuevoserrores[0]["error"]) ? $nuevoserrores : array();
     $retorno = array_merge((array) $retorno, (array) $returnuevoserrores);
     return $retorno;
 }