Exemple #1
0
        public static void getSalidaOC(string FilePath, string[] TemplatePath, Salida_orden_carga o, DataSet ds)
        {
            try
            {
                List <string> files    = new List <string>();
                int           idSalida = 0;
                string        fileName = string.Empty;
                Salida        oS       = new Salida();
                foreach (Salida_orden_carga_rem item in o.LstRem)
                {
                    if (idSalida != item.Id_salida)
                    {
                        idSalida = Convert.ToInt32(item.Id_salida);
                        fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".pdf";
                        oS       = SalidaCtrl.SalidaGetAllDataById(idSalida);
                        getSalida(fileName, TemplatePath[0], oS, ds);
                        files.Add(fileName);
                    }
                }
                fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".pdf";
                getSalidaOCTransCondicion(fileName, TemplatePath[1], o, oS, ds);
                files.Add(fileName);

                DocConcat.ConcatPdfFiles(files.ToArray(), FilePath);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #2
0
        private void fillControlsToOC(Salida_orden_carga oSOC)
        {
            #region Bodega Ubicacion
            ddlBodega.SelectedValue = oSOC.Id_bodega_ubicacion.ToString();
            ControlsMng.fillCortinaByBodega(ddlCortina, Convert.ToInt32(ddlBodega.SelectedValue));
            #endregion

            #region Cita
            txt_folio_cita.Text      = oSOC.PSalidaTrafico.Folio_cita;
            txt_cita_fecha_hora.Text = CommonFunctions.FormatDate(Convert.ToDateTime(oSOC.PSalidaTrafico.Fecha_cita), "dd \\de MMMM \\de yyyy") + " " + oSOC.PSalidaTrafico.Hora_cita.ToString();
            txt_destino.Text         = oSOC.PSalidaTrafico.PSalidaDestino.Direccion;
            #endregion

            #region Documentos
            List <Cliente_documento> lstCteDoc = CatalogCtrl.Cliente_DocumentoFillLstByCliente(Convert.ToInt32(ddlCliente.SelectedValue));
            hf_id_doc_req_by_cliente.Value = lstCteDoc.First().Id_documento.ToString();
            grd_rem.DataSource             = oSOC.LstRem;
            grd_rem.DataBind();
            #endregion

            #region Transporte
            ddl_linea.SelectedValue = Convert.ToInt32(oSOC.PSalidaTrafico.Id_transporte).ToString();
            ddl_tipo.SelectedValue  = Convert.ToInt32(oSOC.PSalidaTrafico.Id_transporte_tipo_cita).ToString();
            txt_placa.Text          = oSOC.PSalidaTrafico.Placa;
            txt_caja.Text           = oSOC.PSalidaTrafico.Caja;
            txt_caja_1.Text         = oSOC.PSalidaTrafico.Caja1;
            txt_caja_2.Text         = oSOC.PSalidaTrafico.Caja2;
            txt_operador.Text       = oSOC.PSalidaTrafico.Operador;
            validarTipoTransporte(Convert.ToInt32(oSOC.PSalidaTrafico.Id_transporte_tipo_cita));
            #endregion

            #region Vigilancia
            ControlsMng.fillVigilanciaByBodega(ddlVigilante, Convert.ToInt32(ddlBodega.SelectedValue));
            #endregion
        }
Exemple #3
0
        public static void buildOrdenCarga(string FilePath, string TemplatePath, Salida_orden_carga o, List <Salida_orden_carga_rem> lst)
        {
            try
            {
                PdfReader  reader  = new PdfReader(TemplatePath);
                PdfStamper stamper = new PdfStamper(reader, new FileStream(FilePath, FileMode.Create));
                AcroFields fields  = stamper.AcroFields;


                // set form fields

                fields.SetField("folio", o.Folio_orden_carga);
                fields.SetField("lblFolio", "FOLIO CARGA");

                CultureInfo ci = new CultureInfo("es-MX");
                fields.SetField("fecha_solicitud", o.PSalidaTrafico.Fecha_solicitud.ToString("dddd, dd \\de MMMM \\de yyyy", ci));
                fields.SetField("fecha_carga_solicitada", o.PSalidaTrafico.Fecha_carga_solicitada.ToString("dddd, dd \\de MMMM \\de yyyy", ci));
                fields.SetField("hora_carga_solicitada", o.PSalidaTrafico.Hora_carga_solicitada);
                fields.SetField("fecha_cita", Convert.ToDateTime(o.PSalidaTrafico.Fecha_cita).ToString("dddd, dd \\de MMMM \\de yyyy", ci));
                fields.SetField("hora_cita", o.PSalidaTrafico.Hora_cita);

                fields.SetField("tipo_carga", o.TipoCarga);

                IEnumerable <Salida_orden_carga_rem> lstDifPedimentos = o.LstRem.Distinct(new OrdeCargaRemComparer());
                int countDifPedimentos = 0;
                foreach (var salOrdCarRem in lstDifPedimentos)
                {
                    countDifPedimentos++;
                }

                o.TipoEnvio = (countDifPedimentos > 1 ? "COMPARTIDO" : "INDIVIDUAL");
                fields.SetField("tipo_envio", o.TipoEnvio);
                fields.SetField("destino", o.PSalidaTrafico.PSalidaDestino.Destino);

                for (int iRem = 0; iRem < lst.Count; iRem++)
                {
                    Salida_orden_carga_rem oRem = lst[iRem];
                    fields.SetField("remision_" + iRem.ToString(), oRem.PSalRem.Folio_remision);
                    fields.SetField("referencia_" + iRem.ToString(), oRem.PSalRem.Referencia);
                    fields.SetField("codigo_" + iRem.ToString(), oRem.PSalRem.Codigo);
                    fields.SetField("orden_" + iRem.ToString(), oRem.PSalRem.Orden);
                }

                fields.SetField("lineaTransporte", o.PSalidaTrafico.Transporte);
                fields.SetField("tipoTransporte", o.PSalidaTrafico.Transporte_tipo_cita);

                stamper.FormFlattening = true;
                stamper.Close();
                reader.Close();

                //addBarCodes(FilePath, oSR);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #4
0
 protected void click_result(object sender, RepeaterCommandEventArgs args)
 {
     try
     {
         int IdOc = 0;
         int.TryParse(args.CommandArgument.ToString(), out IdOc);
         hf_id_salida_orden_carga.Value = IdOc.ToString();
         Salida_orden_carga oSOC = SalidaCtrl.OrdenCargaGetById(IdOc);
         fillControlsToOC(oSOC);
     }
     catch (Exception e)
     {
         ((MstCasc)this.Master).setError = e.Message;
     }
 }
Exemple #5
0
        //public static void buildOrdenCarga(string FilePath, string TemplatePath, Salida_orden_carga o)
        //{
        //    try
        //    {
        //        PdfReader reader = new PdfReader(TemplatePath);
        //        PdfStamper stamper = new PdfStamper(reader, new FileStream(FilePath, FileMode.Create));
        //        AcroFields fields = stamper.AcroFields;


        //        // set form fields

        //        fields.SetField("folio", o.Folio_orden_carga);
        //        fields.SetField("lblFolio", "FOLIO CARGA");

        //        CultureInfo ci = new CultureInfo("es-MX");
        //        fields.SetField("fecha_solicitud", o.Fecha_solicitud.ToString("dddd, dd \\de MMMM \\de yyyy", ci));
        //        fields.SetField("fecha_carga_solicitada", o.Fecha_carga_solicitada.ToString("dddd, dd \\de MMMM \\de yyyy", ci));
        //        fields.SetField("hora_carga_solicitada", o.Hora_carga_solicitada);
        //        fields.SetField("fecha_cita", o.Fecha_cita.ToString("dddd, dd \\de MMMM \\de yyyy", ci));
        //        fields.SetField("hora_cita", o.Hora_cita);

        //        fields.SetField("tipo_carga", o.TipoCarga);
        //        //addBarCodes(stamper, o.Folio_orden_carga);

        //        IEnumerable<Salida_orden_carga_rem> lstDifPedimentos = o.LstRem.Distinct(new OrdeCargaRemComparer());
        //        int countDifPedimentos = 0;
        //        foreach (var salOrdCarRem in lstDifPedimentos)
        //        {
        //            countDifPedimentos++;
        //        }

        //        o.TipoEnvio = (countDifPedimentos > 1 ? "COMPARTIDO" : "INDIVIDUAL");
        //        fields.SetField("tipo_envio", o.TipoEnvio);
        //        fields.SetField("destino", o.Destino);

        //        for (int iRem = 0; iRem < o.LstRem.Count; iRem++)
        //        {
        //            Salida_orden_carga_rem oRem = o.LstRem[iRem];
        //            fields.SetField("remision_" + iRem.ToString(), oRem.PSalRem.Folio_remision);
        //            fields.SetField("referencia_" + iRem.ToString(), oRem.PSalRem.Referencia);
        //            fields.SetField("codigo_" + iRem.ToString(), oRem.PSalRem.Codigo);
        //            fields.SetField("orden_" + iRem.ToString(), oRem.PSalRem.Orden);
        //        }

        //        fields.SetField("lineaTransporte", o.Transporte);
        //        fields.SetField("tipoTransporte", o.TipoTransporte);

        //        stamper.FormFlattening = true;
        //        stamper.Close();
        //        reader.Close();

        //        //addBarCodes(FilePath, oSR);
        //    }
        //    catch (Exception)
        //    {

        //        throw;
        //    }
        //}

        public static void getOrdenCarga(string FilePath, string TemplatePath, Salida_orden_carga o)
        {
            try
            {
                List <string> files         = new List <string>();
                int           noPag         = o.LstRem.Count / Globals.ORDEN_CARGA_CANT_REM_X_HOJA;
                int           ultPag        = o.LstRem.Count % Globals.ORDEN_CARGA_CANT_REM_X_HOJA;
                int           noRemImpresas = 0;
                for (int i = 0; i <= noPag; i++)
                {
                    string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".pdf";
                    List <Salida_orden_carga_rem> lst = o.LstRem.GetRange(noRemImpresas, i == noPag ? ultPag : Globals.ORDEN_CARGA_CANT_REM_X_HOJA);
                    buildOrdenCarga(fileName, TemplatePath, o, lst);
                    files.Add(fileName);
                    noRemImpresas += Globals.ORDEN_CARGA_CANT_REM_X_HOJA;
                }

                DocConcat.ConcatPdfFiles(files.ToArray(), FilePath);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #6
0
        private void saveSalida()
        {
            try
            {
                int numero;
                Salida_orden_carga oSOC = new Salida_orden_carga();
                oSOC.Id = Convert.ToInt32(hf_id_salida_orden_carga.Value);
                List <Salida> lstSalidas = new List <Salida>();

                int.TryParse(ddlCliente.SelectedValue, out numero);

                List <Salida_orden_carga_tc> lstSalTranCond = JsonConvert.DeserializeObject <List <Salida_orden_carga_tc> >(hf_condiciones_transporte.Value);
                numero = TransporteCtrl.TransCondCliGetNumCond(numero, false, true);
                if (lstSalTranCond.Count != numero)
                {
                    throw new Exception("Es necesario proporcionar TODAS LAS CONDICIONES del transporte.");
                }

                oSOC.PLstSalOCTransCond       = lstSalTranCond;
                oSOC.Observaciones_tranpsorte = txt_comentarios.Text.Trim();

                Salida oS = getFormValues();
                List <Salida_compartida> lstSalComp = new List <Salida_compartida>();
                bool cumpleCondTran = lstSalTranCond.Count(p => p.Si_no == false) == 0;

                numero = 0;
                for (int iRow = 0; iRow < grd_rem.Rows.Count; iRow++)
                {
                    GridViewRow row = grd_rem.Rows[iRow];
                    Salida      o   = new Salida();
                    o                  = (Salida)oS.Clone();
                    o.Referencia       = row.Cells[0].Text;
                    o.PLstSalTransCond = new List <Salida_transporte_condicion>();
                    HiddenField hfJsonDoc = row.FindControl("hf_JsonDocumentos") as HiddenField;
                    o.PLstSalDoc = JsonConvert.DeserializeObject <List <Salida_documento> >(hfJsonDoc.Value);
                    if (o.PLstSalDoc == null)
                    {
                        o.PLstSalDoc = new List <Salida_documento>();
                    }

                    //Numero de pallet
                    //TextBox txt_no_pallet = row.FindControl("txt_no_pallet") as TextBox;
                    int.TryParse(CommonFunctions.NumbersOnly(row.Cells[2].Text), out numero);
                    o.No_pallet = numero;
                    numero      = 0;

                    //Numero de bulto
                    int.TryParse(CommonFunctions.NumbersOnly(row.Cells[3].Text), out numero);
                    o.No_bulto = numero;
                    numero     = 0;

                    //Numero de pieza
                    int.TryParse(CommonFunctions.NumbersOnly(row.Cells[4].Text), out numero);
                    o.No_pieza = numero;
                    numero     = 0;

                    //Mercancia
                    TextBox txt_mercancia = row.FindControl("txt_mercancia") as TextBox;
                    o.Mercancia = txt_mercancia.Text;

                    //observaciones
                    //Mercancia
                    TextBox txt_observaciones = row.FindControl("txt_observaciones") as TextBox;
                    o.Observaciones = txt_observaciones.Text.Trim();

                    //Forma (única o parcial)
                    HiddenField    hf_forma = row.FindControl("hf_forma") as HiddenField;
                    Salida_parcial oSP      = new Salida_parcial();
                    switch (Convert.ToInt32(hf_forma.Value))
                    {
                    case 0:
                        o.Es_unica = true;
                        break;

                    case 1:
                        oSP.Referencia = o.Referencia;
                        oSP.Es_ultima  = false;
                        oSP.Id_usuario = o.PUsuario.Id;
                        o.PSalPar      = oSP;
                        o.Es_unica     = false;
                        break;

                    case -1:
                        oSP.Referencia = o.Referencia;
                        oSP.Es_ultima  = true;
                        oSP.Id_usuario = o.PUsuario.Id;
                        o.PSalPar      = oSP;
                        o.Es_unica     = false;
                        break;
                    }

                    //Compartida
                    Salida_compartida oSC = new Salida_compartida();
                    oSC.Id_usuario = o.PUsuario.Id;
                    oSC.Capturada  = false;
                    oSC.Referencia = o.Referencia;
                    lstSalComp.Add(oSC);
                    lstSalidas.Add(o);
                }

                if (lstSalComp.Count > 1)
                {
                    foreach (Salida itemS in lstSalidas)
                    {
                        itemS.PLstSalComp = lstSalComp.FindAll(p => string.Compare(p.Referencia, itemS.Referencia) != 0);
                    }
                }

                oSOC.LstSalida = lstSalidas;
                if (cumpleCondTran)
                {
                    SalidaCtrl.salidaAddFromLst(oSOC);
                    Response.Redirect("frmEmbarqueOC.aspx?_kp=" + hf_id_salida_orden_carga.Value);
                }
                else
                {
                    Salida oSTmp = oSOC.LstSalida.First();
                    oSTmp.PCliente = CatalogCtrl.Cliente_GetById(oSTmp.Id_cliente);
                    if (oSTmp.PLstSalComp == null)
                    {
                        oSTmp.PLstSalComp = new List <Salida_compartida>();
                    }

                    oSTmp.PTransporteTipo = CatalogCtrl.Transporte_tipo_getyById(oSTmp.Id_transporte_tipo);

                    SSalidaOC = oSOC;
                    Response.Redirect("frmEmbarqueOC.aspx?_octc=" + hf_id_salida_orden_carga.Value);
                }
            }
            catch
            {
                throw;
            }
        }
Exemple #7
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType     = "application/json";
            context.Response.ContentEncoding = Encoding.UTF8;
            string operation = context.Request["op"].ToString();
            Entrada_inventario_cambios oEIC = null;
            Usuario_cancelacion        oUC  = null;

            try
            {
                switch (operation)
                {
                case "arribo":
                    bool exixteFondeo = false;
                    referencia = context.Request["ref"];
                    //Verificacion en tabla de Entrada_fondeo
                    List <Entrada_fondeo> lstEntFo = EntradaCtrl.FondeoGetByReferencia(referencia.Trim());
                    exixteFondeo = lstEntFo.Count > 0;
                    if (!exixteFondeo)
                    {
                        throw new Exception("El pedimento proporcionado no ha sido dado de alta en los fondeos");
                    }

                    //EntradaCtrl.ReferenciaCompartidaValida(referencia.Trim(), 1);

                    //Verifica que sea un nuevo arribo o un arribo parcial
                    if (!EntradaCtrl.EsReferenciaParcial(referencia.Trim(), 1))
                    {
                        EntradaCtrl.ReferenciaNuevaValida(referencia.Trim(), 1);
                    }

                    response = JsonConvert.SerializeObject(exixteFondeo);    // exixteFondeo.ToString();
                    break;

                case "stockcode":
                    int.TryParse(context.Request["key"].ToString(), out id);
                    response = JsonConvert.SerializeObject(EntradaCtrl.FondeoGetById(id));
                    break;

                case "inventoryCodigo":
                    jsonData        = new StreamReader(context.Request.InputStream).ReadToEnd();
                    oEIC            = JsonConvert.DeserializeObject <Entrada_inventario_cambios>(jsonData);
                    oEIC.Id_usuario = ((Usuario)context.Session["userCasc"]).Id;
                    oEIC.Codigo     = oEIC.Codigo.Trim();
                    if (EntradaCtrl.InventarioCambiosChangeCodigo(oEIC) > -1)
                    {
                        response = JsonConvert.SerializeObject(CatalogCtrl.Cliente_mercanciafillByCliente(1, oEIC.Codigo));
                    }
                    else
                    {
                        response = JsonConvert.SerializeObject("El código NO ha sido cambiado");
                    }
                    break;

                case "inventoryOrden":
                    jsonData        = new StreamReader(context.Request.InputStream).ReadToEnd();
                    oEIC            = JsonConvert.DeserializeObject <Entrada_inventario_cambios>(jsonData);
                    oEIC.Id_usuario = ((Usuario)context.Session["userCasc"]).Id;
                    oEIC.Codigo     = oEIC.Codigo.Trim();
                    response        = JsonConvert.SerializeObject(EntradaCtrl.InventarioCambiosChangeOrden(oEIC));
                    break;

                case "inventoryVendor":
                    jsonData        = new StreamReader(context.Request.InputStream).ReadToEnd();
                    oEIC            = JsonConvert.DeserializeObject <Entrada_inventario_cambios>(jsonData);
                    oEIC.Id_usuario = ((Usuario)context.Session["userCasc"]).Id;
                    oEIC.Vendor     = oEIC.Vendor.Trim();
                    if (EntradaCtrl.InventarioCambiosChangeVendor(oEIC) > -1)
                    {
                        response = JsonConvert.SerializeObject(CatalogCtrl.Cliente_vendorfillByCliente(1, oEIC.Vendor));
                    }
                    else
                    {
                        response = JsonConvert.SerializeObject("El Vendor NO ha sido cambiado");
                    }
                    break;

                case "maquilaGet":
                    int.TryParse(context.Request["key"].ToString(), out id);
                    response = JsonConvert.SerializeObject(EntradaCtrl.MaquilaSelById(id));
                    break;

                case "remDetail":
                    int.TryParse(context.Request["key"].ToString(), out id);
                    response = JsonConvert.SerializeObject(SalidaCtrl.RemDetailGetLstByParent(id));
                    break;

                case "changeMaqPar":
                    jsonData = new StreamReader(context.Request.InputStream).ReadToEnd();
                    Entrada_estatus oEE = JsonConvert.DeserializeObject <Entrada_estatus>(jsonData);
                    oEE.Id_estatus_proceso = Globals.EST_MAQ_PAR_CERRADA;
                    EntradaCtrl.EntradaEstatusAdd(oEE.Id_entrada_inventario, oEE.Id_estatus_proceso, oEE.Id_usuario, oEE.Id_entrada_maquila);
                    response = JsonConvert.SerializeObject("La maquila ha sido cerrada correctamente");    // exixteFondeo.ToString();
                    break;

                case "MciaDescChange":
                    jsonData = new StreamReader(context.Request.InputStream).ReadToEnd();
                    Cliente_mercancia oCM = JsonConvert.DeserializeObject <Cliente_mercancia>(jsonData);
                    EntradaCtrl.InventarioUdtMercancia(oCM);
                    response = JsonConvert.SerializeObject("La descripción ha sido actualizada correctamente");
                    break;

                case "MqStateChange":
                    jsonData = new StreamReader(context.Request.InputStream).ReadToEnd();
                    id       = JsonConvert.DeserializeObject <Int32>(jsonData);
                    EntradaCtrl.InventarioUdtMaqAbierta(id, true);
                    response = JsonConvert.SerializeObject("La maquila ha sido abierta correctamente");
                    break;

                case "MqDelete":
                    jsonData = new StreamReader(context.Request.InputStream).ReadToEnd();
                    id       = JsonConvert.DeserializeObject <Int32>(jsonData);
                    EntradaCtrl.MaquilaDlt(id);
                    response = JsonConvert.SerializeObject("La maquila ha sido eliminada correctamente");
                    break;

                case "embarque":
                    response = embarque(context);
                    break;

                case "cita":
                    response = Citas(context);
                    break;

                case "fondeoCodigoOrden":
                    response = JsonConvert.SerializeObject(EntradaCtrl.InventarioGetByReferencia(context.Request["key"].ToString()));
                    break;

                case "AddOrdenCarga":
                    jsonData = new StreamReader(context.Request.InputStream).ReadToEnd();
                    Salida_orden_carga oSOC = JsonConvert.DeserializeObject <Salida_orden_carga>(jsonData);
                    oSOC.Id_usuario = ((Usuario)context.Session["userCasc"]).Id;
                    SalidaCtrl.OrdenCargaAdd(oSOC);
                    response = JsonConvert.SerializeObject(oSOC);
                    break;

                case "dltOrdenCarga":
                    int.TryParse(context.Request["id_orden_carga"].ToString(), out id);
                    jsonData       = new StreamReader(context.Request.InputStream).ReadToEnd();
                    oUC            = JsonConvert.DeserializeObject <Usuario_cancelacion>(jsonData);
                    oUC.Id_usuario = ((Usuario)context.Session["userCasc"]).Id;
                    SalidaCtrl.OrdenCargaDlt(id, oUC);
                    response = JsonConvert.SerializeObject("Se eliminó correctamente el registro");
                    break;

                case "ordenCarga":
                    response = ordenCarga(context);
                    break;

                case "ordenCargaRem":
                    id = 0;
                    int.TryParse(context.Request["id_salida_remision"], out id);
                    response = JsonConvert.SerializeObject(SalidaCtrl.OrdenCargaRemGetRemision(id));
                    break;

                case "salidaRemDev":
                    id = 0;
                    int.TryParse(context.Request["id_salida_remision"], out id);
                    jsonData       = new StreamReader(context.Request.InputStream).ReadToEnd();
                    oUC            = JsonConvert.DeserializeObject <Usuario_cancelacion>(jsonData);
                    oUC.Id_usuario = ((Usuario)context.Session["userCasc"]).Id;
                    SalidaCtrl.RemisionDevolucion(new Salida_remision()
                    {
                        Id = id, Es_devolucion = true
                    }, oUC);
                    response = JsonConvert.SerializeObject("La operación se realizó correctamente");
                    break;

                case "tarimaAlm":
                    response = tarimaAlmacen(context);
                    break;

                case "transCond":
                    response = transporteCondicion(context);
                    break;

                case "orden_trabajo":
                    response = Orden_trabajo(context);
                    break;

                default:
                    break;
                }
                context.Response.Write(response);
            }
            catch (Exception e)
            {
                context.Response.Write(JsonConvert.SerializeObject(e.Message));
            }
        }
Exemple #8
0
        public static void getSalidaOCTransCondicion(string path, string rptPath, Salida_orden_carga oSOC, Salida oS, DataSet ds)
        {
            try
            {
                CultureInfo    ci      = new CultureInfo("es-MX");
                ReportDocument reporte = new ReportDocument();
                reporte.Load(rptPath);

                foreach (Salida_orden_carga_tc oSTC in oSOC.PLstSalOCTransCond)
                {
                    DataRow dr = ds.Tables["auduniemb"].NewRow();
                    dr["categoria"] = oSTC.Categoria;
                    dr["condicion"] = oSTC.Condicion;
                    dr["si"]        = string.Empty;
                    dr["no"]        = string.Empty;
                    if (oSTC.Si_no)
                    {
                        dr["si"] = "X";
                    }
                    else
                    {
                        dr["no"] = "X";
                    }
                    ds.Tables["auduniemb"].Rows.Add(dr);
                }
                reporte.SetDataSource(ds.Tables["auduniemb"]);

                #region Datos de la entrada
                reporte.SetParameterValue("cliente", oS.PCliente.Razon);
                reporte.SetParameterValue("fecha", oS.Fecha.ToString("dd \\de MMM \\de yyyy", ci));
                reporte.SetParameterValue("folio_oc", oSOC.Folio_orden_carga);
                #endregion

                #region Documentos Salida
                StringBuilder sbCompartida    = new StringBuilder();
                int           saltoCompartida = 1;
                foreach (Salida_compartida oSC in oS.PLstSalComp)
                {
                    if (string.Compare(oS.Referencia, oSC.Referencia) != 0)
                    {
                        sbCompartida.Append(oSC.Referencia);
                        if (saltoCompartida % 2 == 0)
                        {
                            sbCompartida.AppendLine();
                            saltoCompartida = 0;
                        }
                        else
                        {
                            sbCompartida.Append(", ");
                        }
                        saltoCompartida++;
                    }
                }

                if (sbCompartida.Length == 0)
                {
                    reporte.SetParameterValue("referencia", oS.Referencia);
                }
                else
                {
                    reporte.SetParameterValue("referencia", oS.Referencia + ", " + sbCompartida.ToString().Substring(0, sbCompartida.ToString().Length - 2));
                }

                #endregion

                #region Datos del Transporte

                reporte.SetParameterValue("tipo_vehiculo", oS.PTransporteTipo.Nombre);
                StringBuilder sbET = new StringBuilder();

                string strPlaca = string.Empty;
                if (string.Compare(oS.Placa, "N.A.") != 0)
                {
                    strPlaca = "Placa: " + oS.Placa;
                    if (string.Compare(oS.Caja, "N.A.") != 0)
                    {
                        strPlaca += ", Caja: " + oS.Caja;
                    }
                    if (string.Compare(oS.Caja1, "N.A.") != 0)
                    {
                        strPlaca += ", Cont. 1: " + oS.Caja1;
                        if (string.Compare(oS.Caja2, "N.A.") != 0)
                        {
                            strPlaca += ", Cont. 2: " + oS.Caja2;
                        }
                    }
                    sbET.Append(" " + strPlaca);
                }

                reporte.SetParameterValue("placas", sbET.ToString());
                reporte.SetParameterValue("comentario", oSOC.Observaciones_tranpsorte.Length == 0 ? "--- Sin comentarios ---" : oSOC.Observaciones_tranpsorte);
                #endregion

                #region Firmas

                reporte.SetParameterValue("operador", oS.Operador);
                //reporte.SetParameterValue("usuario", oS.PUsuario.Nombre);
                reporte.SetParameterValue("vigilante", oS.Vigilante);

                #endregion

                reporte.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, path);
            }
            catch
            {
                throw;
            }
        }