예제 #1
0
        public void EscribirSolicitudRetiro(DataSet dsSolicitudRetiro, DataSet dsOrdenRetiro,
                                            DataSet dsOrdenRetiroConceptoFacturable, DataSet dsDestinatario, DataSet dsDomicilio,
                                            DataSet dsDomicilioCliente, DataSet dsRemitente, DataSet dsDomicilioRemitente)
        {
            using (SqlConnection conexion = new SqlConnection())
            {
                SqlTransaction transaccion = null;
                conexion.ConnectionString = Config.ConnectionString;

                System.Globalization.CultureInfo culture = System.Globalization.CultureInfo.InvariantCulture;

                try
                {
                    conexion.Open();
                    transaccion = conexion.BeginTransaction();

                    int domicilioClienteID = 0;
                    int clienteID          = 0;
                    int destinatarioID     = 0;
                    int solicitudRetiroID  = 0;
                    int remitenteID        = 0;

                    // Obtengo los datos de la solicitud
                    foreach (System.Data.DataRow dr in dsSolicitudRetiro.Tables[0].Rows)
                    {
                        solicitudRetiroID = Utiles.Validaciones.obtieneEntero(dr["SolicitudRetiroID"].ToString());
                        int agenciaRetiroID = Utiles.Validaciones.obtieneEntero(dr["AgenciaRetiroID"].ToString());
                        clienteID = Utiles.Validaciones.obtieneEntero(dr["ClienteID"].ToString());
                        int      estadoSolicitudRetiroID = Utiles.Validaciones.obtieneEntero(dr["EstadoSolicitudID"].ToString());
                        int      numeroSolicitud         = Utiles.Validaciones.obtieneEntero(dr["NumeroSolicitud"].ToString());
                        DateTime fechaAlta           = Convert.ToDateTime(dr["FechaAlta"]);
                        bool     esSolicitudDespacho = Convert.ToBoolean(dr["EsSolicitudDespacho"]);
                        string   observacion         = Convert.ToString(dr["Observacion"]);

                        DateTime fechaConfirmacion = DateTime.Now;
                        try
                        {
                            fechaConfirmacion = dr["FechaConfirmacion"] != null?Convert.ToDateTime(dr["FechaConfirmacion"]) : DateTime.Now;
                        }
                        catch (Exception)
                        {
                            // Necesito capturarlo ya que en algunos casos no viene...
                        }

                        domicilioClienteID = Utiles.Validaciones.obtieneEntero(dr["DomicilioClienteID"].ToString());
                        int ordenRetiroDomicilioClienteID = 0;

                        // obtengo los datos del domicilio de la solicitud de retiro
                        foreach (System.Data.DataRow drDC in dsDomicilioCliente.Tables[0].Select("DomicilioClienteID=" + domicilioClienteID.ToString()))
                        {
                            string domicilio = drDC["Domicilio"].ToString();
                            domicilioClienteID = Utiles.Validaciones.obtieneEntero(drDC["DomicilioClienteID"].ToString());
                            int localidadID = Utiles.Validaciones.obtieneEntero(drDC["LocalidadID"].ToString());

                            // Guardar domicilio del cliente
                            ordenRetiroDomicilioClienteID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico(transaccion, "OrdenRetiroDomicilioClienteINS",
                                                                                                                   domicilioClienteID,
                                                                                                                   domicilio, localidadID));
                            break;
                        }

                        // Guardar cabecera solicitud de retiro
                        Config.Conexion.EjecutarSinResultados(transaccion, "SolicitudRetiroINS",
                                                              solicitudRetiroID, agenciaRetiroID,
                                                              clienteID, ordenRetiroDomicilioClienteID,
                                                              estadoSolicitudRetiroID,
                                                              numeroSolicitud,
                                                              fechaAlta, fechaConfirmacion, esSolicitudDespacho, observacion);

                        break;
                    }

                    // Obtengo los datos de las órdenes de retiro
                    foreach (System.Data.DataRow drOR in dsOrdenRetiro.Tables[0].Rows)
                    {
                        int    agenciaID          = Utiles.Validaciones.obtieneEntero(drOR["AgenciaID"].ToString());
                        double alto               = Convert.ToDouble(drOR["Alto"].ToString(), culture);
                        double ancho              = Convert.ToDouble(drOR["Ancho"].ToString(), culture);
                        double bultos             = Convert.ToDouble(drOR["Bultos"].ToString(), culture);
                        double largo              = Convert.ToDouble(drOR["Largo"]);
                        int    localidadID        = Utiles.Validaciones.obtieneEntero(drOR["LocalidadID"].ToString());
                        int    modalidadEntregaID = Utiles.Validaciones.obtieneEntero(drOR["ModalidadEntregaID"].ToString());
                        string numeroOrden        = drOR["NumeroOrden"].ToString();
                        int    ordenRetiroID      = Utiles.Validaciones.obtieneEntero(drOR["OrdenRetiroID"].ToString());
                        int    idPromocionWeb     = 0;
                        try
                        {
                            idPromocionWeb = Utiles.Validaciones.obtieneEntero(drOR["IdPromocionWeb"].ToString());
                        }
                        catch {}
                        double peso = Convert.ToDouble(drOR["Peso"].ToString(), culture);

                        /* Cálculo del peso aforado */
                        ParametroUNegocio param = new ParametroUNegocio();
                        param.UnidadNegocioID = 1;
                        param.Parametro       = SisPack.Parametro.ValorDivisionCalculoPesoAforado;
                        param.ConsultarServicio();
                        //valorDivPesoAforado: Valor por el cual se divide para encontrar el peso aforado.
                        int valorDivPesoAforado = Convert.ToInt32(param.ValorString);
                        param = null;
                        double pesoAforado = Convert.ToDouble(((alto * ancho * largo) / valorDivPesoAforado), culture);

                        int    provinciaID    = Utiles.Validaciones.obtieneEntero(drOR["ProvinciaID"].ToString());
                        int    unidadVentaID  = Utiles.Validaciones.obtieneEntero(drOR["UnidadVentaID"].ToString());
                        double valorDeclarado = Convert.ToDouble(drOR["ValorDeclarado"].ToString(), culture);
                        string destino        = drOR["Destino"].ToString();
                        solicitudRetiroID = Utiles.Validaciones.obtieneEntero(drOR["SolicitudRetiroID"].ToString());
                        destinatarioID    = Utiles.Validaciones.obtieneEntero(drOR["DestinatarioID"].ToString());
                        string remitoClienteNro = drOR["RemitoClienteNro"].ToString();
                        remitenteID = Utiles.Validaciones.obtieneEntero(drOR["RemitenteID"].ToString());
                        int ordenRetiroDomicilioID = 0;

                        // obtengo los datos del destinatario de la orden de retiro
                        foreach (System.Data.DataRow drD in dsDestinatario.Tables[0].Select("DestinatarioID = " + destinatarioID.ToString()))
                        {
                            string apellido       = drD["Apellido"].ToString();
                            int    condicionIVAID = Utiles.Validaciones.obtieneEntero(drD["CondicionIVAID"].ToString());
                            destinatarioID = Utiles.Validaciones.obtieneEntero(drD["DestinatarioID"].ToString());
                            int    domicilioID = Utiles.Validaciones.obtieneEntero(drD["DomicilioID"].ToString());
                            string nombre      = drD["Nombre"].ToString();
                            string nroCUIT     = "";
                            try
                            {
                                nroCUIT = drD["NroCUIT"] != null ? drD["NroCUIT"].ToString() : "";
                            }
                            catch (Exception)
                            {
                                // Necesito capturarlo ya que en algunos casos no viene...
                            }

                            int nroDocumento    = Utiles.Validaciones.obtieneEntero(drD["NroDocumento"].ToString());
                            int tipoDocumentoID = Utiles.Validaciones.obtieneEntero(drD["TipoDocumentoID"].ToString());

                            // obtengo los datos del domicilio del destinatario
                            foreach (System.Data.DataRow drDD in dsDomicilio.Tables[0].Select("DomicilioID = " + domicilioID.ToString()))
                            {
                                bool   baja     = Convert.ToBoolean(drDD["Baja"]);
                                string calle    = drDD["Calle"].ToString();
                                string calleNro = drDD["CalleNro"].ToString();

                                string depto = "";
                                try
                                {
                                    depto = drDD["Dept"] != null ? drDD["Depto"].ToString() : "";
                                }
                                catch (Exception)
                                {
                                    // Necesito capturarlo ya que en algunos casos no viene...
                                }

                                string esEventual = drDD["EsEventual"].ToString();

                                string fax = "";
                                try
                                {
                                    fax = drDD["Fax"] != null ? drDD["Fax"].ToString() : "";
                                }
                                catch (Exception)
                                {
                                    // Necesito capturarlo ya que en algunos casos no viene...
                                }

                                int    localidadDomID = Utiles.Validaciones.obtieneEntero(drDD["LocalidadID"].ToString());
                                string telefono       = drDD["Telefono"].ToString();

                                ordenRetiroDomicilioID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico(transaccion, "OrdenRetiroDomicilioINS",
                                                                                                                domicilioID, calle, calleNro, depto, esEventual, fax, localidadDomID,
                                                                                                                telefono));

                                break;
                            }

                            destinatarioID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico(transaccion, "DestinatarioINS", destinatarioID, ordenRetiroID,
                                                                                                    apellido, condicionIVAID, nombre, Utiles.BaseDatos.StrToSql(nroCUIT),
                                                                                                    nroDocumento, tipoDocumentoID, ordenRetiroDomicilioID));
                        }

                        // obtengo los datos del remitente de la orden de retiro
                        foreach (System.Data.DataRow drR in dsRemitente.Tables[0].Select("RemitenteID = " + remitenteID.ToString()))
                        {
                            string apellido       = drR["Apellido"].ToString();
                            int    condicionIVAID = Utiles.Validaciones.obtieneEntero(drR["CondicionIVAID"].ToString());
                            remitenteID = Utiles.Validaciones.obtieneEntero(drR["RemitenteID"].ToString());
                            int    domicilioID = Utiles.Validaciones.obtieneEntero(drR["DomicilioID"].ToString());
                            string nombre      = drR["Nombre"].ToString();
                            string nroCUIT     = "";
                            try
                            {
                                nroCUIT = drR["NroCUIT"] != null ? drR["NroCUIT"].ToString() : "";
                            }
                            catch (Exception)
                            {
                                // Necesito capturarlo ya que en algunos casos no viene...
                            }

                            int nroDocumento    = Utiles.Validaciones.obtieneEntero(drR["NroDocumento"].ToString());
                            int tipoDocumentoID = Utiles.Validaciones.obtieneEntero(drR["TipoDocumentoID"].ToString());

                            // obtengo los datos del domicilio del remitente
                            foreach (System.Data.DataRow drDR in dsDomicilioRemitente.Tables[0].Select("DomicilioID = " + domicilioID.ToString()))
                            {
                                bool   baja     = Convert.ToBoolean(drDR["Baja"]);
                                string calle    = drDR["Calle"].ToString();
                                string calleNro = drDR["CalleNro"].ToString();

                                string depto = "";
                                try
                                {
                                    depto = drDR["Dept"] != null ? drDR["Depto"].ToString() : "";
                                }
                                catch (Exception)
                                {
                                    // Necesito capturarlo ya que en algunos casos no viene...
                                }

                                string esEventual = drDR["EsEventual"].ToString();

                                string fax = "";
                                try
                                {
                                    fax = drDR["Fax"] != null ? drDR["Fax"].ToString() : "";
                                }
                                catch (Exception)
                                {
                                    // Necesito capturarlo ya que en algunos casos no viene...
                                }

                                int    localidadDomID = Utiles.Validaciones.obtieneEntero(drDR["LocalidadID"].ToString());
                                string telefono       = drDR["Telefono"].ToString();

                                ordenRetiroDomicilioID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico(transaccion, "OrdenRetiroDomicilioINS",
                                                                                                                domicilioID, calle, calleNro, depto, esEventual, fax, localidadDomID,
                                                                                                                telefono));

                                break;
                            }

                            remitenteID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico(transaccion, "RemitenteINS", remitenteID, ordenRetiroID,
                                                                                                 apellido, condicionIVAID, nombre, Utiles.BaseDatos.StrToSql(nroCUIT),
                                                                                                 nroDocumento, tipoDocumentoID, ordenRetiroDomicilioID));
                        }

                        Config.Conexion.EjecutarSinResultados(transaccion, "OrdenRetiroINS",
                                                              ordenRetiroID, numeroOrden,
                                                              agenciaID, alto, ancho,
                                                              bultos, largo, localidadID, modalidadEntregaID, peso,
                                                              provinciaID, unidadVentaID, valorDeclarado, solicitudRetiroID,
                                                              clienteID, destinatarioID, destino, pesoAforado, remitoClienteNro, remitenteID, idPromocionWeb);

                        // obtengo los datos de los conceptos facturables de la orden actual
                        foreach (System.Data.DataRow drORC in dsOrdenRetiroConceptoFacturable.Tables[0].Select("OrdenRetiroID = " + ordenRetiroID.ToString()))
                        {
                            double importeCR      = Convert.ToDouble(drORC["ImporteCR"].ToString(), culture);
                            double importeEntrega = Convert.ToDouble(drORC["ImporteEntrega"].ToString(), culture);
                            double importeFlete   = Convert.ToDouble(drORC["ImporteFlete"].ToString(), culture);
                            double importeIVA     = Convert.ToDouble(drORC["ImporteIVA"].ToString(), culture);
                            double importeNeto    = Convert.ToDouble(drORC["ImporteNeto"].ToString(), culture);
                            double importeRetiro  = Convert.ToDouble(drORC["ImporteRetiro"].ToString(), culture);
                            double importeSeguro  = Convert.ToDouble(drORC["ImporteSeguro"].ToString(), culture);
                            double importeTotal   = Convert.ToDouble(drORC["ImporteTotal"].ToString(), culture);

                            Config.Conexion.EjecutarSinResultados(transaccion, "OrdenRetiroConceptoFacturableINS",
                                                                  ordenRetiroID, importeCR, importeEntrega, importeFlete, importeIVA,
                                                                  importeNeto, importeRetiro, importeSeguro, importeTotal);

                            break;
                        }
                    }

                    // Marco como procesada la solicitud que estaba pendiente de procesar.
                    Config.Conexion.EjecutarSinResultados(transaccion, "SolicitudProcesadaUPD",
                                                          solicitudRetiroID);

                    string        dirXML = System.Configuration.ConfigurationSettings.AppSettings["dirsolicitudesProcesadas"];
                    DirectoryInfo dir    = new DirectoryInfo(dirXML);
                    Mover(solicitudRetiroID + "S.xml", dir);
                    Mover(solicitudRetiroID + "OR.xml", dir);
                    Mover(solicitudRetiroID + "ORC.xml", dir);
                    Mover(solicitudRetiroID + "D.xml", dir);
                    Mover(solicitudRetiroID + "DS.xml", dir);
                    Mover(solicitudRetiroID + "DC.xml", dir);
                    Mover(solicitudRetiroID + "R.xml", dir);
                    Mover(solicitudRetiroID + "DR.xml", dir);

                    culture = null;

                    transaccion.Commit();
                }
                catch (Exception ex)
                {
                    transaccion.Rollback();
                    throw ex;
                }
            }
        }
        public bool ModificarGuia()
        {
            try
            {
                /* ver despues el tema del detalle
                 * oGuiaFact.ImporteNetoTotal = this.ImporteNetoTotal;
                 * oGuiaFact.ImporteTotalGuia = this.ImporteTotalCobrar;
                 * oGuiaFact.IVAInscriptoTotal = this.ImporteIVAInscripto;
                 */
                using (SqlConnection conexion = new SqlConnection())
                {
                    SqlTransaction transaccion = null;
                    conexion.ConnectionString = Config.ConnectionString;

                    conexion.Open();
                    transaccion = conexion.BeginTransaction();

                    if (this.TipoGuia == "A")
                    {
                        IParametroUNegocio      parametroUN     = new ParametroUNegocio();
                        DsParametros            dsParamUNegocio = parametroUN.GetParametrosDataSet();
                        DsParametros.DatosRow[] drsPARAM        = (DsParametros.DatosRow[])dsParamUNegocio.Datos.Select("ParametroID = " + (int)SisPack.Parametro.PorcentajeIVA + "AND UnidadNegocioID = " + this.UnidadNegocioID);
                        double porcentajeIVAAplicado            = Convert.ToDouble(drsPARAM[0].ValorString);
                        this.ImporteNetoTotal   = this.ImporteFlete + this.ImporteSeguro + this.ImporteRetiro + this.ImporteEntrega;
                        this.IVAInscriptoTotal  = this.ImporteNetoTotal * (porcentajeIVAAplicado / 100);
                        this.ImporteTotalCobrar = this.ImporteTotalCobrar = this.ImporteNetoTotal + this.IVAInscriptoTotal;
                    }
                    else if (this.TipoGuia == "B")
                    {
                        this.ImporteNetoTotal   = this.ImporteFlete + this.ImporteSeguro + this.ImporteRetiro + this.ImporteEntrega;
                        this.ImporteTotalCobrar = this.ImporteFlete + this.ImporteSeguro + this.ImporteRetiro + this.ImporteEntrega;
                    }

                    Config.Conexion.EjecutarSinResultados(transaccion, "GuiaUDP",
                                                          this.guiaID,
                                                          this.nroSucursalGuia,
                                                          this.nroGuia,
                                                          this.tipoGuia,
                                                          this.unidadNegocioID,
                                                          this.agenciaOrigenID,
                                                          this.agenciaDestinoID,
                                                          this.cantBultos,
                                                          this.observaciones,
                                                          this.valorDeclarado,
                                                          this.modalidadEntregaID,
                                                          this.pesoTotal,
                                                          this.tipoBultoID,
                                                          this.importeNetoTotal,
                                                          this.ImporteTotalCobrar,
                                                          this.importeIVAInscripto,
                                                          this.CantBultos,
                                                          this.PesoTotal,
                                                          this.UnidadVentaID);


                    //FLETE
                    int guiaFacturaConceptoFacturableID = 0;
                    guiaFacturaConceptoFacturableID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico(transaccion, "GuiaFacturaDetalleConceptoFacturableUPD", this.GuiaID, SisPack.ConceptoFacturable.FleteNacional, (this.ImporteFlete - this.ImporteRedespacho)));
                    Config.Conexion.EjecutarSinResultados(transaccion, "GuiaFacturaDetalleSubConceptoFacturableUPD", guiaFacturaConceptoFacturableID, SisPack.SubConceptoFacturable.FleteNacional, (this.ImporteFlete - this.ImporteRedespacho));

                    //RETIRO
                    guiaFacturaConceptoFacturableID = 0;
                    guiaFacturaConceptoFacturableID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico(transaccion, "GuiaFacturaDetalleConceptoFacturableUPD", this.GuiaID, SisPack.ConceptoFacturable.Retiro, (this.ImporteRetiro)));
                    Config.Conexion.EjecutarSinResultados(transaccion, "GuiaFacturaDetalleSubConceptoFacturableUPD", guiaFacturaConceptoFacturableID, SisPack.SubConceptoFacturable.Retiro, (this.ImporteRetiro));

                    //ENTREGA
                    guiaFacturaConceptoFacturableID = 0;
                    guiaFacturaConceptoFacturableID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico(transaccion, "GuiaFacturaDetalleConceptoFacturableUPD", this.GuiaID, SisPack.ConceptoFacturable.Entrega, (this.ImporteEntrega)));
                    Config.Conexion.EjecutarSinResultados(transaccion, "GuiaFacturaDetalleSubConceptoFacturableUPD", guiaFacturaConceptoFacturableID, SisPack.SubConceptoFacturable.Entrega, (this.ImporteEntrega));

                    //SEGURO
                    guiaFacturaConceptoFacturableID = 0;
                    guiaFacturaConceptoFacturableID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico(transaccion, "GuiaFacturaDetalleConceptoFacturableUPD", this.GuiaID, SisPack.ConceptoFacturable.Seguro, (this.ImporteSeguro)));
                    Config.Conexion.EjecutarSinResultados(transaccion, "GuiaFacturaDetalleSubConceptoFacturableUPD", guiaFacturaConceptoFacturableID, SisPack.SubConceptoFacturable.Seguro, (this.ImporteSeguro));


                    /*
                     * //RETIRO
                     * if(this.tieneRetiroDomicilio)
                     * {
                     *      IGuiaFacturaConceptoFacturable oConcepRetiro = oGuiaFact.ConceptosFacturablesCol.AddFacturaConcFacturable();
                     *      oConcepRetiro.ConceptoFacturable = SisPack.ConceptoFacturable.Retiro;
                     *      oConcepRetiro.ImporteTotal = this.ImporteRetiro;
                     *
                     *      oConcepRetiro.GuiaFacturaConceptoFacturableID = Config.Conexion.EjecutarSinResultados(transaccion, "GuiaFacturaDetalleConceptoFacturableUPD", this.GuiaID, oConcepRetiro.ConceptoFacturable, oConcepRetiro.ImporteTotal);
                     *
                     *      IGuiaFacturaDetalleConcFacturable oDetaConcepRetiro = oDetalle.ConceptosFactuDetaCol.AddFacturaDetalleConcFacturable();
                     *      oDetaConcepRetiro.ConceptoFacturableID = SisPack.ConceptoFacturable.Retiro;
                     *
                     *      IGuiaFacturaDetalleSubConcFacturable oDetaSubConceptoRetiro =  oDetaConcepRetiro.SubConceptosFactuDetaCol.AddFacturaDetalleSubConcFacturable();
                     *      oDetaSubConceptoRetiro.SubConceptoFacturableID = SisPack.SubConceptoFacturable.Retiro;
                     *      oDetaSubConceptoRetiro.Importe = this.ImporteRetiro;
                     *
                     *      Config.Conexion.EjecutarSinResultados(transaccion, "GuiaFacturaDetalleSubConceptoFacturableUPD", oConcepRetiro.GuiaFacturaConceptoFacturableID , oDetaSubConceptoRetiro.SubConceptoFacturableID, oDetaSubConceptoRetiro.Importe);
                     * }
                     *
                     * //ENTREGA
                     * if(this.tieneEntregaDomicilio && !this.PagaEntregaEnDomicilio)
                     * {
                     *      IGuiaFacturaConceptoFacturable oConcepEntrega = oGuiaFact.ConceptosFacturablesCol.AddFacturaConcFacturable();
                     *      oConcepEntrega.ConceptoFacturable = SisPack.ConceptoFacturable.Entrega;
                     *      oConcepEntrega.ImporteTotal = this.ImporteEntrega;
                     *
                     *      oConcepEntrega.GuiaFacturaConceptoFacturableID = Config.Conexion.EjecutarSinResultados(transaccion, "GuiaFacturaDetalleConceptoFacturableUPD", this.GuiaID, oConcepEntrega.ConceptoFacturable, oConcepEntrega.ImporteTotal);
                     *
                     *      IGuiaFacturaDetalleConcFacturable oDetaConcepEntrega = oDetalle.ConceptosFactuDetaCol.AddFacturaDetalleConcFacturable();
                     *      oDetaConcepEntrega.ConceptoFacturableID = SisPack.ConceptoFacturable.Entrega;
                     *      //oDetaConcepEntrega.Importe = this.ImporteEntrega;
                     *
                     *      IGuiaFacturaDetalleSubConcFacturable oDetaSubConceptoEntrega =  oDetaConcepEntrega.SubConceptosFactuDetaCol.AddFacturaDetalleSubConcFacturable();
                     *      oDetaSubConceptoEntrega.SubConceptoFacturableID = SisPack.SubConceptoFacturable.Entrega;
                     *      oDetaSubConceptoEntrega.Importe = this.ImporteEntrega;
                     *
                     *      Config.Conexion.EjecutarSinResultados(transaccion, "GuiaFacturaDetalleSubConceptoFacturableUPD", oConcepEntrega.GuiaFacturaConceptoFacturableID , oDetaSubConceptoEntrega.SubConceptoFacturableID, oDetaSubConceptoEntrega.Importe);
                     *
                     * }
                     *
                     * //SEGURO
                     * if(this.ImporteSeguro > 0 || (this.DefineMovimMensual && this.importeSeguroTotal>0))
                     * {
                     *      IGuiaFacturaConceptoFacturable oConcepSeguro = oGuiaFact.ConceptosFacturablesCol.AddFacturaConcFacturable();
                     *      oConcepSeguro.ConceptoFacturable = SisPack.ConceptoFacturable.Seguro;
                     *      oConcepSeguro.ImporteTotal = this.ImporteSeguro;
                     *
                     *      oConcepSeguro.GuiaFacturaConceptoFacturableID = Config.Conexion.EjecutarSinResultados(transaccion, "GuiaFacturaDetalleConceptoFacturableUPD", this.GuiaID, oConcepSeguro.ConceptoFacturable, oConcepSeguro.ImporteTotal);
                     *
                     *      IGuiaFacturaDetalleConcFacturable oDetaConcepSeguro = oDetalle.ConceptosFactuDetaCol.AddFacturaDetalleConcFacturable();
                     *      oDetaConcepSeguro.ConceptoFacturableID = SisPack.ConceptoFacturable.Seguro;
                     *      //oDetaConcepSeguro.Importe = this.ImporteSeguro;
                     *
                     *      IGuiaFacturaDetalleSubConcFacturable oDetaSubConceptoSeguro =  oDetaConcepSeguro.SubConceptosFactuDetaCol.AddFacturaDetalleSubConcFacturable();
                     *      oDetaSubConceptoSeguro.SubConceptoFacturableID = SisPack.SubConceptoFacturable.Seguro;
                     *      oDetaSubConceptoSeguro.Importe = this.ImporteSeguro;
                     * }
                     */


                    transaccion.Commit();

                    return(true);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public bool EmitirGuiaUnidadLogistica(SqlTransaction _transaccion, IUsuarios usuario, bool validarStock)
        {
            bool manejarTransaccionEnElMetodo = false;

            System.Data.SqlClient.SqlTransaction transaccion;
            System.Data.SqlClient.SqlConnection  conexion = new System.Data.SqlClient.SqlConnection();
            if (_transaccion == null)
            {
                manejarTransaccionEnElMetodo = true;
                string connectionString = Config.Conexion.StringConexion;
                conexion.ConnectionString = connectionString;
                conexion.Open();
                transaccion = conexion.BeginTransaction();
            }
            else
            {
                transaccion = _transaccion;
            }

            try
            {
                //Agencia ag = new Agencia();
                //ag.AgenciaID = AgenciaOrigenID;
                //ag.CargarDatosCAIParaTipoGuiaFactura("X");
                //NumeroCAI = ag.NumeroCAI;
                NumeroCAI        = string.Empty;
                FechaEmision     = DateTime.Now;
                UsuarioID        = usuario.UsuarioID;
                ImporteTotalGuia = 0;
                Observaciones    = this.SetObservaciones();

                ParametroUNegocio parametro = new ParametroUNegocio();
                parametro.UnidadNegocioID = this.UnidadNegocioID;
                parametro.Parametro       = SisPack.Parametro.ClienteGuiaRendicion;
                parametro.Consultar();

                if (parametro.ValorString == null)
                {
                    transaccion.Rollback();
                    return(false);
                }
                base.FechaDespacho  = DateTime.Now;
                DestinatarioCliente = Convert.ToInt32(parametro.ValorString);
                //Germán 16/06/2016 Problema en la emisión de guía unidad logística
                base.EmpresaFacturacionID = 1;

                if (base.Emitir(transaccion, usuario))
                {
                    guiasUnidadesLogisticas.GuiaID         = this.GuiaID;
                    guiasUnidadesLogisticas.AgenciaUsuaria = this.AgenciaOrigenID;
                    this.guiasUnidadesLogisticas.Guardar(transaccion, usuario, validarStock);
                }

                GuiaFacturaDetalle detalle = new GuiaFacturaDetalle();
                detalle.AgenciaOrigenID = this.AgenciaOrigenID;
                detalle.CantidadBultos  = 0;
                detalle.GuiaID          = this.GuiaID;

                parametro.Parametro = SisPack.Parametro.UnidadVentaUnidadLogistica;
                parametro.Consultar();
                if (parametro.ValorString == null)
                {
                    transaccion.Rollback();
                    return(false);
                }
                detalle.UnidadVentaID = Convert.ToInt32(parametro.ValorString);
                if (!detalle.Guardar(transaccion))
                {
                    transaccion.Rollback();
                    return(false);
                }

                // Si es un pedido de devolucion.
                if (EsPedidoDevolucion)
                {
                    DevolverGuiaUnidadLogistica(usuario, transaccion);
                }

                if (manejarTransaccionEnElMetodo)
                {
                    transaccion.Commit();
                    return(true);
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception ex)
            {
                if (manejarTransaccionEnElMetodo)
                {
                    transaccion.Rollback();
                }
                throw (ex);
            }
            finally
            {
                if (manejarTransaccionEnElMetodo)
                {
                    conexion.Close();
                }
            }
        }