public void ConvertirNumerosALetras_Nuemero_RetornaLetra()
        {
            var respuesta = NumerosALetras.ConvertirNumerosALetras("0");

            Assert.Equal("CERO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("1");
            Assert.Equal("UNO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("1.16");
            Assert.Equal("UNO CON 16/100", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("2");
            Assert.Equal("DOS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("4");
            Assert.Equal("CUATRO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("8");
            Assert.Equal("OCHO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("16");
            Assert.Equal("DIECISÉIS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("21");
            Assert.Equal("VEINTIUNO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("22");
            Assert.Equal("VEINTIDÓS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("23");
            Assert.Equal("VEINTITRÉS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("26");
            Assert.Equal("VEINTISÉIS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("32");
            Assert.Equal("TREINTA Y DOS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("64");
            Assert.Equal("SESENTA Y CUATRO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("128");
            Assert.Equal("CIENTO VEINTIOCHO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("256");
            Assert.Equal("DOSCIENTOS CINCUENTA Y SEIS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("121000");
            Assert.Equal("CIENTO VEINTIÚN MIL", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("1000000");
            Assert.Equal("UN MILLÓN", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("1256000");
            Assert.Equal("UN MILLÓN DOSCIENTOS CINCUENTA Y SEIS MIL", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras("1000000256000");
            Assert.Equal("UN BILLÓN DOSCIENTOS CINCUENTA Y SEIS MIL", respuesta);
        }
Пример #2
0
        public ActionResult GetQuery(double num)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("No es un número."));
            }

            return(Ok(new { letras = NumerosALetras.ConvertirNumerosALetras(num.ToString()) }));
        }
        public void Reemplazar_Valor_RetornaReemplazo()
        {
            var respuesta = NumerosALetras.Reemplazar("Hola Mundo", "Mundo", "NAL");

            Assert.Equal("Hola NAL", respuesta);
        }
        public void ConvertirNumerosALetras_NoNumero_RetornaError()
        {
            var respuesta = NumerosALetras.ConvertirNumerosALetras("Hola Mundo");

            Assert.Equal("No es un número.", respuesta);
        }
        public void ConvertirNumerosALetras_Vacio_RetornaVacio()
        {
            var respuesta = NumerosALetras.ConvertirNumerosALetras("");

            Assert.Equal("", respuesta);
        }
        public void ConvertirNumerosALetras_FueraDeRango_RetornaError()
        {
            var respuesta = NumerosALetras.ConvertirNumerosALetras("12345678901234567");

            Assert.Equal("Número fuera de rango.", respuesta);
        }
        public void ConvertirNumerosALetras_Nuemero_RetornaLetra()
        {
            var respuesta = NumerosALetras.ConvertirNumerosALetras(-1);

            Assert.Equal("MENOS UNO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(0);
            Assert.Equal("CERO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(1);
            Assert.Equal("UNO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(1.16);
            Assert.Equal("UNO CON 16/100", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(2);
            Assert.Equal("DOS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(4);
            Assert.Equal("CUATRO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(5);
            Assert.Equal("CINCO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(7);
            Assert.Equal("SIETE", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(8);
            Assert.Equal("OCHO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(9);
            Assert.Equal("NUEVE", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(10);
            Assert.Equal("DIEZ", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(11);
            Assert.Equal("ONCE", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(12);
            Assert.Equal("DOCE", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(13);
            Assert.Equal("TRECE", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(14);
            Assert.Equal("CATORCE", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(15);
            Assert.Equal("QUINCE", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(16);
            Assert.Equal("DIECISÉIS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(20);
            Assert.Equal("VEINTE", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(21);
            Assert.Equal("VEINTIUNO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(22);
            Assert.Equal("VEINTIDÓS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(23);
            Assert.Equal("VEINTITRÉS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(26);
            Assert.Equal("VEINTISÉIS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(32);
            Assert.Equal("TREINTA Y DOS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(40);
            Assert.Equal("CUARENTA", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(64);
            Assert.Equal("SESENTA Y CUATRO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(70);
            Assert.Equal("SETENTA", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(80);
            Assert.Equal("OCHENTA", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(90);
            Assert.Equal("NOVENTA", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(100);
            Assert.Equal("CIEN", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(128);
            Assert.Equal("CIENTO VEINTIOCHO", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(256);
            Assert.Equal("DOSCIENTOS CINCUENTA Y SEIS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(500);
            Assert.Equal("QUINIENTOS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(700);
            Assert.Equal("SETECIENTOS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(900);
            Assert.Equal("NOVECIENTOS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(1000);
            Assert.Equal("MIL", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(1100);
            Assert.Equal("MIL CIEN", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(2256);
            Assert.Equal("DOS MIL DOSCIENTOS CINCUENTA Y SEIS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(121000);
            Assert.Equal("CIENTO VEINTIÚN MIL", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(1000000);
            Assert.Equal("UN MILLÓN", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(1256000);
            Assert.Equal("UN MILLÓN DOSCIENTOS CINCUENTA Y SEIS MIL", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(5000500);
            Assert.Equal("CINCO MILLONES QUINIENTOS", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(1000000000000);
            Assert.Equal("UN BILLÓN", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(1000000256000);
            Assert.Equal("UN BILLÓN DOSCIENTOS CINCUENTA Y SEIS MIL", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(5000000000000);
            Assert.Equal("CINCO BILLONES", respuesta);

            respuesta = NumerosALetras.ConvertirNumerosALetras(5000000256000);
            Assert.Equal("CINCO BILLONES DOSCIENTOS CINCUENTA Y SEIS MIL", respuesta);
        }
Пример #8
0
        protected void GenerarTickets_Click(object sender, EventArgs e)
        {
            _db = new BasesDatos((Session["IDENTEMI"] != null ? Session["IDENTEMI"].ToString() : "CORE"));
            if (ddlSerie.SelectedItem.Text.Equals("Todas") || string.IsNullOrEmpty(tbsucursal.Text))
            {
                (Master as SiteMaster).MostrarAlerta(this, ddlSerie.SelectedItem.Text.Equals("Todas") ? "Seleccione la serie" : "Inserte la sucursal", 4, null);
                return;
            }
            if (!string.IsNullOrEmpty(tbFecha.Text) || !string.IsNullOrEmpty(FechaFin.Text) || !string.IsNullOrEmpty(tbsucursal.Text))
            {
                var where = "";
                var sql     = @"SELECT DISTINCT CONVERT(VARCHAR(MAX), Trama) AS Trama,serie,noTicket from log_trama";
                var fechain = tbFecha.Text + "-" + FechaFin.Text;
                if (!string.IsNullOrEmpty(tbsucursal.Text))
                {
                    where += (!string.IsNullOrEmpty(where) ? " AND " : " WHERE ") + "serie = " + "'" + tbsucursal.Text + "'";
                }
                where += (!string.IsNullOrEmpty(where) ? " AND " : " WHERE ") + " Trama like '%" + fechain.ToString() + "%'" + " AND " + " observaciones = " + "'ExtranetOK'" + " AND " + "tipo= " + "4";
                _db.Conectar();
                _db.CrearComando(sql + where);
                var dr  = _db.EjecutarConsulta();
                var val = new List <string[]>();
                while (dr.Read())
                {
                    string[] valor = new string[3];
                    valor[0] = dr[0].ToString();
                    valor[1] = dr[1].ToString();
                    valor[2] = dr[2].ToString();
                    val.Add(valor);
                }
                _db.Desconectar();
                List <KeyValuePair <string, string> > errores;
                var tbLugarExp       = "";
                var tbTotalFac       = "";
                var tbTotal          = "";
                var tbCodDoc         = "";
                var tbISH            = "";
                var tbFormaPago      = "";
                var tbSubtotal       = "";
                var tbPropina        = "";
                var tbOtrosCargos    = "";
                var tbCantLetra      = "";
                var tbIva16          = "";
                var ddlMetodoPago    = "";
                var serie            = "";
                var tbNumCtaPago     = "";
                var tbObservaciones  = "";
                var facturas         = new List <object[]>();
                var tramas           = tramasChecked(out errores, val);
                var tramasFacturadas = GetFacturadas(tramas);
                if (tramas.Count < 1)
                {
                    (Master as SiteMaster).MostrarAlerta(this, "No se encontraron registros", 4, null);
                    return;
                }

                else if (tramasFacturadas.Count > 0)
                {
                    var html = "<ul><li>" + string.Join("</li></li>", tramasFacturadas.Select(x => Session["CfdiVersion"].ToString().Equals("3.3") ? x.Resumen33.CurrentReferenceNumber : x.Resumen.NoReferenciaAct)) + "</li></ul>";
                    (Master as SiteMaster).MostrarAlerta(this, "Los siguientes tickets ya fueron facturados, actualice la busqueda:<br/>" + html, 4, null);
                    return;
                }
                else
                {
                    try
                    {
                        var     numLetra     = new NumerosALetras();
                        decimal _subTotal    = 0;
                        decimal _iva16       = 0;
                        decimal _totalFac    = 0;
                        decimal _propina     = 0;
                        decimal _otrosCargos = 0;
                        decimal _aPagar      = 0;
                        decimal _descuentos  = 0;
                        dataTableConceptos = new DataTable();
                        if (dataTableConceptos.Columns.Count == 0)
                        {
                            dataTableConceptos.Columns.Add("cantidad", typeof(string));
                            dataTableConceptos.Columns.Add("descripcion", typeof(string));
                            dataTableConceptos.Columns.Add("valorUnitario", typeof(string));
                            dataTableConceptos.Columns.Add("iva", typeof(string));
                            dataTableConceptos.Columns.Add("importe", typeof(string));
                            dataTableConceptos.Columns.Add("propina", typeof(string));
                            dataTableConceptos.Columns.Add("total", typeof(string));
                            dataTableConceptos.Columns.Add("unidad", typeof(string));
                            dataTableConceptos.Columns.Add("descuento", typeof(string));
                        }
                        foreach (var tramaMicros in tramas)
                        {
                            string  descripcion = "";
                            decimal subTotal    = 0;
                            decimal iva         = 0;
                            decimal totalFac    = 0;
                            decimal propina     = 0;
                            decimal otrosCargos = 0;
                            decimal aPagar      = 0;
                            decimal descuentos  = 0;
                            //requerido por parroquia
                            decimal MontoNeto = 0;

                            if (Session["CfdiVersion"].ToString().Equals("3.3"))
                            {
                                if (tramaMicros.Resumen33.CurrentReferenceNumber.Equals("21913756180557"))
                                {
                                    // Do Nothing
                                }

                                try { descripcion = tramaMicros.Resumen33.CurrentReferenceNumber; } catch { }
                                try { subTotal = tramaMicros.Detalles33.Sum(x => Convert.ToDecimal(x.NetAmount)); } catch { }
                                //try { iva = tramaMicros.Impuestos33.Sum(x => Convert.ToDecimal(x.GrossAmount.Replace("-", ""))); } catch { }
                                #region Impuestos por Concepto

                                iva = 0;
                                foreach (var concepto in tramaMicros.Detalles33)
                                {
                                    var taxDetails = concepto.TaxBaseFactorAmountCode.Split(';');
                                    foreach (var taxDetail in taxDetails)
                                    {
                                        if (!string.IsNullOrEmpty(taxDetail))
                                        {
                                            decimal dtaxAmount = 0;
                                            var     taxAmount  = taxDetail.Split(' ')[2];
                                            decimal.TryParse(taxAmount, out dtaxAmount);
                                            iva += dtaxAmount;
                                        }
                                    }
                                }

                                #endregion
                                try { totalFac = tramaMicros.Detalles33.Sum(x => Convert.ToDecimal(x.GrossAmount)); } catch { }
                                try { propina = Convert.ToDecimal(tramaMicros.Propinas33 != null ? tramaMicros.Propinas33.NetAmount : "0.00"); } catch { }
                                try { otrosCargos = Convert.ToDecimal("0.00"); } catch { }
                                try { aPagar = Convert.ToDecimal(tramaMicros.Resumen33.GrossAmountGroupedP); } catch { }
                                descuentos = tramaMicros.Descuentos33 == null ? 0 : tramaMicros.Descuentos33.Sum(x => Convert.ToDecimal(x.NetAmount.Replace("-", "")));
                                totalFac   = subTotal - descuentos + iva;
                                aPagar     = totalFac + propina;
                            }
                            else
                            {
                                if (tramaMicros.Resumen.NoReferenciaAct.Equals("21913756180557"))
                                {
                                    // Do Nothing
                                }

                                try { descripcion = tramaMicros.Resumen.NoReferenciaAct; } catch { }
                                try { subTotal = tramaMicros.Detalles.Sum(x => Convert.ToDecimal(x.MontoNetoAgrupado)); } catch { }
                                try { iva = tramaMicros.Impuestos.Sum(x => Convert.ToDecimal(x.MontoNetoi)); } catch { }
                                try { totalFac = tramaMicros.Detalles.Sum(x => Convert.ToDecimal(x.MontoBrutoagrupadom)); } catch { }
                                try { propina = Convert.ToDecimal(tramaMicros.Propinas != null ? tramaMicros.Propinas.MontoNetos : "0.00"); } catch { }
                                try { otrosCargos = Convert.ToDecimal("0.00"); } catch { }
                                try { aPagar = Convert.ToDecimal(tramaMicros.Resumen.MontoBruto); } catch { }
                                if (tramaMicros.Descuentos != null)
                                {
                                    try { descuentos = tramaMicros.Descuentos.Sum(x => Math.Abs(Convert.ToDecimal(x.MontoNetod, new CultureInfo("en-US")))); } catch { }
                                }
                                MontoNeto = Convert.ToDecimal(tramaMicros.Resumen.MontoNeto);//
                                totalFac  = MontoNeto - propina;
                                aPagar    = MontoNeto;
                            }

                            _subTotal += subTotal;
                            _iva16    += iva;
                            _totalFac += totalFac;
                            //_totalFac += MontoNeto;
                            _propina     += propina;
                            _otrosCargos += otrosCargos;
                            _aPagar      += aPagar;
                            _descuentos  += descuentos;

                            var NewRow = dataTableConceptos.NewRow();
                            NewRow[0] = "1";                 // CANTIDAD
                            NewRow[1] = descripcion;         // DESCRIPCION
                            NewRow[2] = subTotal.ToString(); // VAL. UNITARIO
                            NewRow[3] = iva.ToString();      // IVA
                            NewRow[4] = subTotal.ToString(); // IMPORTE
                            NewRow[5] = propina.ToString();  // PROPINA
                            NewRow[6] = aPagar.ToString();   // TOTAL
                            NewRow[7] = "NO APLICA";         // UNIDAD
                            NewRow[8] = descuentos;          // DESCUENTOS
                            dataTableConceptos.Rows.Add(NewRow);
                            facturas.Add(NewRow.ItemArray);
                        }
                        if (Session["CfdiVersion"].ToString().Equals("3.3"))
                        {
                            var claveSucursalTramas = "";
                            var tramasGrouped       = tramas.GroupBy(trama => Session["CfdiVersion"].ToString().Equals("3.3") ? (trama.Resumen33.PropertyName) : (trama.Resumen.NombrePropiedad));
                            if (tramasGrouped.Count() == 1)
                            {
                                claveSucursalTramas = tramasGrouped.FirstOrDefault().Key;
                            }
                            if (!string.IsNullOrEmpty(claveSucursalTramas))
                            {
                                _db.Conectar();
                                _db.CrearComando(@"select codigoPostal from cat_sucursalesemisor where clave = @claveSucursal AND RFC = @RFCEMI");
                                _db.AsignarParametroCadena("@RFCEMI", Session["IDENTEMI"].ToString());
                                _db.AsignarParametroCadena("@claveSucursal", claveSucursalTramas);
                                dr = _db.EjecutarConsulta();
                                if (dr.Read())
                                {
                                    tbLugarExp = dr[0].ToString();
                                }
                                _db.Desconectar();
                            }
                            else
                            {
                                _db.Conectar();
                                _db.CrearComando(@"select codigoPostal FROM Cat_Emisor where RFCEMI=@RFCEMI");
                                _db.AsignarParametroCadena("@RFCEMI", Session["IDENTEMI"].ToString());
                                dr = _db.EjecutarConsulta();
                                while (dr.Read())
                                {
                                    tbLugarExp = dr[0].ToString();
                                }
                                _db.Desconectar();
                            }
                        }
                        else
                        {
                            _db.Conectar();
                            _db.CrearComando(@"select RFCEMI,NOMEMI,dirMatriz,noExterior,noInterior,colonia,referencia,municipio,
                                 estado,pais,codigoPostal,regimenFiscal FROM Cat_Emisor where RFCEMI=@RFCEMI");
                            _db.AsignarParametroCadena("@RFCEMI", Session["IDENTEMI"].ToString());
                            dr = _db.EjecutarConsulta();
                            if (dr.Read())
                            {
                                tbLugarExp = dr[9].ToString() + ", " + dr[8].ToString();
                            }
                            _db.Desconectar();
                        }
                        tbTotalFac = _totalFac.ToString();
                        tbTotal    = _aPagar.ToString();
                        //tbAmbiente.Text = "PRODUCCIÓN";
                        tbCodDoc      = "FACTURA";
                        tbISH         = "0.00";
                        tbFormaPago   = "PAGO EN UNA SOLA EXIBICION";
                        tbSubtotal    = _subTotal.ToString();
                        tbPropina     = _propina.ToString();
                        tbOtrosCargos = _otrosCargos.ToString();
                        tbCantLetra   = numLetra.ConvertirALetras(tbTotal, "MXN");
                        //rowPropina.Visible = !string.IsNullOrEmpty(tbPropina.Trim());
                        //trOtrosCargos.Visible = !string.IsNullOrEmpty(tbOtrosCargos.Trim());
                        tbIva16         = _iva16.ToString();
                        ddlMetodoPago   = "NA";
                        serie           = (ddlSerie.SelectedItem.Text);;
                        tbObservaciones = $"Factura global {FechaFin.SelectedItem.Text} {tbFecha.Text}";
                    }
                    catch { }
                }
                var comprobante = serie + '|' + tbFormaPago + '|' + tbSubtotal + '|' + tbTotalFac + '|' + ddlMetodoPago + '|' + tbLugarExp + '|' + tbNumCtaPago + '|' + tbOtrosCargos + '|' + tbTotal + '|' + tbObservaciones + '|' + tbPropina;;
                var daterecep   = ("PUBLICO GENERAL" + "|" + "XAXX010101000" + "|" + "" + "|" + "-" + "|" + "" + "|" + "" + "|" + "-" + "|" + "" + "|" + "" + "|" + "MEX" + "|" + "00000" + "|" + tbIva16);

                var json = Newtonsoft.Json.JsonConvert.SerializeObject(facturas);
                _idUser = Session["idUser"].ToString();
                var FGWeb = new FacturaGlobalWeb.FacturaGlobalWeb();
                new System.Threading.Thread(() =>
                {
                    FGWeb.FacuraGlobalAsync(Session["IDENTEMI"].ToString(), Session["IDGIRO"].ToString(), json, _idUser, serie, daterecep, comprobante);
                }).Start();
                (Master as SiteMaster).MostrarAlerta(this, "El comprobante se esta generando", 2, null);
            }
            else
            {
                (Master as SiteMaster).MostrarAlerta(this, "Debe sellecionar ambas fechas", 2, null);
                return;
            }
        }