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); }
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); }
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; } }