Ejemplo n.º 1
0
        private void DatosFactura()
        {
            var dtsEmisor = new Contribuyente()
            {
                NroDocumento       = "20525411401",
                TipoDocumento      = "6",
                Direccion          = "MZA. 228 LOTE. 06 ZONA INDUSTRIAL  PIURA - PIURA - PIURA",
                Departamento       = "PIURA",
                Provincia          = "PIURA",
                Distrito           = "PIURA",
                NombreLegal        = "PIURAMAQ S.R.L.",
                NombreComercial    = "",
                Ubigeo             = "200101",
                CodDomicilioFiscal = "0000" //Código de cuatro dígitos asignado por SUNAT
            };

            var dtsReceptor = new Contribuyente()
            {
                NroDocumento    = "10472308616",
                TipoDocumento   = "6",
                NombreLegal     = "MEJIA MOSCOL JUAN JOSE",
                NombreComercial = "",
                Direccion       = "JR. TUMBES NRO. 100 CENTRO PIURA (A 1 CUADRA DE AV. LIBERTAD CON BOLOGNESI)"
            };

            for (var i = 1; i < 2; i++)
            {
                var dtsItems = new DetalleDocumento
                {
                    Id           = i,
                    Cantidad     = 2000,
                    UnidadMedida = "NIU",
                    CodigoItem   = "COD001",
                    //ItemClassificationCode = "82141601",// Este código será obligatorio para el 1-1-2019 - catálogo N° 15 del Anexo N° 8
                    Descripcion       = "PRODUCTO PRUEBA",
                    PrecioUnitario    = 21.92m,
                    PrecioReferencial = 25.86m,
                    TipoPrecio        = "01",
                    TipoImpuesto      = "10",
                    OtroImpuesto      = 0,
                    Descuento         = 0,
                    Suma              = 2000 * 21.92m,                           //_detalle.PrecioUnitario * _detalle.Cantidad
                    Impuesto          = (2000 * 21.92m) * _documento.CalculoIgv, //_detalle.Suma * _documento.CalculoIgv
                    ImpuestoSelectivo = 0,                                       //_detalle.Suma * _documento.CalculoIsc;
                    TotalVenta        = (2000 * 21.92m) - 0                      //_detalle.Suma - _detalle.Descuento
                };
                //Agregamos Detalle
                _documento.Items.Add(dtsItems);
            }

            _documento.IdDocumento   = "F001-00000001";
            _documento.TipoDocumento = "01";
            _documento.Emisor        = dtsEmisor;
            _documento.Receptor      = dtsReceptor;
            _documento.FechaEmision  = DateTime.Today.ToShortDateString();
            _documento.Moneda        = "PEN";
            _documento.TipoOperacion = "0101"; //Venta interna

            CalcularTotales();
        }
Ejemplo n.º 2
0
        protected void AgregarProd_Click(object sender, EventArgs e)
        {
            LinkButton button   = (LinkButton)sender;
            string     codigo   = (string)button.Attributes["data-codigo"];
            Producto   producto = productoBLL.GetProductos(codigo)[0];

            foreach (GridViewRow row in GridView1.Rows)
            {
                TextBox c = (TextBox)row.FindControl("txt_Cantidad");
                if (c is TextBox)
                {
                    TextBox tb = (TextBox)c;

                    if (codigo.Equals((string)c.Attributes["data-codigo"]))
                    {
                        int IdProd = productoBLL.getId(codigo);
                        int IdDoc  = documentoBLL.getId(folio);
                        DetalleDocumento detalleDocumento = new DetalleDocumento(int.Parse(tb.Text), producto.Precio, 0, IdDoc, IdProd, 0);

                        detalleDoc.Add(detalleDocumento);
                    }
                }
            }
            int neto = 0;

            foreach (DetalleDocumento doc in detalleDoc)
            {
                neto += doc.PrecioProducto;
            }
            txtNeto.Text  = neto.ToString();
            txtIva.Text   = (neto * 0.19).ToString();
            txtTotal.Text = (neto + (neto * 0.19)).ToString();
        }
Ejemplo n.º 3
0
        public List <DetalleDocumento> Read_DocumentoDetalle()
        {
            List <DetalleDocumento> detalleDocumentos = new List <DetalleDocumento>();

            DataTable dataTableDocumentoDetalle = readGeneralData.GetDataTable("[dbo].[Read_DocumentoDetalle]", "@IdCabeceraDocumento", IdCabeceraDocumento);
            DataRow   row;

            DetalleDocumento detalleDocumento;

            for (int i = 0; i < dataTableDocumentoDetalle.Rows.Count; i++)
            {
                row = dataTableDocumentoDetalle.Rows[i];
                detalleDocumento = new DetalleDocumento()
                {
                    IdDocumentoDetalle  = Convert.ToInt32(row["IdDocumentoDetalle"].ToString()),
                    NumeroOrden         = Convert.ToInt32(row["NumeroOrden"].ToString()),
                    ValorVenta          = Convert.ToDecimal(row["ValorVenta"].ToString()),
                    Moneda              = row["Moneda"].ToString(),
                    Cantidad            = Convert.ToDecimal(row["Cantidad"]),
                    UnidadMedida        = row["UnidadMedida"].ToString(),
                    CodigoItem          = row["CodigoItem"].ToString(),
                    TipoPrecio          = row["TipoPrecio"].ToString(),
                    Descuento           = Convert.ToDecimal(row["Descuento"].ToString()),
                    TotalVenta          = Convert.ToDecimal(row["TotalVenta"].ToString()),
                    CodigoProductoSunat = row["CodigoProductoSunat"].ToString(),
                    CodigoProducto      = row["CodigoProducto"].ToString()
                };
                detalleDocumentos.Add(detalleDocumento);
            }

            return(detalleDocumentos);
        }
Ejemplo n.º 4
0
        public List <DetalleDocumento> LeerVentaDetalle(String Sigla, String Serie, String Numeracion)
        {
            DetalleDocumento        ven   = null;
            List <DetalleDocumento> Items = new List <DetalleDocumento>();

            try
            {
                string consulta = @" SELECT F6_CITEM,F6_CCODIGO,F6_CDESCRI,F6_CUNIDAD,F6_NCANTID,F6_NPRECIO,F6_NIGV,F6_NIMPMN
                                     FROM INT_DOCELEDET  WHERE F6_CTD=@Sigla AND F6_CNUMSER=@Serie AND F6_CNUMDOC=@Numeracion  ";
                con.conectarBD();
                cmd = new SqlCommand(consulta, con.conector);
                cmd.Parameters.AddWithValue("@Sigla", Sigla);
                cmd.Parameters.AddWithValue("@Serie", Serie);
                cmd.Parameters.AddWithValue("@Numeracion", Numeracion);
                cmd.CommandType = CommandType.Text;
                dr = cmd.ExecuteReader();
                var totalRow = cmd.ExecuteScalar();
                if (dr.HasRows)
                {
                    Int32 i = 0;

                    while (dr.Read())
                    {
                        ven = new DetalleDocumento();
                        if (dr.GetString(1).Trim() != "TXT")
                        {
                            if (i > 0)
                            {
                                Items.Add(ven);
                            }
                            ven.Id          = Convert.ToInt32(dr.GetString(0));
                            ven.CodigoItem  = dr.GetString(1).Trim();
                            ven.Descripcion = dr.GetString(2).Trim();
                            //ven.UnidadMedida = dr.GetString(3).Trim();
                            ven.Cantidad       = dr.GetDecimal(4);
                            ven.PrecioUnitario = dr.GetDecimal(5);
                            ven.Suma           = Math.Round(ven.PrecioUnitario * ven.Cantidad, 2);
                            ven.SubTotalVenta  = Math.Round(ven.Suma / Convert.ToDecimal(1.18), 2);
                            ven.Impuesto       = Math.Round(ven.Suma - ven.SubTotalVenta, 2);
                            ven.TotalVenta     = Math.Round(ven.Suma, 2);
                            ven.TipoPrecio     = "01";
                            ven.TipoImpuesto   = "10";
                        }
                        else if (dr.GetString(1).Trim() == "TXT")
                        {
                            ven.Descripcion += dr.GetString(2).Trim();
                        }
                        i++;
                        //Items.Add(ven);
                    }
                }
                return(Items);
            }
            catch (SqlException ex)
            {
                throw ex;
            }
            finally { con.conector.Dispose(); cmd.Dispose(); con.desconectarBD(); }
        }
Ejemplo n.º 5
0
        private void DatosBoleta()
        {
            var dtsEmisor = new Contribuyente()
            {
                NroDocumento       = "20556442259",
                TipoDocumento      = "6",
                Direccion          = "CAL.GERMAN SCHREIBER NRO. 276 LIMA - LIMA - SAN ISIDRO",
                Departamento       = "PIURA",
                Provincia          = "PIURA",
                Distrito           = "PIURA",
                NombreLegal        = "LUNA VERDE SOCIEDAD ANONIMA CERRADA",
                NombreComercial    = "",
                Ubigeo             = "150131",
                CodDomicilioFiscal = "0000" //Código de cuatro dígitos asignado por SUNAT
            };

            var dtsReceptor = new Contribuyente()
            {
                NroDocumento    = "47961796",
                TipoDocumento   = "1",
                NombreLegal     = "ERWIN STALIN TORRES LEON",
                NombreComercial = "",
                Direccion       = "PIURA - PIURA"
            };

            _documento.CalculoIgv = 0.18m;
            var dtsItems = new DetalleDocumento
            {
                Id                = 1,
                Cantidad          = 1,
                UnidadMedida      = "NIU",
                CodigoItem        = "COD001",
                Descripcion       = "PRODUCTO PRUEBA",
                PrecioUnitario    = 1.50m,
                PrecioReferencial = 20m,
                TipoPrecio        = "01",
                TipoImpuesto      = "10",
                OtroImpuesto      = 0,
                Descuento         = 0,
                Suma              = 1.50m * 1m,                           //_detalle.PrecioUnitario * _detalle.Cantidad
                Impuesto          = (1.50m * 1m) * _documento.CalculoIgv, //_detalle.Suma * _documento.CalculoIgv
                ImpuestoSelectivo = 0,                                    //_detalle.Suma * _documento.CalculoIsc;
                TotalVenta        = (1.5m * 1m) - 0                       //_detalle.Suma - _detalle.Descuento
            };

            _documento.IdDocumento   = "B005-00000006";
            _documento.TipoDocumento = "03";
            _documento.Emisor        = dtsEmisor;
            _documento.Receptor      = dtsReceptor;
            _documento.FechaEmision  = DateTime.Today.ToShortDateString();
            _documento.IssueTime     = String.Format("{0:HH:mm:ss}", DateTime.Now);
            _documento.Moneda        = "PEN";
            _documento.TipoOperacion = "0101";
            //Agregamos Detalle
            _documento.Items.Add(dtsItems);
            CalcularTotales();
        }
Ejemplo n.º 6
0
        private void DatosBoleta()
        {
            var dtsEmisor = new Contribuyente()
            {
                NroDocumento    = "20525411401",
                TipoDocumento   = "6",
                Direccion       = "MZA. 228 LOTE. 06 ZONA INDUSTRIAL  PIURA - PIURA - PIURA",
                Departamento    = "PIURA",
                Provincia       = "PIURA",
                Distrito        = "PIURA",
                NombreLegal     = "PIURAMAQ S.R.L.",
                NombreComercial = "",
                Ubigeo          = "200101"
            };

            var dtsReceptor = new Contribuyente()
            {
                NroDocumento    = "47230861",
                TipoDocumento   = "1",
                NombreLegal     = "MEJIA MOSCOL JUAN JOSE",
                NombreComercial = "",
                Direccion       = "JR. TUMBES NRO. 100 CENTRO PIURA (A 1 CUADRA DE AV. LIBERTAD CON BOLOGNESI)"
            };

            var dtsItems = new DetalleDocumento
            {
                Id                = 1,
                Cantidad          = 2000,
                UnidadMedida      = "NIU",
                CodigoItem        = "COD001",
                Descripcion       = "PRODUCTO PRUEBA",
                PrecioUnitario    = 21.92m,
                PrecioReferencial = 25.86m,
                TipoPrecio        = "01",
                TipoImpuesto      = "10",
                OtroImpuesto      = 0,
                Descuento         = 0,
                Suma              = 2000 * 21.92m,                           //_detalle.PrecioUnitario * _detalle.Cantidad
                Impuesto          = (2000 * 21.92m) * _documento.CalculoIgv, //_detalle.Suma * _documento.CalculoIgv
                ImpuestoSelectivo = 0,                                       //_detalle.Suma * _documento.CalculoIsc;
                TotalVenta        = (2000 * 21.92m) - 0                      //_detalle.Suma - _detalle.Descuento
            };

            _documento.IdDocumento   = "B001-00000001";
            _documento.TipoDocumento = "03";
            _documento.Emisor        = dtsEmisor;
            _documento.Receptor      = dtsReceptor;
            _documento.FechaEmision  = DateTime.Today.ToShortDateString();
            _documento.Moneda        = "PEN";
            _documento.TipoOperacion = "0101";
            //Agregamos Detalle
            _documento.Items.Add(dtsItems);
            CalcularTotales();
        }
Ejemplo n.º 7
0
        public bool insertdetalle(int idrepo, DetalleDocumento Detalle)
        {
            bool id = false;

            try
            {
                con.conectarBD();
                tra             = con.conector.BeginTransaction();
                cmd             = new MySqlCommand("registro_detcomprobante", con.conector);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new MySqlParameter("@_idrepositorio", MySqlDbType.Int32));
                cmd.Parameters.Add(new MySqlParameter("@_nombreproducto", MySqlDbType.VarChar));
                cmd.Parameters.Add(new MySqlParameter("@_cantidad", MySqlDbType.Decimal));
                cmd.Parameters.Add(new MySqlParameter("@_unidadmedida", MySqlDbType.VarChar));
                cmd.Parameters.Add(new MySqlParameter("@_subtotal", MySqlDbType.Decimal));
                cmd.Parameters.Add(new MySqlParameter("@_igv", MySqlDbType.Decimal));
                cmd.Parameters.Add(new MySqlParameter("@_total", MySqlDbType.Decimal));
                cmd.Parameters.Add(new MySqlParameter("@_precio", MySqlDbType.Decimal));

                cmd.Parameters[0].Value = idrepo;
                cmd.Parameters[1].Value = Detalle.Descripcion;
                cmd.Parameters[2].Value = Detalle.Cantidad;
                cmd.Parameters[3].Value = Detalle.UnidadMedida;
                cmd.Parameters[4].Value = Detalle.SubTotalVenta;
                cmd.Parameters[5].Value = Detalle.Impuesto;
                cmd.Parameters[6].Value = Detalle.TotalVenta;
                cmd.Parameters[7].Value = Detalle.PrecioUnitario;

                dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        id = true;
                    }
                    dr.Close();
                }
                tra.Commit();
                return(id);
            }
            catch (MySqlException ex)
            {
                tra.Rollback();
                return(id);

                throw ex;
            }
            finally { con.conector.Dispose(); cmd.Dispose(); con.desconectarBD(); }
        }
Ejemplo n.º 8
0
        public ActionResult GuardarCambios(int idDetalle, int IdDocumento, string fecha, string emisor, string numero, string valor, string comentarios)
        {
            DetalleDocumento obj = db.DetalleDocumentos.Find(idDetalle);

            obj.DocumentoId     = IdDocumento;
            obj.Fecha           = DateTime.Parse(fecha);
            obj.Emisor          = emisor;
            obj.Numero          = int.Parse(numero);
            obj.Valor           = double.Parse(valor);
            obj.Comentarios     = comentarios;
            db.Entry(obj).State = EntityState.Modified;
            int a = db.SaveChanges();

            return(Json(new { a }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 9
0
        public ActionResult AddNuevo(int IdReclamo, int IdDocumento, string fecha, string emisor, string numero, string valor, string comentarios)
        {
            DetalleDocumento nuevo = new DetalleDocumento();

            nuevo.ReclamoId   = IdReclamo;
            nuevo.DocumentoId = IdDocumento;
            nuevo.Fecha       = DateTime.Parse(fecha);
            nuevo.Emisor      = emisor;
            nuevo.Numero      = int.Parse(numero);
            nuevo.Valor       = double.Parse(valor);
            nuevo.Comentarios = comentarios;
            db.DetalleDocumentos.Add(nuevo);
            int x = db.SaveChanges();

            return(Json(new { x }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 10
0
        private void btnDuplicar_Click(object sender, EventArgs e)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                var registro = detallesBindingSource.Current as DetalleDocumento;
                if (registro == null)
                {
                    throw new ArgumentNullException(nameof(registro));
                }

                var copia = new DetalleDocumento
                {
                    Id                = registro.Id,
                    Cantidad          = registro.Cantidad,
                    CodigoItem        = registro.CodigoItem,
                    Descripcion       = registro.Descripcion,
                    PrecioUnitario    = registro.PrecioUnitario,
                    PrecioReferencial = registro.PrecioReferencial,
                    UnidadMedida      = registro.UnidadMedida,
                    Impuesto          = registro.Impuesto,
                    ImpuestoSelectivo = registro.ImpuestoSelectivo,
                    TipoImpuesto      = registro.TipoImpuesto,
                    TipoPrecio        = registro.TipoPrecio,
                    TotalVenta        = registro.TotalVenta,
                    Suma              = registro.Suma,
                    OtroImpuesto      = registro.OtroImpuesto
                };

                copia.Id = copia.Id + 1;
                _documento.Items.Add(copia);

                CalcularTotales();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
Ejemplo n.º 11
0
        public FrmDetalleDocumento(DetalleDocumento detalle, DocumentoElectronico documento)
        {
            InitializeComponent();
            _detalle   = detalle;
            _documento = documento;

            detalleDocumentoBindingSource.DataSource = detalle;
            detalleDocumentoBindingSource.ResetBindings(false);

            Load += (s, e) =>
            {
                using (var ctx = new OpenInvoicePeruDb())
                {
                    tipoImpuestoBindingSource.DataSource = ctx.TipoImpuestos.ToList();
                    tipoImpuestoBindingSource.ResetBindings(false);

                    tipoPrecioBindingSource.DataSource = ctx.TipoPrecios.ToList();
                    tipoPrecioBindingSource.ResetBindings(false);
                }
            };
        }
Ejemplo n.º 12
0
        public static DetalleDocumento DetalleItem(DataTable DtArticulos, int i)
        {
            decimal vPrecioUnitario = 0;

            try
            {
                if (Convert.ToDecimal(DtArticulos.Rows[i]["Productocantidad"]) == 0)
                {
                    vPrecioUnitario = Convert.ToDecimal(DtArticulos.Rows[i]["Preciovta"]);
                }
                else
                {
                    vPrecioUnitario = Convert.ToDecimal(DtArticulos.Rows[i]["Preciovta"]);
                }

                DetalleDocumento detalle = new DetalleDocumento();

                detalle.Id                = Convert.ToInt32(i + 1);
                detalle.Cantidad          = Convert.ToDecimal(DtArticulos.Rows[i]["Productocantidad"]);
                detalle.PrecioReferencial = vPrecioUnitario;
                detalle.PrecioUnitario    = vPrecioUnitario;
                detalle.TipoPrecio        = Convert.ToString(DtArticulos.Rows[i]["TipodePrecio"]);
                detalle.CodigoItem        = Convert.ToString(DtArticulos.Rows[i]["ProductoCodigo"]);
                detalle.Descripcion       = Convert.ToString(DtArticulos.Rows[i]["Productodescripcion"]);
                detalle.UnidadMedida      = "NIU";
                detalle.Impuesto          = Convert.ToDecimal(DtArticulos.Rows[i]["ItemIgv"]);
                detalle.TipoImpuesto      = Convert.ToString(DtArticulos.Rows[i]["TipodeImpuesto"]);
                detalle.ImpuestoSelectivo = Convert.ToDecimal(DtArticulos.Rows[i]["itemIsc"]);
                detalle.OtroImpuesto      = 0;
                detalle.TotalVenta        = Convert.ToDecimal(DtArticulos.Rows[i]["ItemVenta"]);
                detalle.Suma              = Convert.ToDecimal(DtArticulos.Rows[i]["ItemVenta"]);

                return(detalle);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(null);
            }
        }
        public List <DetalleDocumento> consultaDDocumento(int idDocumento)
        {
            try
            {
                ConexionBD conexion = new ConexionBD();
                conexion.abrirConexion();
                string         sql     = "SELECT * FROM detalleDocumento where documento_id=@documento_id";
                SqlDataAdapter sqlData = new SqlDataAdapter(sql, conexion.Conexion);

                sqlData.SelectCommand.Parameters.AddWithValue("@documento_id", SqlDbType.Int);
                sqlData.SelectCommand.Parameters["@documento_id"].Value = idDocumento;


                DataTable dataTable = new DataTable();


                sqlData.Fill(dataTable);
                conexion.cerrarConexion();
                List <DetalleDocumento> detalleD = new List <DetalleDocumento>();
                if (dataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < dataTable.Rows.Count; i++)
                    {
                        DetalleDocumento detalleAux = new DetalleDocumento();
                        detalleAux.CantidadProducto = int.Parse(dataTable.Rows[i]["cantidadProducto"].ToString());
                        detalleAux.PrecioProducto   = int.Parse(dataTable.Rows[i]["precioProducto"].ToString());
                        detalleAux.IdProducto       = int.Parse(dataTable.Rows[i]["producto_id"].ToString());
                        detalleAux.IdDocumento      = int.Parse(dataTable.Rows[i]["documento_id"].ToString());
                        detalleAux.Estado           = int.Parse(dataTable.Rows[i]["estado"].ToString());
                        detalleD.Add(detalleAux);
                    }
                }
                return(detalleD);
            }
            catch (Exception)
            {
                throw;
            }
        }
Ejemplo n.º 14
0
        public static DetalleDocumento DetalleItem(DataTable DtArticulos, int i)
        {
            decimal vPrecioUnitario = 0;

            try
            {
                if ((double)Convert.ToDecimal(DtArticulos.Rows[i]["Productocantidad"]) == 0)
                {
                    vPrecioUnitario = Convert.ToDecimal(DtArticulos.Rows[i]["Preciovta"]);
                }
                else
                {
                    vPrecioUnitario = Convert.ToDecimal(DtArticulos.Rows[i]["Preciovta"]) /
                                      Convert.ToDecimal(DtArticulos.Rows[i]["Productocantidad"]);
                }

                DetalleDocumento detalle = new DetalleDocumento
                {
                    Id                = i + 1,
                    Cantidad          = Convert.ToDecimal(DtArticulos.Rows[i]["Productocantidad"]),
                    PrecioReferencial = vPrecioUnitario,
                    PrecioUnitario    = vPrecioUnitario,
                    TipoPrecio        = "01",
                    CodigoItem        = Convert.ToString(DtArticulos.Rows[i]["ProductoCodigo"]),
                    Descripcion       = Convert.ToString(DtArticulos.Rows[i]["Productodescripcion"]),
                    UnidadMedida      = "KG",
                    Impuesto          = Convert.ToDecimal(DtArticulos.Rows[i]["ItemIgv"]),
                    TipoImpuesto      = "10",
                    TotalVenta        = Convert.ToDecimal(DtArticulos.Rows[i]["ItemVenta"]),
                    Suma              = Convert.ToDecimal(DtArticulos.Rows[i]["ItemVenta"]),
                };
                return(detalle);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Ejemplo n.º 15
0
 public bool updatedetalle(DetalleDocumento Detalle)
 {
     return(detallecomp.updatedetalle(Detalle));
 }
Ejemplo n.º 16
0
 public bool insertdetalle(int repo, DetalleDocumento Detalle)
 {
     return(detallecomp.insertdetalle(repo, Detalle));
 }
Ejemplo n.º 17
0
        public List <DetalleDocumento> ConsultarDetalleDocumento(ConsultaDetalleDocumento request)
        { // lstDocumentoDetalleFlete
            List <DetalleDocumento> lsDetalleDocumento = new List <DetalleDocumento>();
            List <DocumentoDetalleCargaConsulta>   lstDocumentoDetalleCarga   = new List <DocumentoDetalleCargaConsulta>();
            List <DocumentoDetalleClienteConsulta> lstDocumentoDetalleCliente = new List <DocumentoDetalleClienteConsulta>();
            List <DocumentoDetalleFleteConsulta>   lstDocumentoDetalleFlete   = new List <DocumentoDetalleFleteConsulta>();

            using (SqlConnection conexion = new SqlConnection(ContextoParaBaseDatos.DecryptedConnectionString("TransmisionesDB")))
            {
                Dictionary <string, object> parametrosIn = new Dictionary <string, object>();

                parametrosIn.Add("@CodigoDocumento", request.CodigoDocumento);

                using (SqlCommand cmd = SqlHelper.CreateCommandWithParameters("USP_CONSULTAR_DETALLE_DOCUMENTO", conexion, parametrosIn, true))
                {
                    using (IDataReader dr = cmd.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            DetalleDocumento Documento = new DetalleDocumento();

                            Documento.CodigoDocumento               = dr.IsDBNull(dr.GetOrdinal("CodigoDocumento")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoDocumento"));
                            Documento.CodigoItinerario              = dr.IsDBNull(dr.GetOrdinal("CodigoItinerario")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoItinerario"));
                            Documento.NombreNave                    = dr.IsDBNull(dr.GetOrdinal("NombreNave")) ? "" : dr.GetString(dr.GetOrdinal("NombreNave")).Trim();
                            Documento.NumeroViajeItinerario         = dr.IsDBNull(dr.GetOrdinal("NumeroViajeItinerario")) ? "" : dr.GetString(dr.GetOrdinal("NumeroViajeItinerario")).Trim();
                            Documento.NombreAduanaNave              = dr.IsDBNull(dr.GetOrdinal("NombreAduanaNave")) ? "" : dr.GetString(dr.GetOrdinal("NombreAduanaNave")).Trim();
                            Documento.NombreTipoOperacion           = dr.IsDBNull(dr.GetOrdinal("NombreTipoOperacion")) ? "" : dr.GetString(dr.GetOrdinal("NombreTipoOperacion")).Trim();
                            Documento.CodigoPuertoOrigenDocumento   = dr.IsDBNull(dr.GetOrdinal("CodigoPuertoOrigenDocumento")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoPuertoOrigenDocumento"));
                            Documento.NombrePuertoOrigen            = dr.IsDBNull(dr.GetOrdinal("NombrePuertoOrigen")) ? "" : dr.GetString(dr.GetOrdinal("NombrePuertoOrigen")).Trim();
                            Documento.CodigoPuertoEmbarqueDocumento = dr.IsDBNull(dr.GetOrdinal("CodigoPuertoEmbarqueDocumento")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoPuertoEmbarqueDocumento"));
                            Documento.NombrePuertoEmbarque          = dr.IsDBNull(dr.GetOrdinal("NombrePuertoEmbarque")) ? "" : dr.GetString(dr.GetOrdinal("NombrePuertoEmbarque")).Trim();
                            Documento.CodigoPuertoDescargaDocumento = dr.IsDBNull(dr.GetOrdinal("CodigoPuertoDescargaDocumento")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoPuertoDescargaDocumento"));
                            Documento.NombrePuertoDescarga          = dr.IsDBNull(dr.GetOrdinal("NombrePuertoDescarga")) ? "" : dr.GetString(dr.GetOrdinal("NombrePuertoDescarga")).Trim();
                            Documento.CodigoPuertoFinalDocumento    = dr.IsDBNull(dr.GetOrdinal("CodigoPuertoFinalDocumento")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoPuertoFinalDocumento"));
                            Documento.NombrePuertoFinal             = dr.IsDBNull(dr.GetOrdinal("NombrePuertoFinal")) ? "" : dr.GetString(dr.GetOrdinal("NombrePuertoFinal")).Trim();
                            Documento.CodigoLineaNaviera            = dr.IsDBNull(dr.GetOrdinal("CodigoLineaNaviera")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoLineaNaviera"));
                            Documento.NombreLineaNaviera            = dr.IsDBNull(dr.GetOrdinal("NombreLineaNaviera")) ? "" : dr.GetString(dr.GetOrdinal("NombreLineaNaviera")).Trim();
                            Documento.CodigoAduana                  = dr.IsDBNull(dr.GetOrdinal("CodigoAduana")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoAduana"));
                            Documento.NombreAduana                  = dr.IsDBNull(dr.GetOrdinal("NombreAduana")) ? "" : dr.GetString(dr.GetOrdinal("NombreAduana")).Trim();
                            Documento.CodigoTipoBL                  = dr.IsDBNull(dr.GetOrdinal("CodigoTipoBL")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoTipoBL"));
                            Documento.NombreTipoBL                  = dr.IsDBNull(dr.GetOrdinal("NombreTipoBL")) ? "" : dr.GetString(dr.GetOrdinal("NombreTipoBL")).Trim();
                            Documento.CodigoTipoEnvio               = dr.IsDBNull(dr.GetOrdinal("CodigoTipoEnvio")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoTipoEnvio"));
                            Documento.NombreTipoEnvio               = dr.IsDBNull(dr.GetOrdinal("NombreTipoEnvio")) ? "" : dr.GetString(dr.GetOrdinal("NombreTipoEnvio")).Trim();
                            Documento.CodigoCondicionContrato       = dr.IsDBNull(dr.GetOrdinal("CodigoCondicionContrato")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoCondicionContrato"));
                            Documento.NombreCondicionContrato       = dr.IsDBNull(dr.GetOrdinal("NombreCondicionContrato")) ? "" : dr.GetString(dr.GetOrdinal("NombreCondicionContrato")).Trim();
                            Documento.CodigoRequerimientoServicio   = dr.IsDBNull(dr.GetOrdinal("CodigoRequerimientoServicio")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoRequerimientoServicio"));
                            Documento.NombreRequerimientoServicio   = dr.IsDBNull(dr.GetOrdinal("NombreRequerimientoServicio")) ? "" : dr.GetString(dr.GetOrdinal("NombreRequerimientoServicio")).Trim();
                            Documento.NumeroDocumento               = dr.IsDBNull(dr.GetOrdinal("NumeroDocumento")) ? "" : dr.GetString(dr.GetOrdinal("NumeroDocumento")).Trim();
                            Documento.FechaEmisionDocumento         = dr.IsDBNull(dr.GetOrdinal("FechaEmisionDocumento")) ? new Nullable <DateTime>() : dr.GetDateTime(dr.GetOrdinal("FechaEmisionDocumento"));
                            Documento.FechaEmbarqueDocumento        = dr.IsDBNull(dr.GetOrdinal("FechaEmbarqueDocumento")) ? new Nullable <DateTime>() : dr.GetDateTime(dr.GetOrdinal("FechaEmbarqueDocumento"));
                            Documento.EstadoRegistro                = dr.GetBoolean(dr.GetOrdinal("EstadoRegistro"));
                            Documento.UsuarioCreacion               = dr.IsDBNull(dr.GetOrdinal("UsuarioCreacion")) ? "" : dr.GetString(dr.GetOrdinal("UsuarioCreacion")).Trim();
                            Documento.FechaHoraCreacion             = dr.IsDBNull(dr.GetOrdinal("FechaHoraCreacion")) ? new Nullable <DateTime>() : dr.GetDateTime(dr.GetOrdinal("FechaHoraCreacion"));
                            Documento.UsuarioActualizacion          = dr.IsDBNull(dr.GetOrdinal("UsuarioActualizacion")) ? "" : dr.GetString(dr.GetOrdinal("UsuarioActualizacion")).Trim();
                            Documento.FechaHoraActualizacion        = dr.IsDBNull(dr.GetOrdinal("FechaHoraActualizacion")) ? new Nullable <DateTime>() : dr.GetDateTime(dr.GetOrdinal("FechaHoraActualizacion"));

                            lsDetalleDocumento.Add(Documento);
                        }

                        dr.NextResult();

                        while (dr.Read())
                        {
                            DocumentoDetalleCargaConsulta DetalleCargaConsulta = new DocumentoDetalleCargaConsulta();
                            {
                                DetalleCargaConsulta.CodigoDocumentoDetalleCarga = dr.IsDBNull(dr.GetOrdinal("CodigoDocumentoDetalleCarga")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoDocumentoDetalleCarga"));
                                DetalleCargaConsulta.CodigoDocumento             = dr.IsDBNull(dr.GetOrdinal("CodigoDocumento")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoDocumento"));
                                DetalleCargaConsulta.CodigoContenedor            = dr.IsDBNull(dr.GetOrdinal("CodigoContenedor")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoContenedor"));
                                DetalleCargaConsulta.NumeroContenedor            = dr.IsDBNull(dr.GetOrdinal("NumeroContenedor")) ? "" : dr.GetString(dr.GetOrdinal("NumeroContenedor")).Trim();
                                DetalleCargaConsulta.NombreTipoContenedor        = dr.IsDBNull(dr.GetOrdinal("NombreTipoContenedor")) ? "" : dr.GetString(dr.GetOrdinal("NombreTipoContenedor")).Trim();
                                DetalleCargaConsulta.TamanioTipoContenedor       = dr.IsDBNull(dr.GetOrdinal("TamanioTipoContenedor")) ? "" : dr.GetString(dr.GetOrdinal("TamanioTipoContenedor")).Trim();
                                DetalleCargaConsulta.CodigoCondicionTransporte   = dr.IsDBNull(dr.GetOrdinal("CodigoCondicionTransporte")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoCondicionTransporte"));
                                DetalleCargaConsulta.NombreCondicionTransporte   = dr.IsDBNull(dr.GetOrdinal("NombreCondicionTransporte")) ? "" : dr.GetString(dr.GetOrdinal("NombreCondicionTransporte")).Trim();
                                DetalleCargaConsulta.CodigoTipoMovimiento        = dr.IsDBNull(dr.GetOrdinal("CodigoTipoMovimiento")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoTipoMovimiento"));
                                DetalleCargaConsulta.NombreTipoMovimiento        = dr.IsDBNull(dr.GetOrdinal("NombreTipoMovimiento")) ? "" : dr.GetString(dr.GetOrdinal("NombreTipoMovimiento")).Trim();
                                DetalleCargaConsulta.CodigoUnidadMercancia       = dr.IsDBNull(dr.GetOrdinal("CodigoUnidadMercancia")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoUnidadMercancia"));
                                DetalleCargaConsulta.NombreUnidadMercancia       = dr.IsDBNull(dr.GetOrdinal("NombreUnidadMercancia")) ? "" : dr.GetString(dr.GetOrdinal("NombreUnidadMercancia")).Trim();
                                DetalleCargaConsulta.CodigoNaturalezaCarga       = dr.IsDBNull(dr.GetOrdinal("CodigoNaturalezaCarga")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoNaturalezaCarga"));
                                DetalleCargaConsulta.NombreNaturalezaCarga       = dr.IsDBNull(dr.GetOrdinal("NombreNaturalezaCarga")) ? "" : dr.GetString(dr.GetOrdinal("NombreNaturalezaCarga")).Trim();
                                DetalleCargaConsulta.CodigoCondicionCarga        = dr.IsDBNull(dr.GetOrdinal("CodigoCondicionCarga")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoCondicionCarga"));
                                DetalleCargaConsulta.NombreCondicionCarga        = dr.IsDBNull(dr.GetOrdinal("NombreCondicionCarga")) ? "" : dr.GetString(dr.GetOrdinal("NombreCondicionCarga")).Trim();
                                DetalleCargaConsulta.CodigoTemperatura           = dr.IsDBNull(dr.GetOrdinal("CodigoTemperatura")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoTemperatura"));
                                DetalleCargaConsulta.NombreTemperatura           = dr.IsDBNull(dr.GetOrdinal("NombreTemperatura")) ? "" : dr.GetString(dr.GetOrdinal("NombreTemperatura")).Trim();
                                DetalleCargaConsulta.CodigoClaseIMO  = dr.IsDBNull(dr.GetOrdinal("CodigoClaseIMO")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoClaseIMO"));
                                DetalleCargaConsulta.NombreClaseIMO  = dr.IsDBNull(dr.GetOrdinal("NombreClaseIMO")) ? "" : dr.GetString(dr.GetOrdinal("NombreClaseIMO")).Trim();
                                DetalleCargaConsulta.CodigoNumeroIMO = dr.IsDBNull(dr.GetOrdinal("CodigoNumeroIMO")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoNumeroIMO"));
                                DetalleCargaConsulta.NombreNumeroIMO = dr.IsDBNull(dr.GetOrdinal("NombreNumeroIMO")) ? "" : dr.GetString(dr.GetOrdinal("NombreNumeroIMO")).Trim();
                                DetalleCargaConsulta.CodigoAlmacenDocumentoDetalleCarga = dr.IsDBNull(dr.GetOrdinal("CodigoAlmacenDocumentoDetalleCarga")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoAlmacenDocumentoDetalleCarga"));
                                DetalleCargaConsulta.NombreAlmacen = dr.IsDBNull(dr.GetOrdinal("NombreAlmacen")) ? "" : dr.GetString(dr.GetOrdinal("NombreAlmacen")).Trim();
                                DetalleCargaConsulta.CodigoDepositoDocumentoDetalleCarga = dr.IsDBNull(dr.GetOrdinal("CodigoDepositoDocumentoDetalleCarga")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoDepositoDocumentoDetalleCarga"));
                                DetalleCargaConsulta.NombreDeposito                         = dr.IsDBNull(dr.GetOrdinal("NombreDeposito")) ? "" : dr.GetString(dr.GetOrdinal("NombreDeposito")).Trim();
                                DetalleCargaConsulta.CodigoPrecinto                         = dr.IsDBNull(dr.GetOrdinal("CodigoPrecinto")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoPrecinto"));
                                DetalleCargaConsulta.NumeroPrecinto                         = dr.IsDBNull(dr.GetOrdinal("NumeroPrecinto")) ? "" : dr.GetString(dr.GetOrdinal("NumeroPrecinto")).Trim();
                                DetalleCargaConsulta.ItemDocumentoDetalleCarga              = dr.IsDBNull(dr.GetOrdinal("ItemDocumentoDetalleCarga")) ? 0 : dr.GetInt32(dr.GetOrdinal("ItemDocumentoDetalleCarga"));
                                DetalleCargaConsulta.CantidadBultoDocumentoDetalleCarga     = dr.IsDBNull(dr.GetOrdinal("CantidadBultoDocumentoDetalleCarga")) ? 0 : dr.GetInt32(dr.GetOrdinal("CantidadBultoDocumentoDetalleCarga"));
                                DetalleCargaConsulta.PesoBrutoDocumentoDetalleCarga         = dr.IsDBNull(dr.GetOrdinal("PesoBrutoDocumentoDetalleCarga")) ? new Nullable <Decimal>() : dr.GetDecimal(dr.GetOrdinal("PesoBrutoDocumentoDetalleCarga"));
                                DetalleCargaConsulta.VolumenBrutoDocumentoDetalleCarga      = dr.IsDBNull(dr.GetOrdinal("VolumenBrutoDocumentoDetalleCarga")) ? new Nullable <Decimal>() : dr.GetDecimal(dr.GetOrdinal("VolumenBrutoDocumentoDetalleCarga"));
                                DetalleCargaConsulta.TemperaturaMinimaDocumentoDetalleCarga = dr.IsDBNull(dr.GetOrdinal("TemperaturaMinimaDocumentoDetalleCarga")) ? new Nullable <Decimal>() : dr.GetDecimal(dr.GetOrdinal("TemperaturaMinimaDocumentoDetalleCarga"));
                                DetalleCargaConsulta.TemperaturaMaximaDocumentoDetalleCarga = dr.IsDBNull(dr.GetOrdinal("TemperaturaMaximaDocumentoDetalleCarga")) ? new Nullable <Decimal>() : dr.GetDecimal(dr.GetOrdinal("TemperaturaMaximaDocumentoDetalleCarga"));
                                DetalleCargaConsulta.PropietarioDocumentoDetalleCarga       = dr.IsDBNull(dr.GetOrdinal("PropietarioDocumentoDetalleCarga")) ? false : dr.GetBoolean(dr.GetOrdinal("PropietarioDocumentoDetalleCarga"));
                                DetalleCargaConsulta.ObservacionDocumentoDetalleCarga       = dr.IsDBNull(dr.GetOrdinal("ObservacionDocumentoDetalleCarga")) ? "" : dr.GetString(dr.GetOrdinal("ObservacionDocumentoDetalleCarga")).Trim();
                                DetalleCargaConsulta.DescripcionDocumentoDetalleCarga       = dr.IsDBNull(dr.GetOrdinal("DescripcionDocumentoDetalleCarga")) ? "" : dr.GetString(dr.GetOrdinal("DescripcionDocumentoDetalleCarga")).Trim();
                                DetalleCargaConsulta.MarcasNumerosDocumentoDetalleCarga     = dr.IsDBNull(dr.GetOrdinal("MarcasNumerosDocumentoDetalleCarga")) ? "" : dr.GetString(dr.GetOrdinal("MarcasNumerosDocumentoDetalleCarga")).Trim();
                                DetalleCargaConsulta.FaltoDocumentoDetalleCarga             = dr.IsDBNull(dr.GetOrdinal("FaltoDocumentoDetalleCarga")) ? false : dr.GetBoolean(dr.GetOrdinal("FaltoDocumentoDetalleCarga"));
                            };

                            lstDocumentoDetalleCarga.Add(DetalleCargaConsulta);
                        }

                        dr.NextResult();

                        while (dr.Read())
                        {
                            DocumentoDetalleClienteConsulta DetalleClienteConsulta = new DocumentoDetalleClienteConsulta();
                            {
                                DetalleClienteConsulta.CodigoDocumentoDetalleCliente = dr.IsDBNull(dr.GetOrdinal("CodigoDocumentoDetalleCliente")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoDocumentoDetalleCliente"));
                                DetalleClienteConsulta.CodigoDocumento    = dr.IsDBNull(dr.GetOrdinal("CodigoDocumento")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoDocumento"));
                                DetalleClienteConsulta.CodigoRol          = dr.IsDBNull(dr.GetOrdinal("CodigoRol")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoRol"));
                                DetalleClienteConsulta.NombreRol          = dr.IsDBNull(dr.GetOrdinal("NombreRol")) ? "" : dr.GetString(dr.GetOrdinal("NombreRol")).Trim();
                                DetalleClienteConsulta.CodigoPersona      = dr.IsDBNull(dr.GetOrdinal("CodigoPersona")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoPersona"));
                                DetalleClienteConsulta.RazonSocialPersona = dr.IsDBNull(dr.GetOrdinal("RazonSocialPersona")) ? "" : dr.GetString(dr.GetOrdinal("RazonSocialPersona")).Trim();
                            };

                            lstDocumentoDetalleCliente.Add(DetalleClienteConsulta);
                        }

                        dr.NextResult();

                        while (dr.Read())
                        {
                            DocumentoDetalleFleteConsulta DetalleFleteConsulta = new DocumentoDetalleFleteConsulta();
                            {
                                DetalleFleteConsulta.CodigoDocumentoDetalleFlete = dr.IsDBNull(dr.GetOrdinal("CodigoDocumentoDetalleFlete")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoDocumentoDetalleFlete"));
                                DetalleFleteConsulta.CodigoDocumento             = dr.IsDBNull(dr.GetOrdinal("CodigoDocumento")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoDocumento"));
                                DetalleFleteConsulta.CodigoTipoFlete             = dr.IsDBNull(dr.GetOrdinal("CodigoTipoFlete")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoTipoFlete"));
                                DetalleFleteConsulta.NombreTipoFlete             = dr.IsDBNull(dr.GetOrdinal("NombreTipoFlete")) ? "" : dr.GetString(dr.GetOrdinal("NombreTipoFlete")).Trim();
                                DetalleFleteConsulta.CodigoMoneda               = dr.IsDBNull(dr.GetOrdinal("CodigoMoneda")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoMoneda"));
                                DetalleFleteConsulta.NombreMoneda               = dr.IsDBNull(dr.GetOrdinal("NombreMoneda")) ? "" : dr.GetString(dr.GetOrdinal("NombreMoneda")).Trim();
                                DetalleFleteConsulta.CodigoModoPago             = dr.IsDBNull(dr.GetOrdinal("CodigoModoPago")) ? 0 : dr.GetInt64(dr.GetOrdinal("CodigoModoPago"));
                                DetalleFleteConsulta.NombreModoPago             = dr.IsDBNull(dr.GetOrdinal("NombreModoPago")) ? "" : dr.GetString(dr.GetOrdinal("NombreModoPago")).Trim();
                                DetalleFleteConsulta.MontoDocumentoDetalleFlete = dr.IsDBNull(dr.GetOrdinal("MontoDocumentoDetalleFlete")) ? new Nullable <Decimal>() : dr.GetDecimal(dr.GetOrdinal("MontoDocumentoDetalleFlete"));
                            };

                            lstDocumentoDetalleFlete.Add(DetalleFleteConsulta);
                        }

                        SqlHelper.CloseConnection(conexion);
                    }

                    foreach (var objDocumento in lsDetalleDocumento)
                    {
                        objDocumento.ListaDocumentoDetalleCarga   = lstDocumentoDetalleCarga.Where(x => x.CodigoDocumento == objDocumento.CodigoDocumento).ToList();
                        objDocumento.ListaDocumentoDetalleCliente = lstDocumentoDetalleCliente.Where(x => x.CodigoDocumento == objDocumento.CodigoDocumento).ToList();
                        objDocumento.ListaDocumentoDetalleFlete   = lstDocumentoDetalleFlete.Where(x => x.CodigoDocumento == objDocumento.CodigoDocumento).ToList();
                    }
                }
            }

            return(lsDetalleDocumento);
        }
Ejemplo n.º 18
0
 public bool updatedetalle(DetalleDocumento Detalle)
 {
     throw new NotImplementedException();
 }
        //public static string ImprimirComprobante(int ventaPetroamericaId, int ventaId)
        public static string ImprimirComprobante(string numeroDocumento, string tipoDocumentoId, string serie, string correlativo, string fechaEmision, decimal montoTotalComprobante)
        {
            var mensaje = String.Empty;

            try
            {
                var empresaInfo = new Empresa().Listar(0).FirstOrDefault();
                var agenciaInfo = new Agencia().Listar(0).FirstOrDefault();
                //var ventaInfo = new Negocio.VentaGasolutions().Listar(ventaPetroamericaId).FirstOrDefault();


                var ventaInfoLista = new Negocio.VentaGasolutions().ListarPaginado(0, numeroDocumento, tipoDocumentoId, serie + "-" + correlativo, DateTime.ParseExact(fechaEmision, "dd/MM/yyyy", null), DateTime.ParseExact(fechaEmision, "dd/MM/yyyy", null), 0, 0, 0, 0);
                var ventaGasolutionsDetalleInfoLista = new List <VentaDetalleGasolutionsInfo>();

                //var ventaGasolutionsDetalleInfo = new Negocio.VentaGasolutions().ListarDetalle(ventaPetroamericaId, 0).ToList();
                //var ventaGasolutionsDetalleInfo = new Negocio.VentaGasolutions().ListarDetalle(ventaInfo.VentaGasolutionsId, 0).ToList();

                ventaInfoLista = ventaInfoLista.Where(v => v.TotalVenta.Equals(montoTotalComprobante)).ToList();
                var ventaInfo = new VentaGasolutionsInfo();
                if (ventaInfoLista.Count > 0)
                {
                    ventaInfo = ventaInfoLista.FirstOrDefault();
                    ventaGasolutionsDetalleInfoLista = new Negocio.VentaGasolutions().ListarDetalle(ventaInfo.VentaGasolutionsId, 0);
                }
                else
                {
                    mensaje = "No se ha encontrado el comprobante." + "@" + "" + "@" + ventaInfo.NroDocumentoReceptor;
                    return(mensaje);
                }

                var ventaDetalleInfo = new List <VentaDetalleInfo>();

                _documento = new DocumentoElectronico();

                #region Documento
                _documento.CalculoDetraccion = 0;
                _documento.CalculoIgv        = Decimal.Divide(18, 100);
                _documento.CalculoIsc        = 0;
                _documento.DescuentoGlobal   = 0;

                #region Emisor
                var emisor = new DocumentoElectronico().Emisor;
                emisor.Departamento    = ventaInfo.DepartamentoEmisor;
                emisor.Direccion       = ventaInfo.DireccionEmisor;
                emisor.Distrito        = ventaInfo.DistritoEmisor;
                emisor.NombreComercial = ventaInfo.NombreComercialEmisor;
                emisor.NombreLegal     = ventaInfo.NombreLegalEmisor;
                emisor.NroDocumento    = ventaInfo.NroDocumentoEmisor;
                emisor.Provincia       = ventaInfo.ProvinciaEmisor;
                emisor.TipoDocumento   = "6";
                emisor.Ubigeo          = ventaInfo.UbigeoEmisor;
                emisor.Urbanizacion    = "";
                _documento.Emisor      = emisor;
                #endregion

                _documento.Exoneradas   = 0;
                _documento.FechaEmision = ventaInfo.FechaEmision.ToString("dd/MM/yyyy");
                _documento.Gratuitas    = 0;
                _documento.Gravadas     = ventaInfo.Gravadas;
                _documento.IdDocumento  = ventaInfo.IdDocumento;
                _documento.Inafectas    = 0;

                #region Items
                var itemId = 1;
                foreach (var vd in ventaGasolutionsDetalleInfoLista)
                {
                    var item = new DetalleDocumento();
                    item.Cantidad    = vd.Cantidad;
                    item.Descripcion = vd.Descripcion;
                    item.Id          = vd.Id;
                    itemId++;
                    item.Impuesto          = vd.Impuesto;
                    item.PrecioUnitario    = vd.PrecioUnitario;
                    item.Suma              = vd.TotalVenta;
                    item.TotalVenta        = vd.TotalVenta;
                    item.UnidadMedida      = vd.UnidadMedida;
                    item.Descuento         = 0;
                    item.ImpuestoSelectivo = 0;
                    item.OtroImpuesto      = 0;
                    item.PrecioReferencial = 0;
                    item.TipoImpuesto      = "10";
                    item.TipoPrecio        = "01";
                    _documento.Items.Add(item);
                }
                #endregion

                _documento.Moneda          = ventaInfo.MonedaId.Equals(Constantes.MonedaSoles) ? Constantes.MonedaSolesSunat : Constantes.MonedaDolaresSunat;
                _documento.MontoAnticipo   = 0;
                _documento.MontoDetraccion = 0;
                _documento.MontoEnLetras   = Herramientas.NumeroALetras.numeroAletras(ventaInfo.TotalVenta);
                _documento.MontoPercepcion = 0;
                _documento.PlacaVehiculo   = ventaInfo.PlacaVehiculo;

                #region Receptor
                var receptor = new DocumentoElectronico().Receptor;
                receptor.Departamento    = "";
                receptor.Direccion       = ventaInfo.DireccionReceptor;
                receptor.Distrito        = "";
                receptor.NombreComercial = ventaInfo.NombreComercialReceptor;
                receptor.NombreLegal     = ventaInfo.NombreLegalReceptor;
                receptor.NroDocumento    = ventaInfo.NroDocumentoReceptor;
                receptor.Provincia       = "";
                receptor.TipoDocumento   = ventaInfo.TipoDocumentoReceptor;
                receptor.Ubigeo          = "";
                receptor.Urbanizacion    = "";
                _documento.Receptor      = receptor;
                #endregion

                _documento.TipoDocumento      = ventaInfo.TipoDocumento;
                _documento.TotalIgv           = ventaInfo.TotalIgv;
                _documento.TotalIsc           = 0;
                _documento.TotalOtrosTributos = 0;
                _documento.TotalVenta         = ventaInfo.TotalVenta;
                #endregion

                string metodoApi;
                switch (_documento.TipoDocumento)
                {
                case "07":
                    metodoApi = "api/GenerarNotaCredito";
                    break;

                case "08":
                    metodoApi = "api/GenerarNotaDebito";
                    break;

                default:
                    metodoApi = "api/GenerarFactura";
                    break;
                }

                var rutaPdfFactura = HostingEnvironment.MapPath("~/Archivos/Documentos/Cliente/" + ventaInfo.NroDocumentoReceptor + "");

                #region Generando XML
                var client = new RestClient(BaseUrl);

                var requestInvoice = new RestRequest("GenerarFactura", Method.POST)
                {
                    RequestFormat = DataFormat.Json
                };

                requestInvoice.AddBody(_documento);

                var documentoResponse = client.Execute <DocumentoResponse>(requestInvoice);

                if (!documentoResponse.Data.Exito)
                {
                    throw new ApplicationException(documentoResponse.Data.MensajeError);
                }

                // string rutaXml = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/" + _documento.IdDocumento + ".xml");
                string rutaXml = HostingEnvironment.MapPath("~/Archivos/Documentos/Cliente") + "/" + ventaInfo.NroDocumentoReceptor;
                if (!Directory.Exists(rutaXml))
                {
                    Directory.CreateDirectory(rutaXml);
                }
                File.WriteAllBytes(rutaXml + "/" + _documento.IdDocumento + ".xml", Convert.FromBase64String(documentoResponse.Data.TramaXmlSinFirma));
                #endregion

                #region Firma
                string rutaCertificado = HostingEnvironment.MapPath("~/Archivos/Facturacion/certificado.pfx");
                var    firmado         = new FirmadoRequest
                {
                    TramaXmlSinFirma    = documentoResponse.Data.TramaXmlSinFirma,
                    CertificadoDigital  = Convert.ToBase64String(File.ReadAllBytes(rutaCertificado)),
                    PasswordCertificado = "9dGxdmm5JHKwKsXc",
                    UnSoloNodoExtension = false
                };

                var requestFirma = new RestRequest("Firmar", Method.POST)
                {
                    RequestFormat = DataFormat.Json
                };
                requestFirma.AddBody(firmado);

                var responseFirma = client.Execute <FirmadoResponse>(requestFirma);

                if (!responseFirma.Data.Exito)
                {
                    throw new ApplicationException(responseFirma.Data.MensajeError);
                }
                //string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/Cliente/" + _documento.IdDocumento + "_Firmado.xml");
                string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Documentos/Cliente") + "/" + ventaInfo.NroDocumentoReceptor;
                if (!Directory.Exists(rutaXmlFirmado))
                {
                    Directory.CreateDirectory(rutaXmlFirmado);
                }
                File.WriteAllBytes(rutaXmlFirmado + "/" + _documento.IdDocumento + "_Firmado.xml", Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado));
                #endregion

                #region Impresión Comprobante
                var htmlToComprobante        = new NReco.PdfGenerator.HtmlToPdfConverter();
                var nombreArchivoComprobante = String.Empty;
                var comprobanteSB            = new StringBuilder();

                if (ventaInfo.TipoDocumento.Equals(Constantes.TipoComprobanteFactura))
                {
                    //comprobanteSB.Append(Herramientas.Helper.ObtenerTexto("~/Archivos/Plantillas/FacturaPowerGas.html"));
                    comprobanteSB.Append(Herramientas.Helper.ObtenerTexto(PlantillaFactura));
                    #region Factura

                    comprobanteSB.Replace("@EMPRESA_LOGO", HttpContext.Current.Server.MapPath(empresaInfo.Imagen));
                    comprobanteSB.Replace("@EMPRESA_NOMBRE", ventaInfo.NombreComercialEmisor);
                    comprobanteSB.Replace("@EMPRESA_RUC", ventaInfo.NroDocumentoEmisor);
                    comprobanteSB.Replace("@NUMEROCOMPROBANTE", ventaInfo.IdDocumento);
                    comprobanteSB.Replace("@EMPRESA_DIRECCION", ventaInfo.DireccionEmisor);
                    comprobanteSB.Replace("@EMPRESA_TELEFONO", String.Empty);
                    comprobanteSB.Replace("@EMPRESA_FAX", String.Empty);
                    comprobanteSB.Replace("@EMPRESA_PAIS", empresaInfo.Pais);
                    comprobanteSB.Replace("@EMPRESA_DEPARTAMENTO", empresaInfo.Departamento);
                    comprobanteSB.Replace("@EMPRESA_PROVINCIA", empresaInfo.Provincia);
                    comprobanteSB.Replace("@EMPRESA_DISTRITO", empresaInfo.Distrito);
                    comprobanteSB.Replace("@FECHAEMISION", ventaInfo.FechaEmision.ToString("dd/MM/yyyy"));
                    comprobanteSB.Replace("@AGENCIA_DIRECCION", agenciaInfo.Direccion);


                    //var clienteInfo = new Cliente().Listar(ventaInfo.ClienteId).FirstOrDefault();
                    comprobanteSB.Replace("@CLIENTE_NOMBRE", ventaInfo.NombreComercialReceptor);
                    comprobanteSB.Replace("@CLIENTE_DIRECCION", ventaInfo.DireccionReceptor);
                    comprobanteSB.Replace("@CLIENTE_DISTRITO", String.Empty);
                    comprobanteSB.Replace("@CLIENTE_RUC", ventaInfo.NroDocumentoReceptor);
                    comprobanteSB.Replace("@CLIENTE_CODIGO", String.Empty);

                    comprobanteSB.Replace("@MONEDA", ventaInfo.Moneda);

                    var facturaSBDetalle = new StringBuilder("");
                    facturaSBDetalle.Append("<table style=\"width: 100%; border-collapse: collapse;\">");
                    facturaSBDetalle.Append("   <thead>");
                    facturaSBDetalle.Append("       <tr>");
                    facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">ITEM</td>");
                    facturaSBDetalle.Append("           <td style=\"width: 50%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">DESCRIPCI&Oacute;N</td>");
                    facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">CANT</td>");
                    facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">UND</td>");
                    facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">VALOR UNIT</td>");
                    facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">SUBTOTAL</td>");
                    facturaSBDetalle.Append("       </tr>");
                    facturaSBDetalle.Append("   </thead>");

                    var montoGravado       = 0M;
                    var montoImpuestoTotal = 0M;
                    foreach (var vd in ventaGasolutionsDetalleInfoLista)
                    {
                        facturaSBDetalle.Append("   <tr>");
                        facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + vd.CodigoItem + "</td>");
                        facturaSBDetalle.Append("       <td style=\"width: 50%; border: 1px none #0b44e9; text-align: left; vertical-align: top;\" class=\"Estilo8\">" + vd.Descripcion + "</td>");
                        facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + ((vd.TotalVenta - vd.Impuesto) / vd.PrecioUnitario).ToString("N2") + "</td>");
                        facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + vd.UnidadMedida + "</td>");
                        facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + vd.PrecioUnitario.ToString("N2") + "</td>");
                        //facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + (vd.Cantidad * vd.PrecioUnitario).ToString("N2") + "</td>");
                        facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + (vd.TotalVenta - vd.Impuesto).ToString("N2") + "</td>");
                        facturaSBDetalle.Append("   </tr>");

                        montoGravado = montoGravado + vd.TotalVenta;
                    }
                    facturaSBDetalle.Append("</table>");

                    var montoIgv = montoGravado * 0.18M;

                    var montoTotal = montoGravado + montoIgv;

                    comprobanteSB.Replace("@MONTO_GRAVADA", ventaInfo.Gravadas.ToString("N2"));
                    comprobanteSB.Replace("@MONTO_INAFECTA", "0.00");
                    comprobanteSB.Replace("@MONTO_EXONERADA", "0.00");
                    comprobanteSB.Replace("@MONTO_GRATUITA", "0.00");
                    comprobanteSB.Replace("@MONTO_IGV", ventaInfo.TotalIgv.ToString("N2"));
                    comprobanteSB.Replace("@MONTO_TOTAL", ventaInfo.TotalVenta.ToString("N2"));

                    comprobanteSB.Replace("@PRODUCTO_DETALLE", facturaSBDetalle.ToString());
                    #endregion

                    nombreArchivoComprobante = "Factura_" + DateTime.Now.ToString("ddMMyyyyhhmmss"); // + ".pdf";
                }
                if (ventaInfo.TipoDocumento.Equals(Constantes.TipoComprobanteBoletaVenta))
                {
                    //comprobanteSB.Append(Herramientas.Helper.ObtenerTexto("~/Archivos/Plantillas/BoletaPowerGas.html"));
                    comprobanteSB.Append(Herramientas.Helper.ObtenerTexto(PlantillaBoleta));
                    #region Boleta
                    comprobanteSB.Replace("@EMPRESA_LOGO", HttpContext.Current.Server.MapPath(empresaInfo.Imagen));
                    comprobanteSB.Replace("@EMPRESA_NOMBRE", ventaInfo.NombreComercialEmisor);
                    comprobanteSB.Replace("@EMPRESA_RUC", ventaInfo.NroDocumentoEmisor);
                    comprobanteSB.Replace("@NUMEROCOMPROBANTE", ventaInfo.IdDocumento);
                    comprobanteSB.Replace("@EMPRESA_DIRECCION", ventaInfo.DireccionEmisor);
                    comprobanteSB.Replace("@EMPRESA_TELEFONO", String.Empty);
                    comprobanteSB.Replace("@EMPRESA_FAX", String.Empty);
                    comprobanteSB.Replace("@EMPRESA_PAIS", empresaInfo.Pais);
                    comprobanteSB.Replace("@EMPRESA_DEPARTAMENTO", empresaInfo.Departamento);
                    comprobanteSB.Replace("@EMPRESA_PROVINCIA", empresaInfo.Provincia);
                    comprobanteSB.Replace("@EMPRESA_DISTRITO", empresaInfo.Distrito);
                    comprobanteSB.Replace("@FECHAEMISION", ventaInfo.FechaEmision.ToString("dd/MM/yyyy"));
                    comprobanteSB.Replace("@AGENCIA_DIRECCION", agenciaInfo.Direccion);


                    //var clienteInfo = new Cliente().Listar(ventaInfo.ClienteId).FirstOrDefault();
                    comprobanteSB.Replace("@CLIENTE_NOMBRE", ventaInfo.NombreComercialReceptor);
                    comprobanteSB.Replace("@CLIENTE_DIRECCION", ventaInfo.DireccionReceptor);
                    comprobanteSB.Replace("@CLIENTE_DISTRITO", String.Empty);
                    comprobanteSB.Replace("@CLIENTE_RUC", ventaInfo.NroDocumentoReceptor);
                    comprobanteSB.Replace("@CLIENTE_CODIGO", String.Empty);

                    comprobanteSB.Replace("@MONEDA", ventaInfo.Moneda);

                    var facturaSBDetalle = new StringBuilder("");
                    facturaSBDetalle.Append("<table style=\"width: 100%; border-collapse: collapse;\">");
                    facturaSBDetalle.Append("   <thead>");
                    facturaSBDetalle.Append("       <tr>");
                    facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">ITEM</td>");
                    facturaSBDetalle.Append("           <td style=\"width: 50%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">DESCRIPCI&Oacute;N</td>");
                    facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">CANT</td>");
                    facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">UND</td>");
                    facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">VALOR UNIT</td>");
                    facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">SUBTOTAL</td>");
                    facturaSBDetalle.Append("       </tr>");
                    facturaSBDetalle.Append("   </thead>");

                    var montoGravado       = 0M;
                    var montoImpuestoTotal = 0M;
                    foreach (var vd in ventaGasolutionsDetalleInfoLista)
                    {
                        facturaSBDetalle.Append("   <tr>");
                        facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + vd.CodigoItem + "</td>");
                        facturaSBDetalle.Append("       <td style=\"width: 50%; border: 1px none #0b44e9; text-align: left; vertical-align: top;\" class=\"Estilo8\">" + vd.Descripcion + "</td>");
                        facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + ((vd.TotalVenta - vd.Impuesto) / vd.PrecioUnitario).ToString("N2") + "</td>");
                        facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + vd.UnidadMedida + "</td>");
                        facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + vd.PrecioUnitario.ToString("N2") + "</td>");
                        facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + (vd.TotalVenta - vd.Impuesto).ToString("N2") + "</td>");
                        facturaSBDetalle.Append("   </tr>");

                        montoGravado = montoGravado + vd.TotalVenta;
                    }
                    facturaSBDetalle.Append("</table>");

                    var montoIgv = montoGravado * 0.18M;

                    var montoTotal = montoGravado + montoIgv;

                    comprobanteSB.Replace("@MONTO_GRAVADA", ventaInfo.Gravadas.ToString("N2"));
                    comprobanteSB.Replace("@MONTO_INAFECTA", "0.00");
                    comprobanteSB.Replace("@MONTO_EXONERADA", "0.00");
                    comprobanteSB.Replace("@MONTO_GRATUITA", "0.00");
                    comprobanteSB.Replace("@MONTO_IGV", ventaInfo.TotalIgv.ToString("N2"));
                    comprobanteSB.Replace("@MONTO_TOTAL", ventaInfo.TotalVenta.ToString("N2"));

                    comprobanteSB.Replace("@PRODUCTO_DETALLE", facturaSBDetalle.ToString());
                    #endregion

                    nombreArchivoComprobante = "Boleta_" + DateTime.Now.ToString("ddMMyyyyhhmmss"); // + ".pdf";
                }

                if (!Directory.Exists(rutaPdfFactura))
                {
                    Directory.CreateDirectory(rutaPdfFactura);
                }

                #region Codigo QR
                var codigoQR = ventaInfo.NroDocumentoReceptor + "|" + ventaInfo.TipoDocumento + "|" + ventaInfo.IdDocumento.Substring(0, 4) + "|" +
                               ventaInfo.IdDocumento.Substring(5, ventaInfo.IdDocumento.Length - 5) + "|" + ventaInfo.TotalIgv + "|" + ventaInfo.TotalVenta + "|" +
                               ventaInfo.FechaEmision + "|" + ventaInfo.TipoDocumentoReceptor + "|" + ventaInfo.NroDocumentoReceptor + "|" +
                               responseFirma.Data.ResumenFirma + "|" + responseFirma.Data.ValorFirma;

                // instantiate a writer object
                var barcodeWriter = new BarcodeWriter();
                // set the barcode format
                barcodeWriter.Format = BarcodeFormat.PDF_417;
                // write text and generate a 2-D barcode as a bitmap
                // barcodeWriter.Write(codigoQR).Save(@"C:\Users\jeremy\Desktop\generated.bmp");
                //barcodeWriter.Write(codigoQR).Save(HostingEnvironment.MapPath("~/Archivos/Documentos/Cliente/" + ventaInfo.NumeroDocumentoCliente + "/" + _documento.IdDocumento + ".bmp"));
                barcodeWriter.Write(codigoQR).Save(rutaPdfFactura + "/" + _documento.IdDocumento + ".bmp");
                #endregion

                comprobanteSB.Replace("@CODIGO_QR", HttpContext.Current.Server.MapPath("~/Archivos/Documentos/Cliente/" + ventaInfo.NroDocumentoReceptor + "/" + _documento.IdDocumento + ".bmp"));
                comprobanteSB.Replace("@MONTO_LETRAS", Herramientas.NumeroALetras.numeroAletras(ventaInfo.TotalVenta));

                comprobanteSB = Herramientas.Helper.EncodeHtml(comprobanteSB);
                //var margins = new PageMargins();
                //margins.Left = 1;
                //htmlToComprobante.Margins = margins;

                var pdfBytesFactura = htmlToComprobante.GeneratePdf(comprobanteSB.ToString());


                // var comprobanteImpreso = rutaPdfFactura + "\\" + nombreArchivoComprobante + ".pdf";
                File.WriteAllBytes(rutaPdfFactura + "/" + nombreArchivoComprobante + ".pdf", pdfBytesFactura);
                File.WriteAllBytes(rutaPdfFactura + "/" + nombreArchivoComprobante + ".xml", Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado));

                Negocio.Helper.ActualizarColumnasTabla("VentaGasolutions", new string[] { "ComprobanteImpreso" }, new string[] { nombreArchivoComprobante + ".pdf" }, new string[] { "VentaGasolutionsId" }, new string[] { ventaInfo.VentaGasolutionsId.ToString() });

                #endregion

                mensaje = "El Comprobante se generó correctamente" + "@" + (nombreArchivoComprobante) + "@" + ventaInfo.NroDocumentoReceptor;
            }
            catch (Exception ex)
            {
                bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaPresentacion);
                mensaje = rethrow ? ex.Message : Constantes.ExcepcionPoliticaPresentacion;
                mensaje = (mensaje + "-" + ex.Source) + "@" + "" + "@" + "";
            }
            return(mensaje);
        }
        public static string ImprimirComprobanteAntes(string numeroDocumento, string tipoDocumentoId, string serie, string correlativo, string fechaEmision, decimal montoTotal)
        {
            var mensaje = String.Empty;

            try
            {
                var fecha = DateTime.ParseExact(fechaEmision, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);

                // var ventaInfoLista = new Negocio.VentaPetroamerica().ListarPaginado(0, numeroDocumento.Trim(), tipoDocumentoId, serie, correlativo, fecha, fecha, 0, 0, String.Empty, 0, 0);
                var ventaInfoLista = new Negocio.VentaGasolutions().ListarPaginado(0, String.Empty, tipoDocumentoId, serie + "-" + correlativo, fecha, fecha, 0, 0, 0, 0);
                var ventaGasolutionsDetalleInfo = new VentaDetalleGasolutionsInfo();

                ventaInfoLista = ventaInfoLista.Where(v => v.TotalVenta.Equals(montoTotal)).ToList();
                var ventaInfo = new VentaGasolutionsInfo();
                if (ventaInfoLista.Count > 0)
                {
                    ventaInfo = ventaInfoLista.FirstOrDefault();
                    ventaGasolutionsDetalleInfo = new Negocio.VentaGasolutions().ListarDetalle(ventaInfo.VentaGasolutionsId, 0).FirstOrDefault();
                }
                else
                {
                    mensaje = "No se ha encontrado el comprobante." + "@" + "" + "@" + ventaInfo.NroDocumentoReceptor;
                    return(mensaje);
                }

                var ventaDetalleInfo = new List <VentaDetalleInfo>();

                _documento = new DocumentoElectronico();

                #region Documento
                _documento.CalculoDetraccion = 0;
                _documento.CalculoIgv        = Decimal.Divide(18, 100);
                _documento.CalculoIsc        = 0;
                _documento.DescuentoGlobal   = 0;

                #region Emisor
                var emisor = new DocumentoElectronico().Emisor;
                emisor.Departamento    = ventaInfo.DepartamentoEmisor;
                emisor.Direccion       = ventaInfo.DireccionEmisor;
                emisor.Distrito        = ventaInfo.DistritoEmisor;
                emisor.NombreComercial = ventaInfo.NombreComercialEmisor;
                emisor.NombreLegal     = ventaInfo.NombreLegalEmisor;
                emisor.NroDocumento    = ventaInfo.NroDocumentoEmisor;
                emisor.Provincia       = ventaInfo.ProvinciaEmisor;
                emisor.TipoDocumento   = "6";
                emisor.Ubigeo          = ventaInfo.UbigeoEmisor;
                emisor.Urbanizacion    = "";
                _documento.Emisor      = emisor;
                #endregion

                _documento.Exoneradas   = 0;
                _documento.FechaEmision = ventaInfo.FechaEmision.ToString("dd/MM/yyyy");
                _documento.Gratuitas    = 0;
                _documento.Gravadas     = ventaInfo.Gravadas;
                _documento.IdDocumento  = ventaInfo.IdDocumento;
                _documento.Inafectas    = 0;

                #region Items
                var itemId = 1;
                //foreach (var vd in ventaDetalleInfo)
                //{
                var item = new DetalleDocumento();
                //item.Cantidad = vd.Cantidad;
                item.Cantidad = ventaGasolutionsDetalleInfo.Cantidad;

                //item.Descripcion = vd.Producto;
                item.Descripcion = ventaGasolutionsDetalleInfo.Descripcion;
                //item.Id = itemId;
                item.Id = ventaGasolutionsDetalleInfo.Id;
                itemId++;
                //item.Impuesto = vd.Igv;
                item.Impuesto = ventaGasolutionsDetalleInfo.Impuesto;
                //item.PrecioUnitario = vd.PrecioUnitario;
                item.PrecioUnitario = ventaGasolutionsDetalleInfo.PrecioUnitario;
                //item.Suma = vd.SubTotal;
                item.Suma = ventaGasolutionsDetalleInfo.TotalVenta;
                //item.TotalVenta = vd.MontoTotal;
                item.TotalVenta = ventaGasolutionsDetalleInfo.TotalVenta;
                //item.UnidadMedida = vd.UnidadMedida;
                item.UnidadMedida      = ventaGasolutionsDetalleInfo.UnidadMedida;
                item.Descuento         = 0;
                item.ImpuestoSelectivo = 0;
                item.OtroImpuesto      = 0;
                item.PrecioReferencial = 0;
                item.TipoImpuesto      = "10";
                item.TipoPrecio        = "01";
                _documento.Items.Add(item);
                //}
                #endregion

                _documento.Moneda          = ventaInfo.MonedaId.Equals(Constantes.MonedaSoles) ? Constantes.MonedaSolesSunat : Constantes.MonedaDolaresSunat;
                _documento.MontoAnticipo   = 0;
                _documento.MontoDetraccion = 0;
                _documento.MontoEnLetras   = Herramientas.NumeroALetras.numeroAletras(ventaInfo.TotalVenta);
                _documento.MontoPercepcion = 0;
                _documento.PlacaVehiculo   = ventaInfo.PlacaVehiculo;

                #region Receptor
                var receptor = new DocumentoElectronico().Receptor;
                receptor.Departamento    = "";
                receptor.Direccion       = ventaInfo.DireccionReceptor;
                receptor.Distrito        = "";
                receptor.NombreComercial = ventaInfo.NombreComercialReceptor;
                receptor.NombreLegal     = ventaInfo.NombreLegalReceptor;
                receptor.NroDocumento    = ventaInfo.NroDocumentoReceptor;
                receptor.Provincia       = "";
                receptor.TipoDocumento   = ventaInfo.TipoDocumentoReceptor;
                receptor.Ubigeo          = "";
                receptor.Urbanizacion    = "";
                _documento.Receptor      = receptor;
                #endregion

                _documento.TipoDocumento      = ventaInfo.TipoDocumento;
                _documento.TotalIgv           = ventaInfo.TotalIgv;
                _documento.TotalIsc           = 0;
                _documento.TotalOtrosTributos = 0;
                _documento.TotalVenta         = ventaInfo.TotalVenta;
                #endregion

                string metodoApi;
                switch (_documento.TipoDocumento)
                {
                case "07":
                    metodoApi = "api/GenerarNotaCredito";
                    break;

                case "08":
                    metodoApi = "api/GenerarNotaDebito";
                    break;

                default:
                    metodoApi = "api/GenerarFactura";
                    break;
                }

                var rutaPdfFactura = HostingEnvironment.MapPath("~/Archivos/Documentos/Cliente/" + ventaInfo.NroDocumentoReceptor + "");

                #region Generando XML
                var client = new RestClient(BaseUrl);

                var requestInvoice = new RestRequest("GenerarFactura", Method.POST)
                {
                    RequestFormat = DataFormat.Json
                };

                requestInvoice.AddBody(_documento);

                var documentoResponse = client.Execute <DocumentoResponse>(requestInvoice);

                if (!documentoResponse.Data.Exito)
                {
                    throw new ApplicationException(documentoResponse.Data.MensajeError);
                }

                // string rutaXml = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/" + _documento.IdDocumento + ".xml");
                string rutaXml = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/Cliente");
                if (!Directory.Exists(rutaXml))
                {
                    Directory.CreateDirectory(rutaXml);
                }
                File.WriteAllBytes(rutaXml + "/" + _documento.IdDocumento + ".xml", Convert.FromBase64String(documentoResponse.Data.TramaXmlSinFirma));
                #endregion

                #region Firma
                string rutaCertificado = HostingEnvironment.MapPath("~/Archivos/Facturacion/certificado.pfx");
                var    firmado         = new FirmadoRequest
                {
                    TramaXmlSinFirma    = documentoResponse.Data.TramaXmlSinFirma,
                    CertificadoDigital  = Convert.ToBase64String(File.ReadAllBytes(rutaCertificado)),
                    PasswordCertificado = "9dGxdmm5JHKwKsXc",
                    UnSoloNodoExtension = false
                };

                var requestFirma = new RestRequest("Firmar", Method.POST)
                {
                    RequestFormat = DataFormat.Json
                };
                requestFirma.AddBody(firmado);

                var responseFirma = client.Execute <FirmadoResponse>(requestFirma);

                if (!responseFirma.Data.Exito)
                {
                    throw new ApplicationException(responseFirma.Data.MensajeError);
                }
                //string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/Cliente/" + _documento.IdDocumento + "_Firmado.xml");
                string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/Cliente");
                if (!Directory.Exists(rutaXmlFirmado))
                {
                    Directory.CreateDirectory(rutaXmlFirmado);
                }
                File.WriteAllBytes(rutaXmlFirmado + "/" + _documento.IdDocumento + "_Firmado.xml", Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado));
                #endregion

                #region Impresión Comprobante
                var htmlToComprobante        = new NReco.PdfGenerator.HtmlToPdfConverter();
                var nombreArchivoComprobante = String.Empty;
                var comprobanteSB            = new StringBuilder();

                if (ventaInfo.TipoDocumento.Equals(Constantes.TipoComprobanteFactura))
                {
                    comprobanteSB.Append(Herramientas.Helper.ObtenerTexto("~/Archivos/Plantillas/FacturaJulcan.html"));
                    #region Factura
                    //comprobanteSB.Replace("@EMPRESA_LOGO", HttpContext.Current.Server.MapPath("~/Imagenes/petroamerica_logo.png"));
                    comprobanteSB.Replace("@EMPRESA_LOGO", String.Empty);
                    comprobanteSB.Replace("@EMPRESA_NOMBRE", ventaInfo.NombreComercialEmisor);
                    comprobanteSB.Replace("@EMPRESA_DIRECCION", ventaInfo.DireccionEmisor);
                    comprobanteSB.Replace("@GRIFO_DIRECCION", String.Empty);
                    comprobanteSB.Replace("@EMPRESA_RUC", ventaInfo.NroDocumentoEmisor);
                    comprobanteSB.Replace("@IMPRESORA", String.Empty);
                    comprobanteSB.Replace("@NUMEROCOMPROBANTE", ventaInfo.IdDocumento);
                    comprobanteSB.Replace("@FECHA", fechaEmision);
                    comprobanteSB.Replace("@FECHA", fechaEmision);

                    comprobanteSB.Replace("@CLIENTE_NOMBRE", ventaInfo.NombreComercialReceptor);
                    comprobanteSB.Replace("@CLIENTE_RUC", ventaInfo.NroDocumentoReceptor);
                    comprobanteSB.Replace("@CLIENTE_PLACA", ventaInfo.PlacaVehiculo);
                    comprobanteSB.Replace("@CLIENTE_DIRECCION", ventaInfo.DireccionReceptor);
                    comprobanteSB.Replace("@CANTIDAD", ventaGasolutionsDetalleInfo.Cantidad.ToString("N2"));
                    comprobanteSB.Replace("@PRECIO", ventaGasolutionsDetalleInfo.PrecioUnitario.ToString("N2"));
                    comprobanteSB.Replace("@MONTO_VENTA", ventaInfo.Gravadas.ToString("N2"));
                    comprobanteSB.Replace("@PRODUCTO", ventaGasolutionsDetalleInfo.Descripcion);
                    comprobanteSB.Replace("@MONEDA_SIMBOLO", ventaInfo.SimboloMoneda);
                    comprobanteSB.Replace("@MONTO_IMPUESTO", ventaInfo.TotalIgv.ToString("N2"));
                    comprobanteSB.Replace("@MONTO_TOTAL", ventaInfo.TotalVenta.ToString("N2"));
                    comprobanteSB.Replace("@VENDEDOR", String.Empty);
                    comprobanteSB.Replace("@CODIGO_HASH", responseFirma.Data.ResumenFirma);

                    comprobanteSB.Replace("@TEXTO_MONTO_TOTAL", NumeroALetras.numeroAletras(ventaInfo.TotalVenta));
                    #endregion

                    nombreArchivoComprobante = "Factura_" + DateTime.Now.ToString("ddMMyyyyhhmmss"); // + ".pdf";
                }
                if (ventaInfo.TipoDocumento.Equals(Constantes.TipoComprobanteBoletaVenta))
                {
                    comprobanteSB.Append(Herramientas.Helper.ObtenerTexto("~/Archivos/Plantillas/BoletaJulcan.html"));
                    #region Boleta
                    //comprobanteSB.Replace("@EMPRESA_LOGO", HttpContext.Current.Server.MapPath("~/Imagenes/petroamerica_logo.png"));
                    comprobanteSB.Replace("@EMPRESA_LOGO", String.Empty);
                    comprobanteSB.Replace("@EMPRESA_NOMBRE", ventaInfo.NombreComercialEmisor);
                    comprobanteSB.Replace("@EMPRESA_DIRECCION", ventaInfo.DireccionEmisor);
                    comprobanteSB.Replace("@GRIFO_DIRECCION", String.Empty);
                    comprobanteSB.Replace("@EMPRESA_RUC", ventaInfo.NroDocumentoEmisor);
                    comprobanteSB.Replace("@IMPRESORA", String.Empty);
                    comprobanteSB.Replace("@NUMEROCOMPROBANTE", ventaInfo.IdDocumento);
                    comprobanteSB.Replace("@FECHA", fechaEmision);
                    comprobanteSB.Replace("@CLIENTE_NOMBRE", ventaInfo.NombreComercialReceptor);
                    comprobanteSB.Replace("@CLIENTE_DIRECCION", ventaInfo.DireccionReceptor);
                    comprobanteSB.Replace("@CANTIDAD", ventaGasolutionsDetalleInfo.Cantidad.ToString("N2"));
                    comprobanteSB.Replace("@PRECIO", ventaGasolutionsDetalleInfo.PrecioUnitario.ToString("N2"));
                    comprobanteSB.Replace("@MONTO_VENTA", ventaInfo.Gravadas.ToString("N2"));
                    comprobanteSB.Replace("@PRODUCTO", ventaGasolutionsDetalleInfo.Descripcion);
                    comprobanteSB.Replace("@MONEDA_SIMBOLO", ventaInfo.SimboloMoneda);
                    comprobanteSB.Replace("@MONTO_IMPUESTO", ventaInfo.TotalIgv.ToString("N2"));
                    comprobanteSB.Replace("@MONTO_TOTAL", ventaInfo.TotalVenta.ToString("N2"));
                    comprobanteSB.Replace("@VENDEDOR", String.Empty);
                    comprobanteSB.Replace("@CODIGO_HASH", responseFirma.Data.ResumenFirma);

                    comprobanteSB.Replace("@TEXTO_MONTO_TOTAL", NumeroALetras.numeroAletras(ventaInfo.TotalVenta));
                    #endregion

                    nombreArchivoComprobante = "Boleta_" + DateTime.Now.ToString("ddMMyyyyhhmmss"); // + ".pdf";
                }

                if (!Directory.Exists(rutaPdfFactura))
                {
                    Directory.CreateDirectory(rutaPdfFactura);
                }

                #region Codigo QR
                var codigoQR = ventaInfo.NroDocumentoReceptor + "|" + ventaInfo.TipoDocumento + "|" + ventaInfo.IdDocumento.Substring(0, 4) + "|" +
                               ventaInfo.IdDocumento.Substring(5, 8) + "|" + ventaInfo.TotalIgv + "|" + ventaInfo.TotalVenta + "|" +
                               ventaInfo.FechaEmision + "|" + ventaInfo.TipoDocumentoReceptor + "|" + ventaInfo.NroDocumentoReceptor + "|" +
                               responseFirma.Data.ResumenFirma + "|" + responseFirma.Data.ValorFirma;

                // instantiate a writer object
                var barcodeWriter = new ZXing.BarcodeWriter();
                // set the barcode format
                barcodeWriter.Format = BarcodeFormat.PDF_417;
                // write text and generate a 2-D barcode as a bitmap
                // barcodeWriter.Write(codigoQR).Save(@"C:\Users\jeremy\Desktop\generated.bmp");
                //barcodeWriter.Write(codigoQR).Save(HostingEnvironment.MapPath("~/Archivos/Documentos/Cliente/" + ventaInfo.NumeroDocumentoCliente + "/" + _documento.IdDocumento + ".bmp"));
                barcodeWriter.Write(codigoQR).Save(rutaPdfFactura + "/" + _documento.IdDocumento + ".bmp");
                #endregion

                comprobanteSB.Replace("@CODIGO_QR", HttpContext.Current.Server.MapPath("~/Archivos/Documentos/Cliente/" + ventaInfo.NroDocumentoReceptor + "/" + _documento.IdDocumento + ".bmp"));


                comprobanteSB = Herramientas.Helper.EncodeHtml(comprobanteSB);
                //var margins = new PageMargins();
                //margins.Left = 1;
                //htmlToComprobante.Margins = margins;

                var pdfBytesFactura = htmlToComprobante.GeneratePdf(comprobanteSB.ToString());


                // var comprobanteImpreso = rutaPdfFactura + "\\" + nombreArchivoComprobante + ".pdf";
                File.WriteAllBytes(rutaPdfFactura + "/" + nombreArchivoComprobante + ".pdf", pdfBytesFactura);
                File.WriteAllBytes(rutaPdfFactura + "/" + nombreArchivoComprobante + ".xml", Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado));
                #endregion

                mensaje = "El Comprobante se generó correctamente" + "@" + nombreArchivoComprobante + "@" + ventaInfo.NroDocumentoReceptor;
            }
            catch (Exception ex)
            {
                bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaPresentacion);
                mensaje = rethrow ? ex.Message : Constantes.ExcepcionPoliticaPresentacion;
                // var sex = new SmartException(ex, usuarioInfo.Matricula, codigoOperacion.ToString());
                //RegistrarScript("MostrarMensaje('" + mensaje.Replace("'", "") + "');", "ErrorConsultaComprobante");
                mensaje = (mensaje + "-" + ex.Source) + "@" + "" + "@" + numeroDocumento;
            }
            return(mensaje);
        }
Ejemplo n.º 21
0
        public ActionResult Facturar(Guid?Id_Doc, decimal ValorPagado_Doc, decimal Valor_Doc, decimal ValorLavado, decimal ValorCasillero)
        {
            IngresoVehiculoView ingresoVehiculoView = new IngresoVehiculoView();
            ImprimirTicket      imprimirTicket      = new ImprimirTicket();
            Imprimir            imprimir            = new Imprimir();

            using (var transaccion = db.Database.BeginTransaction())
            {
                Mensaje mensaje = new Mensaje();
                try
                {
                    if (ValorPagado_Doc <= 0)
                    {
                        throw new Exception("Por favor ingrese un valor total valido.");
                    }

                    DateTime  dateTime   = DateTime.Now;
                    Documento documento1 = db.Documento.Find(Id_Doc);

                    if (documento1 == null || documento1.Id_Doc == Guid.Empty)
                    {
                        throw new Exception("por favor envié un documento valido.");
                    }

                    if (documento1.Parqueadero.Lavar)
                    {
                        if (ValorLavado > 0)
                        {
                            documento1.ValorLavado = ValorLavado;
                        }
                    }

                    if (documento1.Parqueadero.Casillero)
                    {
                        if (ValorCasillero > 0)
                        {
                            documento1.ValorCasillero = ValorCasillero;
                        }
                    }

                    documento1.Valor_Doc             = Valor_Doc;
                    documento1.ValorPagado_Doc       = ValorPagado_Doc;
                    documento1.FachaFinalizacion_Doc = dateTime;
                    documento1.Estado_Doc            = false;
                    db.Entry(documento1).State       = EntityState.Modified;

                    foreach (var item in db.DetalleDocumento.Where(t => t.Id_Doc == documento1.Id_Doc).ToList())
                    {
                        DetalleDocumento detalleDocumento1 = item;
                        detalleDocumento1.Estado_DDoc = false;
                        db.Entry(documento1).State    = EntityState.Modified;
                    }

                    DetalleDocumento detalleDocumento = new DetalleDocumento();
                    detalleDocumento.Estado_DDoc = false;
                    detalleDocumento.Horas_DDoc  = dateTime;
                    detalleDocumento.Id_Doc      = documento1.Id_Doc;
                    detalleDocumento.Id_DDoc     = Guid.NewGuid();
                    db.DetalleDocumento.Add(detalleDocumento);
                    db.SaveChanges();

                    Parqueadero parqueadero = db.Parqueaderoes.Find(documento1.Id_Parq);

                    imprimir.NombreParqueadero = documento1.Parqueadero.NombreEmpresa_Parq.ToUpper();
                    imprimir.Direccion         = documento1.Parqueadero.Direccion_Parq.ToUpper();
                    imprimir.NitParqueadero    = documento1.Parqueadero.NitEmpresa_Parq.ToUpper();
                    imprimir.TipoVehiculo      = db.TipoVehiculos.Find(documento1.Vehiculo.TipoVehiculo.Id_TVeh).Nombre_TVeh.ToUpper();
                    imprimir.Placa             = documento1.Vehiculo.Placa_Veh.ToUpper();
                    imprimir.Fecha             = DateTime.Now.Date;
                    imprimir.Horas             = documento1.DetalleDocumento.FirstOrDefault().Horas_DDoc;
                    imprimir.Impresora         = documento1.Parqueadero.Impresora_Parq;
                    imprimir.ValorParqueadero  = Valor_Doc;
                    imprimir.ValotTotal        = documento1.ValorPagado_Doc;
                    imprimir.Lavar             = (ValorLavado > 0) ? true : false;
                    imprimir.Casillero         = (ValorCasillero > 0) ? true : false;
                    imprimir.ValotCasillero    = ValorCasillero;
                    imprimir.ValotLavar        = ValorLavado;
                    imprimir.Observaciones     = documento1.Observaciones;
                    imprimir.Transcurrido      = GetCalculoHoraValor(documento1).DetalleDocumento.FirstOrDefault().Transcurrido_DDoc;
                    imprimir.ValorXVehiculo    = documento1.Vehiculo.TipoVehiculo.Valor_TVeh;
                    imprimir.TiempoXVehiculo   = parqueadero.PagoMinutos_Parq;
                    imprimir.HoraApertura      = parqueadero.HoraApertura_Parq;
                    imprimir.HoraCierre        = parqueadero.HoraCierre_Parq;
                    //imprimirTicket.Generar(imprimir, documento1.Parqueadero.ImprimirFactura_Parq, true);

                    transaccion.Commit();
                    return(PartialView("_FacturaViewPartial", imprimir));
                }
                catch (Exception ex)
                {
                    transaccion.Rollback();
                    //ModelState.AddModelError(string.Empty, string.Format("Error al facturar: {0}", ex.Message));
                    //return Json(new { data = ex.Message }, JsonRequestBehavior.AllowGet);
                    mensaje.DescripcionMensaje = string.Format("Error al ingresar vehiculo: {0}", ex.Message);
                    return(PartialView("AlertMensajerViewPartial", mensaje));
                    //return View("Index", CagarVista(ingresoVehiculoView));
                }
            }
            return(Json(new { data = imprimir }, JsonRequestBehavior.AllowGet));
            //return View("Index", CagarVista(ingresoVehiculoView));
        }
Ejemplo n.º 22
0
        private void DatosFactura()
        {
            var dtsEmisor = new Contribuyente()
            {
                NroDocumento       = "20556442259",
                TipoDocumento      = "6",
                Direccion          = "CAL.GERMAN SCHREIBER NRO. 276 LIMA - LIMA - SAN ISIDRO",
                Departamento       = "PIURA",
                Provincia          = "PIURA",
                Distrito           = "PIURA",
                NombreLegal        = "LUNA VERDE SOCIEDAD ANONIMA CERRADA",
                NombreComercial    = "",
                Ubigeo             = "150131",
                CodDomicilioFiscal = "0000" //Código de cuatro dígitos asignado por SUNAT
            };

            var dtsReceptor = new Contribuyente()
            {
                NroDocumento    = "10479617967",
                TipoDocumento   = "6",
                NombreLegal     = "TORRES LEON ERWIN STALIN",
                NombreComercial = "",
                Direccion       = "PIURA - PIURA - PIURA"
            };


            _documento.Items.Clear();

            _documento.TipoOperacion = "0101"; //0101 - Venta interna - 1001 Venta interna sujeta a detracción

            for (var i = 1; i < 2; i++)
            {
                _documento.CalculoIgv = 0.18m;
                var dtsItems = new DetalleDocumento
                {
                    Id           = i,
                    Cantidad     = 1m,
                    UnidadMedida = "NIU",
                    CodigoItem   = "COD001" + i,
                    //ItemClassificationCode = "82141601",// Este código será obligatorio para el 1-1-2019 - catálogo N° 15 del Anexo N° 8 - OBLIGATOIO PARA EXPORTACIONES DESDE NOVIEMBRE
                    Descripcion       = "PRODUCTO PRUEBA",
                    PrecioUnitario    = 84.7457627119m, //Consignar 0.00 siempre y cuando la factura sea gratuita - TipoImpuesto=21
                    PrecioReferencial = 100m,
                    TipoPrecio        = "01",           //Se usa 02 cuando el tipo de impuesto es gratuito - Valor referencial unitario en operaciones no onerosas
                    TipoImpuesto      = "10",
                    OtroImpuesto      = 0,
                    Descuento         = 0,
                    Suma              = 84.7457627119m * 1m,                           //_detalle.PrecioUnitario * _detalle.Cantidad
                    Impuesto          = (84.7457627119m * 1m) * _documento.CalculoIgv, //_detalle.Suma * _documento.CalculoIgv
                    ImpuestoSelectivo = 0,                                             //_detalle.Suma * _documento.CalculoIsc;
                    TotalVenta        = (84.7457627119m * 1m) - 0,                     //_detalle.Suma - _detalle.Descuento
                    //CodDetraccion="022", //catalogo54
                    //PorcentajeDetraccion ="20",
                    //MontoDetraccion=0.00m
                };


                //Agregamos Detalle
                _documento.Items.Add(dtsItems);
            }

            _documento.Cargos         = 2.00m; //Usar solo si la factura tendrá cargos adicionas - flete
            _documento.IdDocumento    = "F005-00000006";
            _documento.TipoDocumento  = "01";
            _documento.Emisor         = dtsEmisor;
            _documento.Receptor       = dtsReceptor;
            _documento.FechaEmision   = DateTime.Today.ToShortDateString();
            _documento.IssueTime      = String.Format("{0:HH:mm:ss}", DateTime.Now);
            _documento.Moneda         = "PEN";
            _documento.Glosa          = "Aquí algun información para SUNAT";
            _documento.Imcoterm       = _documento.TipoOperacion == "0200" ? "FOB" : ""; //Si TipoOperacion es exportacion se agrega tipo de IMCOTERMS
            _documento.OrderReference = "";
            if (_documento.TipoOperacion == "0200")
            {
                var dato = _documento.Items.Where(x => x.ItemClassificationCode == null).Any();
                if (dato)
                {
                    MessageBox.Show("El tipo de operación es EXPORTACION, por favor agregar un código de producto según SUNAT");
                    return;
                }
            }


            _documento.DescuentoGlobal = 0.85m; //Descuento aplica de acuerdo al porcentaje

            /*DETRACCION*/
            _documento.MediosPago.PaymentMeansCode = "001"; //Medio de pago según catálago 59
            _documento.MediosPago.ID = "123456789";         //Numero de cuenta de banco

            CalcularTotales();
        }
Ejemplo n.º 23
0
        private void DatosNCredito()
        {
            var dtsEmisor = new Contribuyente()
            {
                NroDocumento       = "20561278441",
                TipoDocumento      = "6",
                Direccion          = "AV. TACNA NRO. 516 LAMBAYEQUE - FERREÑAFE - FERREÑAFE",
                Departamento       = "LAMBAYEQUE",
                Provincia          = "FERREÑAFE",
                Distrito           = "FERREÑAFE",
                NombreLegal        = "INVERSIONES NANDO´S CHICKEN SAC",
                NombreComercial    = "",
                Ubigeo             = "140201",
                CodDomicilioFiscal = "0000" //Código de cuatro dígitos asignado por SUNAT
            };

            var dtsReceptor = new Contribuyente()
            {
                NroDocumento    = "-",
                TipoDocumento   = "0",
                NombreLegal     = "TORRES LEON ERWIN STALIN",
                NombreComercial = "",
                Direccion       = "PIURA - PIURA - PIURA"
            };

            _documento.Items.Clear();
            for (var i = 1; i < 3; i++)
            {
                _documento.CalculoIgv = 0.00m;
                var dtsItems = new DetalleDocumento
                {
                    Id           = i,
                    Cantidad     = 1m,
                    UnidadMedida = "NIU",
                    CodigoItem   = "COD001" + i,
                    //ItemClassificationCode = "82141601",// Este código será obligatorio para el 1-1-2019 - catálogo N° 15 del Anexo N° 8 - OBLIGATOIO PARA EXPORTACIONES DESDE NOVIEMBRE
                    Descripcion       = "PRODUCTO PRUEBA",
                    PrecioUnitario    = 42.3728m, //Consignar 0.00 siempre y cuando la factura sea gratuita - TipoImpuesto=21
                    PrecioReferencial = 50m,
                    TipoPrecio        = "01",     //Se usa 02 cuando el tipo de impuesto es gratuito - Valor referencial unitario en operaciones no onerosas
                    TipoImpuesto      = "40",
                    OtroImpuesto      = 0,
                    Descuento         = 0,
                    Suma              = 42.3728m * 1m,                           //_detalle.PrecioUnitario * _detalle.Cantidad
                    Impuesto          = (42.3728m * 1m) * _documento.CalculoIgv, //_detalle.Suma * _documento.CalculoIgv
                    ImpuestoSelectivo = 0,                                       //_detalle.Suma * _documento.CalculoIsc;
                    TotalVenta        = (42.3728m * 1m) - 0                      //_detalle.Suma - _detalle.Descuento
                };
                //Agregamos Detalle
                _documento.Items.Add(dtsItems);
            }

            _documento.Cargos        = 2.00m;
            _documento.IdDocumento   = "FC05-00000005";
            _documento.TipoDocumento = "07";
            _documento.Emisor        = dtsEmisor;
            _documento.Receptor      = dtsReceptor;
            _documento.FechaEmision  = DateTime.Today.ToShortDateString();
            _documento.Moneda        = "PEN";
            _documento.TipoOperacion = "0200";
            //_documento.Imcoterm = "FCA"; //Esto se usa para la factura de exportacion - ver listado de IMCOTERM


            CalcularTotales();

            //Nota de Credito
            _documento.Relacionados.Clear();
            var dtsDocumentoRelacionado = new DocumentoRelacionado
            {
                NroDocumento  = "F005-00000005",
                TipoDocumento = "01"
            };

            _documento.Relacionados.Add(dtsDocumentoRelacionado);
            _documento.Discrepancias.Clear();
            var dtsDiscrepancia = new Discrepancia
            {
                NroReferencia = "F005-00000005",
                Tipo          = "09",
                Descripcion   = "Nota de Credito del usuario admin"
            };

            _documento.Discrepancias.Add(dtsDiscrepancia);
        }
Ejemplo n.º 24
0
        public ActionResult IngresarVehiculos(Guid?TipoVehiculosView, Guid?Id_Parq, string Placa, bool?Lavar, bool?Casillero, int?CantidadCasillero, string ObservacionCasillero)
        {
            using (var transaccion = db.Database.BeginTransaction())
            {
                IngresoVehiculoView ingresoVehiculoView = new IngresoVehiculoView();
                Mensaje             mensaje             = new Mensaje();
                try
                {
                    string IdUsuario = User.Identity.GetUserId();
                    if (Id_Parq == null || Id_Parq == Guid.Empty)
                    {
                        throw new Exception("No tiene ningun parqueadero asignado.");
                    }


                    if (TipoVehiculosView == null || TipoVehiculosView == Guid.Empty)
                    {
                        throw new Exception("Por favor seleccionar un tipo de vehiculo.");
                    }

                    if (string.IsNullOrWhiteSpace(Placa))
                    {
                        throw new Exception("Por favor ingrese la placa del vehiculo.");
                    }

                    if (Placa.Length <= 4)
                    {
                        throw new Exception("Por favor la placa del vehiculo debe tener mas de 4 caracteres.");
                    }

                    Lavar             = (Lavar == null) ? false : Lavar;
                    Casillero         = (Casillero == null) ? false : Casillero;
                    CantidadCasillero = (CantidadCasillero == null) ? 0 : CantidadCasillero;

                    if (Casillero.Value)
                    {
                        if (CantidadCasillero <= 0 || string.IsNullOrWhiteSpace(ObservacionCasillero))
                        {
                            throw new Exception("Por favor ingresar la cantidad o nombre de los articulos.");
                        }
                    }

                    DateTime         dateTime         = DateTime.Now;
                    Vehiculo         vehiculo         = new Vehiculo();
                    Parqueadero      parqueadero      = new Parqueadero();
                    Documento        documento        = new Documento();
                    DetalleDocumento detalleDocumento = new DetalleDocumento();
                    vehiculo    = db.Vehiculo.Where(t => t.Placa_Veh.ToLower() == Placa.ToLower()).FirstOrDefault();
                    parqueadero = db.Parqueaderoes.Find(Id_Parq);

                    if (vehiculo == null)
                    {
                        TipoVehiculos tipoVehiculos = new TipoVehiculos();
                        tipoVehiculos = db.TipoVehiculos.Find(TipoVehiculosView);
                        if (tipoVehiculos == null || tipoVehiculos.Id_TVeh == Guid.Empty)
                        {
                            throw new Exception("El tipo de vehiculo seleccionado no existe.");
                        }

                        ingresoVehiculoView.Vehiculo            = new Vehiculo();
                        ingresoVehiculoView.Vehiculo.Id_Veh     = Guid.NewGuid();
                        ingresoVehiculoView.Vehiculo.Estado_veh = true;
                        ingresoVehiculoView.Vehiculo.Id_TVeh    = tipoVehiculos.Id_TVeh;
                        ingresoVehiculoView.Vehiculo.Placa_Veh  = Placa;
                        vehiculo = ingresoVehiculoView.Vehiculo;
                        db.Vehiculo.Add(vehiculo);
                        db.SaveChanges();
                    }

                    if (vehiculo.Documento != null)
                    {
                        if (vehiculo.Documento.Where(t => t.Estado_Doc == true && t.Id_Parq == Id_Parq).Count() > 0)
                        {
                            throw new Exception(string.Format("El vehiculo de tipo {0} con placa {1} ya tiene un ingreso en el parqueadero", vehiculo.TipoVehiculo.Nombre_TVeh, vehiculo.Placa_Veh.ToUpper()));
                        }
                    }

                    if (Lavar.Value)
                    {
                        if (vehiculo.TipoVehiculo.ValorLavado_TVeh > 0)
                        {
                            documento.ValorLavado = vehiculo.TipoVehiculo.ValorLavado_TVeh;
                        }
                        else
                        {
                            throw new Exception($"El tipo de vehiculo {vehiculo.TipoVehiculo.Nombre_TVeh} no tiene valor configurado para el lavado de vehiculos.");
                        }
                    }

                    if (Casillero.Value)
                    {
                        if (vehiculo.TipoVehiculo.ValorLavado_TVeh > 0)
                        {
                            documento.ValorCasillero = vehiculo.TipoVehiculo.ValorCasillero_TVeh * CantidadCasillero.Value;
                        }
                        else
                        {
                            throw new Exception($"El tipo de vehiculo {vehiculo.TipoVehiculo.Nombre_TVeh} no tiene valor configurado para el casillero de vehiculos.");
                        }
                    }

                    if (CantidadCasillero > 0 && !string.IsNullOrWhiteSpace(ObservacionCasillero))
                    {
                        documento.Observaciones = $"{CantidadCasillero.Value}, {ObservacionCasillero}";
                    }

                    documento.Id_Veh                = vehiculo.Id_Veh;
                    documento.Id_Parq               = parqueadero.Id_Parq;
                    documento.Id_Doc                = Guid.NewGuid();
                    documento.Usuario_Doc           = IdUsuario;
                    documento.Valor_Doc             = 0;
                    documento.Consecutivo           = db.Documento.ToList().Count + 1;
                    documento.Estado_Doc            = true;
                    documento.FechaCreacion_Doc     = dateTime;
                    documento.FachaFinalizacion_Doc = DateTime.MaxValue;

                    db.Documento.Add(documento);
                    db.SaveChanges();

                    detalleDocumento.Estado_DDoc = true;
                    detalleDocumento.Horas_DDoc  = dateTime;
                    detalleDocumento.Id_DDoc     = Guid.NewGuid();
                    detalleDocumento.Id_Doc      = documento.Id_Doc;
                    db.DetalleDocumento.Add(detalleDocumento);
                    db.SaveChanges();

                    ImprimirTicket imprimirTicket = new ImprimirTicket();
                    Imprimir       imprimir       = new Imprimir();
                    imprimir.NombreParqueadero = documento.Parqueadero.NombreEmpresa_Parq.ToUpper();
                    imprimir.Direccion         = documento.Parqueadero.Direccion_Parq.ToUpper();
                    imprimir.NitParqueadero    = documento.Parqueadero.NitEmpresa_Parq.ToUpper();
                    imprimir.TipoVehiculo      = db.TipoVehiculos.Find(vehiculo.Id_TVeh).Nombre_TVeh.ToUpper();
                    imprimir.Placa             = vehiculo.Placa_Veh.ToUpper();
                    imprimir.Fecha             = DateTime.Now.Date;
                    imprimir.Horas             = documento.DetalleDocumento.FirstOrDefault().Horas_DDoc;
                    imprimir.Impresora         = documento.Parqueadero.Impresora_Parq;
                    imprimir.ValorParqueadero  = 0;
                    imprimir.Lavar             = Lavar.Value;
                    imprimir.Casillero         = Casillero.Value;
                    imprimir.ValotLavar        = documento.ValorLavado;
                    imprimir.ValotCasillero    = documento.ValorCasillero;
                    imprimir.Observaciones     = documento.Observaciones;
                    imprimir.ValorXVehiculo    = vehiculo.TipoVehiculo.Valor_TVeh;
                    imprimir.TiempoXVehiculo   = parqueadero.PagoMinutos_Parq;
                    imprimir.HoraApertura      = parqueadero.HoraApertura_Parq;
                    imprimir.HoraCierre        = parqueadero.HoraCierre_Parq;
                    //imprimir.Transcurrido = GetCalculoHoraValor(documento).DetalleDocumento.FirstOrDefault().Transcurrido_DDoc;
                    imprimir.Transcurrido = "Inicio";
                    //imprimirTicket.Generar(imprimir, documento.Parqueadero.ImprimirIngreso_Parq, false);

                    transaccion.Commit();
                    return(PartialView("_FacturaViewPartial", imprimir));
                }
                catch (Exception ex)
                {
                    transaccion.Rollback();
                    mensaje.DescripcionMensaje = string.Format("Error al ingresar vehiculo: {0}", ex.Message);
                    //ModelState.AddModelError(string.Empty, string.Format("Error al ingresar vehiculo: {0}", ex.Message));
                    return(PartialView("AlertMensajerViewPartial", mensaje));
                    //return View("Index", CagarVista(ingresoVehiculoView));
                }
            }
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 25
0
        public static string ImprimirComprobante(int ventaId)
        {
            var mensaje = String.Empty;

            try
            {
                var usuarioInfo = ObtenerUsuarioInfo();

                var ventaInfo        = new Negocio.Venta().Listar(ventaId).FirstOrDefault();
                var ventaDetalleInfo = new Negocio.Venta().ListarDetalle(ventaId, 0);

                var empresaInfo = new Empresa().Listar(usuarioInfo.EmpresaId).FirstOrDefault();


                var facturaSB = new StringBuilder();

                if (ventaInfo.TipoComprobanteId.Equals(Constantes.TipoComprobanteFactura))
                {
                    facturaSB.Append(Herramientas.Helper.ObtenerTexto("~/Archivos/Plantillas/FacturaApu.html"));
                }
                if (ventaInfo.TipoComprobanteId.Equals(Constantes.TipoComprobanteBoletaVenta))
                {
                    facturaSB.Append(Herramientas.Helper.ObtenerTexto("~/Archivos/Plantillas/BoletaApu.html"));
                }

                var fechaEmision = DateTime.Now;

                facturaSB.Replace("@EMPRESA_LOGO", HttpContext.Current.Server.MapPath(empresaInfo.Imagen));
                facturaSB.Replace("@EMPRESA_NOMBRE", empresaInfo.RazonSocial);
                facturaSB.Replace("@EMPRESA_RUC", empresaInfo.NumeroDocumento);
                facturaSB.Replace("@NUMEROCOMPROBANTE", ventaInfo.NumeroSerie + "-" + ventaInfo.NumeroComprobante);
                facturaSB.Replace("@EMPRESA_DIRECCION", empresaInfo.Direccion);
                facturaSB.Replace("@EMPRESA_TELEFONO", empresaInfo.Telefono);
                facturaSB.Replace("@EMPRESA_FAX", empresaInfo.Fax);
                facturaSB.Replace("@EMPRESA_PAIS", empresaInfo.Pais);
                facturaSB.Replace("@EMPRESA_DEPARTAMENTO", empresaInfo.Departamento);
                facturaSB.Replace("@EMPRESA_PROVINCIA", empresaInfo.Provincia);
                facturaSB.Replace("@EMPRESA_DISTRITO", empresaInfo.Distrito);
                facturaSB.Replace("@FECHAEMISION", ventaInfo.FechaEmision.ToString("dd/MM/yyyy"));
                facturaSB.Replace("@AGENCIA_DIRECCION", ventaInfo.Agencia);


                var clienteInfo = new Cliente().Listar(ventaInfo.ClienteId).FirstOrDefault();
                facturaSB.Replace("@CLIENTE_NOMBRE", clienteInfo.TipoPersonaId.Equals(Constantes.TipoPersonaNatural) ? (clienteInfo.Nombres + "," + clienteInfo.ApellidoPaterno + " " + clienteInfo.ApellidoMaterno) : clienteInfo.RazonSocial);
                facturaSB.Replace("@CLIENTE_DIRECCION", clienteInfo.Direccion);
                facturaSB.Replace("@CLIENTE_DISTRITO", clienteInfo.Distrito);
                facturaSB.Replace("@CLIENTE_RUC", clienteInfo.NumeroDocumento);
                facturaSB.Replace("@CLIENTE_CODIGO", clienteInfo.Codigo);

                facturaSB.Replace("@MONEDA", ventaInfo.Moneda);

                var facturaSBDetalle = new StringBuilder("");
                facturaSBDetalle.Append("<table style=\"width: 100%; border-collapse: collapse;\">");
                facturaSBDetalle.Append("   <thead>");
                facturaSBDetalle.Append("       <tr>");
                facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">ITEM</td>");
                facturaSBDetalle.Append("           <td style=\"width: 50%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">DESCRIPCI&Oacute;N</td>");
                facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">CANT</td>");
                facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">UND</td>");
                facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">VALOR UNIT</td>");
                facturaSBDetalle.Append("           <td style=\"width: 10%; border-bottom: 1px solid #0b44e9; text-align: center;\" class=\"Estilo67\">SUBTOTAL</td>");
                facturaSBDetalle.Append("       </tr>");
                facturaSBDetalle.Append("   </thead>");

                var montoGravado       = 0M;
                var montoImpuestoTotal = 0M;
                foreach (var vd in ventaDetalleInfo)
                {
                    facturaSBDetalle.Append("   <tr>");
                    facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + vd.Codigo + "</td>");
                    facturaSBDetalle.Append("       <td style=\"width: 50%; border: 1px none #0b44e9; text-align: left; vertical-align: top;\" class=\"Estilo8\">" + vd.Producto + "</td>");
                    facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + vd.Cantidad.ToString("N2") + "</td>");
                    facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + vd.UnidadMedida + "</td>");
                    facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + vd.PrecioUnitario.ToString("N2") + "</td>");
                    facturaSBDetalle.Append("       <td style=\"width: 10%; border: 1px none #0b44e9; text-align: center; vertical-align: top;\" class=\"Estilo8\">" + vd.SubTotal.ToString("N2") + "</td>");
                    facturaSBDetalle.Append("   </tr>");

                    montoGravado = montoGravado + vd.SubTotal;
                }
                facturaSBDetalle.Append("</table>");

                var montoIgv = montoGravado * 0.18M;

                var montoTotal = montoGravado + montoIgv;

                facturaSB.Replace("@MONTO_GRAVADA", montoGravado.ToString("N2"));
                facturaSB.Replace("@MONTO_INAFECTA", "0.00");
                facturaSB.Replace("@MONTO_EXONERADA", "0.00");
                facturaSB.Replace("@MONTO_GRATUITA", "0.00");
                facturaSB.Replace("@MONTO_IGV", montoIgv.ToString("N2"));
                facturaSB.Replace("@MONTO_TOTAL", montoTotal.ToString("N2"));

                facturaSB.Replace("@PRODUCTO_DETALLE", facturaSBDetalle.ToString());



                #region Generar XML
                _documento = new DocumentoElectronico();

                #region Documento
                _documento.CalculoDetraccion = 0;
                _documento.CalculoIgv        = Decimal.Divide(18, 100);
                _documento.CalculoIsc        = 0;
                _documento.DescuentoGlobal   = ventaInfo.Descuento;

                #region Emisor
                var emisor = new DocumentoElectronico().Emisor;
                emisor.Departamento    = empresaInfo.Departamento;
                emisor.Direccion       = empresaInfo.Direccion;
                emisor.Distrito        = empresaInfo.Distrito;
                emisor.NombreComercial = empresaInfo.RazonSocial;
                emisor.NombreLegal     = empresaInfo.RazonSocial;
                emisor.NroDocumento    = "10421895452";
                emisor.Provincia       = empresaInfo.Provincia;
                emisor.TipoDocumento   = empresaInfo.TipoDocumentoId.ToString();
                emisor.Ubigeo          = empresaInfo.Departamento;
                emisor.Urbanizacion    = empresaInfo.Direccion;
                _documento.Emisor      = emisor;
                #endregion

                _documento.Exoneradas   = 0;
                _documento.FechaEmision = ventaInfo.FechaEmision.ToString("dd/MM/yyyy");
                _documento.Gratuitas    = 0;
                _documento.Gravadas     = ventaInfo.MontoVenta;
                _documento.IdDocumento  = ventaInfo.NumeroSerie + "-" + ventaInfo.NumeroComprobante;
                _documento.Inafectas    = 0;

                #region Items
                var itemId = 1;
                foreach (var vd in ventaDetalleInfo)
                {
                    var item = new DetalleDocumento();
                    item.Cantidad    = vd.Cantidad;
                    item.Descripcion = vd.Producto;
                    item.Id          = itemId;
                    itemId++;
                    item.Impuesto          = vd.Igv;
                    item.PrecioUnitario    = vd.PrecioUnitario;
                    item.Suma              = vd.SubTotal;
                    item.TotalVenta        = vd.MontoTotal;
                    item.UnidadMedida      = vd.UnidadMedida;
                    item.Descuento         = 0;
                    item.ImpuestoSelectivo = 0;
                    item.OtroImpuesto      = 0;
                    item.PrecioReferencial = 0;
                    item.TipoImpuesto      = "10";
                    item.TipoPrecio        = "01";
                    _documento.Items.Add(item);
                }
                #endregion

                _documento.Moneda          = ventaInfo.MonedaId.Equals(Constantes.MonedaSoles) ? Constantes.MonedaSolesSunat : Constantes.MonedaDolaresSunat;
                _documento.MontoAnticipo   = 0;
                _documento.MontoDetraccion = 0;
                _documento.MontoEnLetras   = Herramientas.NumeroALetras.numeroAletras(ventaInfo.MontoVenta);
                _documento.MontoPercepcion = 0;

                #region Receptor
                var receptor = new DocumentoElectronico().Receptor;
                receptor.Departamento    = clienteInfo.Departamento;
                receptor.Direccion       = clienteInfo.Direccion;
                receptor.Distrito        = clienteInfo.Distrito;
                receptor.NombreComercial = clienteInfo.RazonSocial;
                receptor.NombreLegal     = clienteInfo.RazonSocial;
                receptor.NroDocumento    = "10415787796";
                receptor.Provincia       = clienteInfo.Provincia;
                receptor.TipoDocumento   = clienteInfo.TipoDocumentoId.ToString();
                receptor.Ubigeo          = clienteInfo.Departamento;
                receptor.Urbanizacion    = clienteInfo.Direccion;
                _documento.Receptor      = receptor;
                #endregion

                _documento.TipoDocumento      = ventaInfo.TipoComprobanteId;
                _documento.TotalIgv           = ventaInfo.MontoImpuesto;
                _documento.TotalIsc           = 0;
                _documento.TotalOtrosTributos = 0;
                _documento.TotalVenta         = ventaInfo.MontoTotal;
                #endregion


                string metodoApi;
                switch (_documento.TipoDocumento)
                {
                case "07":
                    metodoApi = "api/GenerarNotaCredito";
                    break;

                case "08":
                    metodoApi = "api/GenerarNotaDebito";
                    break;

                default:
                    metodoApi = "api/GenerarFactura";
                    break;
                }

                #region Generando XML
                var client = new RestClient(BaseUrl);

                var requestInvoice = new RestRequest("GenerarFactura", Method.POST)
                {
                    RequestFormat = DataFormat.Json
                };

                requestInvoice.AddBody(_documento);

                var documentoResponse = client.Execute <DocumentoResponse>(requestInvoice);

                if (!documentoResponse.Data.Exito)
                {
                    throw new ApplicationException(documentoResponse.Data.MensajeError);
                }
                //string rutaXml = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/" + _documento.IdDocumento + ".xml");
                //File.WriteAllBytes(rutaXml, Convert.FromBase64String(documentoResponse.Data.TramaXmlSinFirma));
                string rutaXml = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/Cliente/" + clienteInfo.NumeroDocumento);
                if (!Directory.Exists(rutaXml))
                {
                    Directory.CreateDirectory(rutaXml);
                }
                File.WriteAllBytes(rutaXml + "/" + _documento.IdDocumento + ".xml", Convert.FromBase64String(documentoResponse.Data.TramaXmlSinFirma));
                #endregion


                #region Firma
                string rutaCertificado = HostingEnvironment.MapPath("~/Archivos/Facturacion/certificado.pfx");
                var    firmado         = new FirmadoRequest
                {
                    TramaXmlSinFirma    = documentoResponse.Data.TramaXmlSinFirma,
                    CertificadoDigital  = Convert.ToBase64String(File.ReadAllBytes(rutaCertificado)),
                    PasswordCertificado = "9dGxdmm5JHKwKsXc",
                    UnSoloNodoExtension = false
                };

                var requestFirma = new RestRequest("Firmar", Method.POST)
                {
                    RequestFormat = DataFormat.Json
                };
                requestFirma.AddBody(firmado);

                var responseFirma = client.Execute <FirmadoResponse>(requestFirma);

                if (!responseFirma.Data.Exito)
                {
                    throw new ApplicationException(responseFirma.Data.MensajeError);
                }
                //string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/" + _documento.IdDocumento + "_Firmado.xml");
                //File.WriteAllBytes(rutaXmlFirmado, Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado));
                string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/Cliente/" + clienteInfo.NumeroDocumento);
                if (!Directory.Exists(rutaXmlFirmado))
                {
                    Directory.CreateDirectory(rutaXmlFirmado);
                }
                File.WriteAllBytes(rutaXmlFirmado + "/" + _documento.IdDocumento + "_Firmado.xml", Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado));
                #endregion
                #endregion


                #region Codigo QR
                var codigoQR = ventaInfo.NumeroDocumento + "|" + ventaInfo.TipoComprobanteId + "|" + ventaInfo.NumeroSerie + "|" +
                               ventaInfo.NumeroComprobante + "|" + ventaInfo.MontoImpuesto + "|" + ventaInfo.MontoTotal + "|" +
                               ventaInfo.FechaEmision + "|" + clienteInfo.TipoDocumentoId + "|" + clienteInfo.NumeroDocumento + "|" +
                               responseFirma.Data.ResumenFirma + "|" + responseFirma.Data.ValorFirma;

                // instantiate a writer object
                var barcodeWriter = new BarcodeWriter();

                // set the barcode format
                barcodeWriter.Format = BarcodeFormat.PDF_417;

                // write text and generate a 2-D barcode as a bitmap
                // barcodeWriter.Write(codigoQR).Save(@"C:\Users\jeremy\Desktop\generated.bmp");
                string rutaQr = HostingEnvironment.MapPath("~/Archivos/Documentos/Cliente/" + clienteInfo.NumeroDocumento);
                if (!Directory.Exists(rutaQr))
                {
                    Directory.CreateDirectory(rutaQr);
                }
                barcodeWriter.Write(codigoQR).Save(rutaQr + "/" + _documento.IdDocumento + ".bmp");
                #endregion

                facturaSB.Replace("@CODIGO_QR", HttpContext.Current.Server.MapPath("~/Archivos/Documentos/Cliente/" + clienteInfo.NumeroDocumento + "/" + _documento.IdDocumento + ".bmp"));

                facturaSB.Replace("@MONTO_LETRAS", Herramientas.NumeroALetras.numeroAletras(montoTotal));

                facturaSB = Herramientas.Helper.EncodeHtml(facturaSB);

                var    htmlToPdfFactura     = new NReco.PdfGenerator.HtmlToPdfConverter();
                var    pdfBytesFactura      = htmlToPdfFactura.GeneratePdf(facturaSB.ToString());
                string nombreArchivoFactura = String.Empty;

                if (ventaInfo.TipoComprobanteId.Equals(Constantes.TipoComprobanteFactura))
                {
                    nombreArchivoFactura = "Factura_" + fechaEmision.ToString("ddMMyyyyhhmmss") + ".pdf";
                }
                if (ventaInfo.TipoComprobanteId.Equals(Constantes.TipoComprobanteBoletaVenta))
                {
                    nombreArchivoFactura = "Boleta_" + fechaEmision.ToString("ddMMyyyyhhmmss") + ".pdf";
                }

                string pdfFactura = HostingEnvironment.MapPath("~/Archivos/Documentos/Cliente/" + clienteInfo.NumeroDocumento + "");

                if (!Directory.Exists(pdfFactura))
                {
                    Directory.CreateDirectory(pdfFactura);
                }

                var comprobanteImpreso = pdfFactura + "\\" + nombreArchivoFactura;
                File.WriteAllBytes(comprobanteImpreso, pdfBytesFactura);

                Negocio.Helper.ActualizarColumnasTabla("Venta", new string[] { "ComprobanteImpreso" }, new string[] { nombreArchivoFactura }, new string[] { "VentaId" }, new string[] { ventaInfo.VentaId.ToString() });

                #region Envío Correo
                var correos     = clienteInfo.Correo.Replace(",", ";");
                var correoArray = correos.Split(';').ToList();
                var asunto      = "APUFact: Factura Electrónica serie " + ventaInfo.NumeroSerie + " número " + ventaInfo.NumeroComprobante + " del " + ventaInfo.FechaEmision.ToString("dd/MM/yyyy") +
                                  " emitida por " + empresaInfo.RazonSocial + " para " +
                                  (clienteInfo.TipoPersonaId.Equals(Constantes.TipoPersonaNatural) ? (clienteInfo.Nombres + "," + clienteInfo.ApellidoPaterno + " " + clienteInfo.ApellidoMaterno) : clienteInfo.RazonSocial);
                Negocio.Email.Enviar(correoArray, correoArray, correoArray, asunto, "Se adjunta el comprobante.", comprobanteImpreso);
                #endregion

                mensaje = "El Comprobante se generó correctamente" + "@" + nombreArchivoFactura;
            }
            catch (Exception ex)
            {
                bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaPresentacion);
                mensaje = rethrow ? ex.Message : Constantes.ExcepcionPoliticaPresentacion;
            }
            return(mensaje);
        }
Ejemplo n.º 26
0
        public void EnvioSunat()
        {
            try
            {
                var estadoProceso = Negocio.Helper.ObtenerValorParametro("ESTADO_SERVICIO_WINDOWS").ToString();

                if (estadoProceso.Equals("P"))
                {
                    return;
                }

                if (estadoProceso.Equals("N"))
                {
                    Negocio.Helper.ActualizarColumnasTabla("ParametrosGlobales", new string[] { "ValorParametro" }, new string[] { "P" }, new string[] { "NombreParametro" }, new string[] { "ESTADO_SERVICIO_WINDOWS" });
                    var ventaPendienteListaInfo = new Venta().Listar(0).Where(v => v.Exito.Equals(0)).ToList();

                    foreach (var v in ventaPendienteListaInfo)
                    {
                        //var ventaId = 1;
                        var ventaId = v.VentaId;
                        var mensaje = String.Empty;

                        //var usuarioInfo = ObtenerUsuarioInfo();
                        var usuarioInfo      = new Usuario().Listar(1, "", "", "", 0, 0).FirstOrDefault();
                        var ventaInfo        = new Venta().Listar(ventaId).FirstOrDefault();
                        var ventaDetalleInfo = new Venta().ListarDetalle(ventaId, 0);
                        var empresaInfo      = new Empresa().Listar(usuarioInfo.EmpresaId).FirstOrDefault();
                        var clienteInfo      = new Cliente().Listar(ventaInfo.ClienteId).FirstOrDefault();

                        _documento = new DocumentoElectronico();

                        #region Documento
                        _documento.CalculoDetraccion = 0;
                        _documento.CalculoIgv        = Decimal.Divide(18, 100);
                        _documento.CalculoIsc        = 0;
                        _documento.DescuentoGlobal   = ventaInfo.Descuento;
                        // _documento.DocAnticipo = String.Empty;

                        #region Emisor
                        var emisor = new DocumentoElectronico().Emisor;
                        emisor.Departamento = empresaInfo.Departamento;
                        //emisor.Departamento = "LIMA";
                        emisor.Direccion = empresaInfo.Direccion;
                        //emisor.Direccion = "LADERAS DE CHILLON";
                        emisor.Distrito = empresaInfo.Distrito;
                        //emisor.Distrito = "PUENTE PIEDRA";
                        emisor.NombreComercial = empresaInfo.RazonSocial;
                        emisor.NombreLegal     = empresaInfo.RazonSocial;
                        //emisor.NombreComercial = "ABARCA URBANO";
                        //emisor.NombreLegal = "MIGUEL ABARCA URBANO";
                        //emisor.NroDocumento = empresaInfo.NumeroDocumento;
                        emisor.NroDocumento = "10421895452";
                        emisor.Provincia    = empresaInfo.Provincia;
                        //emisor.Provincia = "LIMA";
                        emisor.TipoDocumento = empresaInfo.TipoDocumentoId.ToString();
                        emisor.Ubigeo        = empresaInfo.Departamento;
                        emisor.Urbanizacion  = empresaInfo.Direccion;
                        //emisor.Urbanizacion = "LADERAS DE CHILLON";
                        _documento.Emisor = emisor;
                        #endregion

                        _documento.Exoneradas   = 0;
                        _documento.FechaEmision = ventaInfo.FechaEmision.ToString("dd/MM/yyyy");
                        //_documento.FechaEmision = "2017-11-27";
                        _documento.Gratuitas = 0;
                        _documento.Gravadas  = ventaInfo.MontoVenta;
                        //_documento.Gravadas = 1000;
                        _documento.IdDocumento = ventaInfo.NumeroSerie + "-" + ventaInfo.NumeroComprobante;
                        _documento.Inafectas   = 0;

                        #region Items
                        var itemId = 1;
                        foreach (var vd in ventaDetalleInfo)
                        {
                            var item = new DetalleDocumento();
                            item.Cantidad = vd.Cantidad;
                            // item.CodigoItem = vd.Codigo;

                            item.Descripcion = vd.Producto;
                            //item.Descuento = vd.Descuento;
                            item.Id = itemId;
                            itemId++;
                            item.Impuesto = vd.Igv;
                            //item.ImpuestoSelectivo = 0;
                            //item.OtroImpuesto = 0;
                            //item.PrecioReferencial = 0;
                            item.PrecioUnitario = vd.PrecioUnitario;
                            item.Suma           = vd.SubTotal;
                            //item.TipoImpuesto = "10";
                            //item.TipoPrecio = "01";
                            item.TotalVenta   = vd.MontoTotal;
                            item.UnidadMedida = vd.UnidadMedida;
                            //item.CodigoItem = "A0001";
                            item.Descuento = 0;
                            //item.Id = 1;
                            item.ImpuestoSelectivo = 0;
                            item.OtroImpuesto      = 0;
                            item.PrecioReferencial = 0;
                            // item.PrecioUnitario = 50;
                            item.TipoImpuesto = "10";
                            item.TipoPrecio   = "01";
                            // item.UnidadMedida = "NIU";
                            _documento.Items.Add(item);
                        }
                        #endregion

                        _documento.Moneda = ventaInfo.MonedaId.Equals(Constantes.MonedaSoles) ? Constantes.MonedaSolesSunat : Constantes.MonedaDolaresSunat;
                        // _documento.MonedaAnticipo = 0.18;
                        _documento.MontoAnticipo   = 0;
                        _documento.MontoDetraccion = 0;
                        _documento.MontoEnLetras   = Herramientas.NumeroALetras.numeroAletras(ventaInfo.MontoVenta);
                        //_documento.MontoEnLetras = "MIL";
                        _documento.MontoPercepcion = 0;
                        // _documento.PlacaVehiculo = ventaInfo.Placa;

                        #region Receptor
                        var receptor = new DocumentoElectronico().Receptor;
                        receptor.Departamento    = clienteInfo.Departamento;
                        receptor.Direccion       = clienteInfo.Direccion;
                        receptor.Distrito        = clienteInfo.Distrito;
                        receptor.NombreComercial = clienteInfo.RazonSocial;
                        receptor.NombreLegal     = clienteInfo.RazonSocial;
                        //receptor.NombreComercial = "RENE ABARCA URBANO";
                        //receptor.NombreLegal = "RENE ABARCA URBANO";
                        //receptor.NroDocumento = clienteInfo.NumeroDocumento;
                        receptor.NroDocumento  = "10415787796";
                        receptor.Provincia     = clienteInfo.Provincia;
                        receptor.TipoDocumento = clienteInfo.TipoDocumentoId.ToString();
                        receptor.Ubigeo        = clienteInfo.Departamento;
                        receptor.Urbanizacion  = clienteInfo.Direccion;
                        _documento.Receptor    = receptor;
                        #endregion

                        // _documento.TipoDocAnticipo = 0;
                        _documento.TipoDocumento = ventaInfo.TipoComprobanteId;
                        // _documento.TipoOperacion = ventaInfo.TipoOperacionId;
                        _documento.TotalIgv = ventaInfo.MontoImpuesto;
                        //_documento.TotalIgv = 180;
                        _documento.TotalIsc           = 0;
                        _documento.TotalOtrosTributos = 0;
                        _documento.TotalVenta         = ventaInfo.MontoTotal;
                        //_documento.TotalVenta = 1180;
                        #endregion

                        //var proxy = new HttpClient { BaseAddress = new Uri(ConfigurationManager.AppSettings["UrlOpenInvoicePeruApi"]) };

                        string metodoApi;
                        switch (_documento.TipoDocumento)
                        {
                        case "07":
                            metodoApi = "api/GenerarNotaCredito";
                            break;

                        case "08":
                            metodoApi = "api/GenerarNotaDebito";
                            break;

                        default:
                            metodoApi = "api/GenerarFactura";
                            break;
                        }

                        //var response = await proxy.PostAsJsonAsync(metodoApi, _documento);
                        //var respuesta = await response.Content.ReadAsAsync<DocumentoResponse>();

                        #region Generando XML
                        var client = new RestClient(BaseUrl);

                        var requestInvoice = new RestRequest("GenerarFactura", Method.POST)
                        {
                            RequestFormat = DataFormat.Json
                        };

                        requestInvoice.AddBody(_documento);

                        var documentoResponse = client.Execute <DocumentoResponse>(requestInvoice);

                        if (!documentoResponse.Data.Exito)
                        {
                            throw new ApplicationException(documentoResponse.Data.MensajeError);
                        }
                        //string rutaXml = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/" + _documento.IdDocumento + ".xml");
                        string rutaXml = @"D:\ASOLUTIONS\APU\APU.Presentacion\Archivos\Facturacion\XML\" + _documento.IdDocumento + ".xml";
                        File.WriteAllBytes(rutaXml, Convert.FromBase64String(documentoResponse.Data.TramaXmlSinFirma));
                        #endregion

                        #region Firma
                        //string rutaCertificado = HostingEnvironment.MapPath("~/Archivos/Facturacion/certificado.pfx");
                        var rutaCertificado = @"D:\ASOLUTIONS\APU\APU.Presentacion\certificado.pfx";
                        var firmado         = new FirmadoRequest
                        {
                            TramaXmlSinFirma = documentoResponse.Data.TramaXmlSinFirma,
                            //CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes("certificado.pfx")),
                            CertificadoDigital  = Convert.ToBase64String(File.ReadAllBytes(rutaCertificado)),
                            PasswordCertificado = string.Empty,
                            UnSoloNodoExtension = false
                        };

                        var requestFirma = new RestRequest("Firmar", Method.POST)
                        {
                            RequestFormat = DataFormat.Json
                        };
                        requestFirma.AddBody(firmado);

                        var responseFirma = client.Execute <FirmadoResponse>(requestFirma);

                        if (!responseFirma.Data.Exito)
                        {
                            throw new ApplicationException(responseFirma.Data.MensajeError);
                        }
                        //string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/" + _documento.IdDocumento + "_Firmado.xml");
                        string rutaXmlFirmado = @"D:\ASOLUTIONS\APU\APU.Presentacion\Archivos\Facturacion\XML\" + _documento.IdDocumento + "_Firmado.xml";
                        File.WriteAllBytes(rutaXmlFirmado, Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado));
                        #endregion

                        #region Envio SUNAT
                        var sendBill = new EnviarDocumentoRequest
                        {
                            //Ruc = _documento.Emisor.NroDocumento,
                            Ruc = "10421895452",
                            //UsuarioSol = "MODDATOS",
                            UsuarioSol = "MMINSIOT",
                            //ClaveSol = "MODDATOS",
                            ClaveSol        = "saywalcod",
                            EndPointUrl     = UrlSunat,
                            IdDocumento     = _documento.IdDocumento,
                            TipoDocumento   = _documento.TipoDocumento,
                            TramaXmlFirmado = responseFirma.Data.TramaXmlFirmado
                        };

                        var requestSendBill = new RestRequest("EnviarDocumento", Method.POST)
                        {
                            RequestFormat = DataFormat.Json
                        };
                        requestSendBill.AddBody(sendBill);

                        var responseSendBill = client.Execute <EnviarDocumentoResponse>(requestSendBill);

                        if (!responseSendBill.Data.Exito)
                        {
                            // throw new ApplicationException(responseSendBill.Data.MensajeError);
                        }
                        else
                        {
                            //string rutaCdr = HostingEnvironment.MapPath("~/Archivos/Facturacion/CDR/" + responseSendBill.Data.NombreArchivo + ".zip");
                            string rutaCdr = @"D:\ASOLUTIONS\APU\APU.Presentacion\Archivos\Facturacion\CDR\" + responseSendBill.Data.NombreArchivo + ".zip";
                            File.WriteAllBytes(rutaCdr, Convert.FromBase64String(responseSendBill.Data.TramaZipCdr));
                        }

                        //Console.WriteLine("Respuesta de SUNAT:");
                        //Console.WriteLine(responseSendBill.Data.MensajeRespuesta);
                        var data = responseSendBill.Data;
                        mensaje = data.Exito ? data.MensajeRespuesta : data.MensajeError;

                        var ventaSunatInfo = new VentaSunatInfo();
                        ventaSunatInfo.VentaId           = ventaId;
                        ventaSunatInfo.CodigoRespuesta   = (data.CodigoRespuesta == null) ? String.Empty : data.CodigoRespuesta;
                        ventaSunatInfo.Exito             = data.Exito ? 1 : 0;
                        ventaSunatInfo.MensajeError      = (data.MensajeError == null) ? String.Empty : data.MensajeError;
                        ventaSunatInfo.MensajeRespuesta  = (data.MensajeRespuesta == null) ? String.Empty : data.MensajeRespuesta;
                        ventaSunatInfo.NombreArchivo     = (data.NombreArchivo == null) ? String.Empty : data.NombreArchivo;
                        ventaSunatInfo.Pila              = (data.Pila == null) ? String.Empty : data.Pila;
                        ventaSunatInfo.TramaZipCdr       = (data.TramaZipCdr == null) ? String.Empty : data.TramaZipCdr;
                        ventaSunatInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;
                        new VentaSunat().Insertar(ventaSunatInfo);
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                // Console.WriteLine(e);
                System.Diagnostics.EventLog.WriteEntry("MyEventSource", ex.StackTrace, System.Diagnostics.EventLogEntryType.Warning);
            }
        }
Ejemplo n.º 27
0
        private void btnAgregar_Click(object sender, EventArgs e)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                switch (tbPaginas.SelectedIndex)
                {
                case 0:
                    var detalle = new DetalleDocumento();

                    using (var frm = new FrmDetalleDocumento(detalle, _documento))
                    {
                        if (frm.ShowDialog(this) != DialogResult.OK)
                        {
                            return;
                        }

                        _documento.Items.Add(detalle);

                        CalcularTotales();
                    }
                    break;

                case 1:
                    var datoAdicional = new DatoAdicional();
                    using (var frm = new FrmDatosAdicionales(datoAdicional))
                    {
                        if (frm.ShowDialog(this) != DialogResult.OK)
                        {
                            return;
                        }

                        _documento.DatoAdicionales.Add(datoAdicional);
                    }
                    break;

                case 2:
                    var documentoRelacionado = new DocumentoRelacionado();
                    using (var frm = new FrmDocumentoRelacionado(documentoRelacionado))
                    {
                        if (frm.ShowDialog(this) != DialogResult.OK)
                        {
                            return;
                        }

                        _documento.Relacionados.Add(documentoRelacionado);
                    }
                    break;

                case 3:
                    var discrepancia = new Discrepancia();
                    using (var frm = new FrmDiscrepancia(discrepancia, _documento.TipoDocumento))
                    {
                        if (frm.ShowDialog(this) != DialogResult.OK)
                        {
                            return;
                        }

                        _documento.Discrepancias.Add(discrepancia);
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            finally
            {
                documentoElectronicoBindingSource.ResetBindings(false);
                Cursor.Current = Cursors.Default;
            }
        }
Ejemplo n.º 28
0
        public static DetalleDocumento DetalleItem(DataTable DtArticulos, int i)
        {
            decimal vPrecioUnitario;

            try
            {
                if (Convert.ToDecimal(DtArticulos.Rows[i]["Productocantidad"]) == 0)
                {
                    vPrecioUnitario = Convert.ToDecimal(DtArticulos.Rows[i]["Preciovta"]);
                }
                else
                {
                    vPrecioUnitario = Convert.ToDecimal(DtArticulos.Rows[i]["Preciovta"]);
                }
                string vDescripcion = "";
                if (Convert.ToString(DtArticulos.Rows[i]["Productodescripcion"]) != "")
                {
                    vDescripcion = Convert.ToString(DtArticulos.Rows[i]["Productodescripcion"]);
                }
                else
                {
                    vDescripcion = "DIESEL B5";
                }

                DetalleDocumento detalle = new DetalleDocumento();

                detalle.Id                = Convert.ToInt32(i + 1);
                detalle.Cantidad          = Convert.ToDecimal(DtArticulos.Rows[i]["Productocantidad"]);
                detalle.PrecioReferencial = vPrecioUnitario;
                detalle.PrecioUnitario    = vPrecioUnitario;
                detalle.TipoPrecio        = Convert.ToString(DtArticulos.Rows[i]["TipodePrecioID"]);
                detalle.CodigoItem        = Convert.ToString(DtArticulos.Rows[i]["ProductoID"]);
                detalle.Descripcion       = vDescripcion;
                detalle.UnidadMedida      = "NIU";
                detalle.Impuesto          = Convert.ToDecimal(DtArticulos.Rows[i]["ItemIgv"]);
                detalle.TipoImpuesto      = Convert.ToString(DtArticulos.Rows[i]["TipodeImpuestoID"]);
                detalle.ImpuestoSelectivo = Convert.ToDecimal(DtArticulos.Rows[i]["itemIsc"]);
                detalle.OtroImpuesto      = 0;
                detalle.ItemGravado       = Convert.ToDecimal(DtArticulos.Rows[i]["ItemGravado"]);
                detalle.ItemInafecto      = Convert.ToDecimal(DtArticulos.Rows[i]["ItemInafecto"]);
                detalle.ItemExonerado     = Convert.ToDecimal(DtArticulos.Rows[i]["ItemExonerado"]);

                detalle.ItemVenta = Convert.ToDecimal(DtArticulos.Rows[i]["ItemVenta"]);
                detalle.ItemSuma  = Convert.ToDecimal(DtArticulos.Rows[i]["ItemVenta"]);

                string vNombre      = Convert.ToString(DtArticulos.Rows[i]["nombre"]);
                string vNemoTecnico = Convert.ToString(DtArticulos.Rows[i]["Nemotecnico"]);
                string vCodigo      = Convert.ToString(DtArticulos.Rows[i]["codigo"]);
                string vId          = Convert.ToString(DtArticulos.Rows[i]["AfectacionIgv"]);

                detalle.AfectacionIgv = new AfectacionIgv
                {
                    Nemotecnico = vNemoTecnico,
                    Nombre      = vNombre,
                    Codigo      = vCodigo,
                    Id          = vId
                };

                return(detalle);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(null);
            }
        }
Ejemplo n.º 29
0
        //public static string EnviarSunat(int ventaId)
        public static EnviarDocumentoResponse EnviarSunat(int ventaId)
        {
            var mensaje = String.Empty;

            var usuarioInfo      = ObtenerUsuarioInfo();
            var ventaInfo        = new Negocio.Venta().Listar(ventaId).FirstOrDefault();
            var ventaDetalleInfo = new Negocio.Venta().ListarDetalle(ventaId, 0);
            var empresaInfo      = new Empresa().Listar(usuarioInfo.EmpresaId).FirstOrDefault();
            var clienteInfo      = new Cliente().Listar(ventaInfo.ClienteId).FirstOrDefault();

            _documento = new DocumentoElectronico();

            #region Documento
            _documento.CalculoDetraccion = 0;
            _documento.CalculoIgv        = Decimal.Divide(18, 100);
            _documento.CalculoIsc        = 0;
            _documento.DescuentoGlobal   = ventaInfo.Descuento;

            #region Emisor
            var emisor = new DocumentoElectronico().Emisor;
            emisor.Departamento    = empresaInfo.Departamento;
            emisor.Direccion       = empresaInfo.Direccion;
            emisor.Distrito        = empresaInfo.Distrito;
            emisor.NombreComercial = empresaInfo.RazonSocial;
            emisor.NombreLegal     = empresaInfo.RazonSocial;
            emisor.NroDocumento    = "10421895452";
            emisor.Provincia       = empresaInfo.Provincia;
            emisor.TipoDocumento   = empresaInfo.TipoDocumentoId.ToString();
            emisor.Ubigeo          = empresaInfo.Departamento;
            emisor.Urbanizacion    = empresaInfo.Direccion;
            _documento.Emisor      = emisor;
            #endregion

            _documento.Exoneradas   = 0;
            _documento.FechaEmision = ventaInfo.FechaEmision.ToString("dd/MM/yyyy");
            _documento.Gratuitas    = 0;
            _documento.Gravadas     = ventaInfo.MontoVenta;
            _documento.IdDocumento  = ventaInfo.NumeroSerie + "-" + ventaInfo.NumeroComprobante;
            _documento.Inafectas    = 0;

            #region Items
            var itemId = 1;
            foreach (var vd in ventaDetalleInfo)
            {
                var item = new DetalleDocumento();
                item.Cantidad    = vd.Cantidad;
                item.Descripcion = vd.Producto;
                item.Id          = itemId;
                itemId++;
                item.Impuesto          = vd.Igv;
                item.PrecioUnitario    = vd.PrecioUnitario;
                item.Suma              = vd.SubTotal;
                item.TotalVenta        = vd.MontoTotal;
                item.UnidadMedida      = vd.UnidadMedida;
                item.Descuento         = 0;
                item.ImpuestoSelectivo = 0;
                item.OtroImpuesto      = 0;
                item.PrecioReferencial = 0;
                item.TipoImpuesto      = "10";
                item.TipoPrecio        = "01";
                _documento.Items.Add(item);
            }
            #endregion

            _documento.Moneda          = ventaInfo.MonedaId.Equals(Constantes.MonedaSoles) ? Constantes.MonedaSolesSunat : Constantes.MonedaDolaresSunat;
            _documento.MontoAnticipo   = 0;
            _documento.MontoDetraccion = 0;
            _documento.MontoEnLetras   = Herramientas.NumeroALetras.numeroAletras(ventaInfo.MontoVenta);
            _documento.MontoPercepcion = 0;
            // _documento.PlacaVehiculo = ventaInfo.Placa;

            #region Receptor
            var receptor = new DocumentoElectronico().Receptor;
            receptor.Departamento    = clienteInfo.Departamento;
            receptor.Direccion       = clienteInfo.Direccion;
            receptor.Distrito        = clienteInfo.Distrito;
            receptor.NombreComercial = clienteInfo.RazonSocial;
            receptor.NombreLegal     = clienteInfo.RazonSocial;
            receptor.NroDocumento    = clienteInfo.NumeroDocumento;
            receptor.Provincia       = clienteInfo.Provincia;
            receptor.TipoDocumento   = clienteInfo.TipoDocumentoId.ToString();
            receptor.Ubigeo          = clienteInfo.Departamento;
            receptor.Urbanizacion    = clienteInfo.Direccion;
            _documento.Receptor      = receptor;
            #endregion

            _documento.TipoDocumento      = ventaInfo.TipoComprobanteId;
            _documento.TotalIgv           = ventaInfo.MontoImpuesto;
            _documento.TotalIsc           = 0;
            _documento.TotalOtrosTributos = 0;
            _documento.TotalVenta         = ventaInfo.MontoTotal;
            #endregion

            string metodoApi;
            switch (_documento.TipoDocumento)
            {
            case "07":
                metodoApi = "api/GenerarNotaCredito";
                break;

            case "08":
                metodoApi = "api/GenerarNotaDebito";
                break;

            default:
                metodoApi = "api/GenerarFactura";
                break;
            }


            #region Generando XML
            var client = new RestClient(BaseUrl);

            var requestInvoice = new RestRequest("GenerarFactura", Method.POST)
            {
                RequestFormat = DataFormat.Json
            };

            requestInvoice.AddBody(_documento);

            var documentoResponse = client.Execute <DocumentoResponse>(requestInvoice);

            if (!documentoResponse.Data.Exito)
            {
                throw new ApplicationException(documentoResponse.Data.MensajeError);
            }
            //string rutaXml = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/" + _documento.IdDocumento + ".xml");
            //File.WriteAllBytes(rutaXml, Convert.FromBase64String(documentoResponse.Data.TramaXmlSinFirma));
            string rutaXml = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/Cliente/" + clienteInfo.NumeroDocumento);
            if (!Directory.Exists(rutaXml))
            {
                Directory.CreateDirectory(rutaXml);
            }
            File.WriteAllBytes(rutaXml + "/" + _documento.IdDocumento + ".xml", Convert.FromBase64String(documentoResponse.Data.TramaXmlSinFirma));
            #endregion

            #region Firma
            string rutaCertificado = HostingEnvironment.MapPath("~/Archivos/Facturacion/certificado.pfx");
            var    firmado         = new FirmadoRequest
            {
                TramaXmlSinFirma    = documentoResponse.Data.TramaXmlSinFirma,
                CertificadoDigital  = Convert.ToBase64String(File.ReadAllBytes(rutaCertificado)),
                PasswordCertificado = "9dGxdmm5JHKwKsXc",
                UnSoloNodoExtension = false
            };

            var requestFirma = new RestRequest("Firmar", Method.POST)
            {
                RequestFormat = DataFormat.Json
            };
            requestFirma.AddBody(firmado);

            var responseFirma = client.Execute <FirmadoResponse>(requestFirma);

            if (!responseFirma.Data.Exito)
            {
                throw new ApplicationException(responseFirma.Data.MensajeError);
            }
            //string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/" + _documento.IdDocumento + "_Firmado.xml");
            //File.WriteAllBytes(rutaXmlFirmado, Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado));
            string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/Cliente/" + clienteInfo.NumeroDocumento);
            if (!Directory.Exists(rutaXmlFirmado))
            {
                Directory.CreateDirectory(rutaXmlFirmado);
            }
            File.WriteAllBytes(rutaXmlFirmado + "/" + _documento.IdDocumento + "_Firmado.xml", Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado));
            #endregion

            #region Envio SUNAT
            var sendBill = new EnviarDocumentoRequest
            {
                Ruc             = _documento.Emisor.NroDocumento,
                UsuarioSol      = "FACTRC18",
                ClaveSol        = "rcfact2018",
                EndPointUrl     = UrlSunat,
                IdDocumento     = _documento.IdDocumento,
                TipoDocumento   = _documento.TipoDocumento,
                TramaXmlFirmado = responseFirma.Data.TramaXmlFirmado
            };

            var requestSendBill = new RestRequest("EnviarDocumento", Method.POST)
            {
                RequestFormat = DataFormat.Json
            };
            requestSendBill.AddBody(sendBill);

            var responseSendBill = client.Execute <EnviarDocumentoResponse>(requestSendBill);

            if (!responseSendBill.Data.Exito)
            {
                // throw new ApplicationException(responseSendBill.Data.MensajeError);
            }
            else
            {
                string rutaCdr = HostingEnvironment.MapPath("~/Archivos/Facturacion/CDR/" + responseSendBill.Data.NombreArchivo + ".zip");
                File.WriteAllBytes(rutaCdr, Convert.FromBase64String(responseSendBill.Data.TramaZipCdr));
            }

            var data = responseSendBill.Data;
            mensaje = data.Exito ? data.MensajeRespuesta : data.MensajeError;

            var ventaSunatInfo = new VentaSunatInfo();
            ventaSunatInfo.VentaId           = ventaId;
            ventaSunatInfo.CodigoRespuesta   = (data.CodigoRespuesta == null) ? String.Empty : data.CodigoRespuesta;
            ventaSunatInfo.Exito             = data.Exito ? 1 : 0;
            ventaSunatInfo.MensajeError      = (data.MensajeError == null)?String.Empty : data.MensajeError;
            ventaSunatInfo.MensajeRespuesta  = (data.MensajeRespuesta == null) ? String.Empty : data.MensajeRespuesta;
            ventaSunatInfo.NombreArchivo     = (data.NombreArchivo == null) ? String.Empty : data.NombreArchivo;
            ventaSunatInfo.Pila              = (data.Pila == null) ? String.Empty : data.Pila;
            ventaSunatInfo.TramaZipCdr       = (data.TramaZipCdr == null) ? String.Empty : data.TramaZipCdr;
            ventaSunatInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;
            new Negocio.VentaSunat().Insertar(ventaSunatInfo);
            #endregion

            return(data);
        }
Ejemplo n.º 30
0
        public ActionResult Detalles(DetalleView DetalleView, string id)
        {
            string aux = "";

            string[] ID  = id.Split(new char[] { ',' });
            var      DCM = new List <DetalleMesasCliente>();

            using (var transacion = db.Database.BeginTransaction())
            {
                try
                {
                    for (int i = 0; i < ID.Length; i++)
                    {
                        if (ID[i] != "")
                        {
                            DCM.Add(db.DetalleMesasCliente.Find(Convert.ToInt32(ID[i])));
                        }
                    }
                    decimal valor = 0;
                    foreach (var item in DCM)
                    {
                        int x = 0;
                        valor = valor + (item.Cantidad_DMC * item.Menu.Valor_Menu);
                        string[] s = aux.Split(new char[] { ',' });
                        for (int i = 0; i < s.Length; i++)
                        {
                            if (s[i] != "")
                            {
                                x = 0;
                                if (Convert.ToInt32(s[i]) == item.Cod_MesasO)
                                {
                                    x++;
                                }
                            }
                        }
                        if (x == 0)
                        {
                            aux = aux + "," + item.Cod_MesasO;
                        }
                    }
                    int consecutivo = Consecutivo.Numero(db);
                    var D           = new Documento
                    {
                        Cod_Cli           = DCM.FirstOrDefault().Cod_Cli,
                        Cod_TDoc          = 1,
                        Estado_Doc        = true,
                        Fecha_Doc         = DCM.FirstOrDefault().MesasOcupadas.Fecha_MesasO,
                        HoraIngreso_Doc   = DCM.FirstOrDefault().MesasOcupadas.HoraIngreso_MesasO,
                        HoraSalida_Doc    = hora,
                        NConfirmacion_Doc = DCM.FirstOrDefault().NConfirmacion_DMC,
                        Valor_Doc         = valor,
                        Consecutivo       = consecutivo
                    };
                    db.Documento.Add(D);
                    db.SaveChanges();
                    int idD = db.Documento.Where(t => (t.NConfirmacion_Doc == D.NConfirmacion_Doc) && (t.HoraSalida_Doc == D.HoraSalida_Doc) && (t.Id_Doc == D.Id_Doc)).Max(x => x.Id_Doc);
                    foreach (var item in DCM)
                    {
                        var DC = new DetalleDocumento
                        {
                            Id_DMC = item.Id_DMC,
                            Id_Doc = idD
                        };
                        var ADMC = db.DetalleMesasCliente.Find(item.Id_DMC);
                        ADMC.Estado_DMC = false;
                        ADMC.MesasOcupadas.Estado_MesasO  = false;
                        ADMC.MesasOcupadas.Llegada_MesasO = false;
                        db.Entry(ADMC).State = EntityState.Modified;
                        db.DetalleDocumento.Add(DC);
                    }
                    db.SaveChanges();
                    transacion.Commit();

                    var edetalles = new EDetalles
                    {
                        D       = 0,
                        IdC     = DCM.FirstOrDefault().Cod_Cli,
                        IdMesaO = DCM.FirstOrDefault().Cod_MesasO,
                        IdM     = DCM.FirstOrDefault().MesasOcupadas.Cod_Mesa,
                        NC      = DCM.FirstOrDefault().NConfirmacion_DMC,
                        F       = true,
                        Add     = aux
                    };
                    return(RedirectToAction("Detalles", edetalles));
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError(string.Empty, ex.Message);
                    transacion.Rollback();
                    throw;
                }
            }
            //return View();
        }