public static List <VENTA> obtenerCotizaciones(Int32 cliente) { List <VENTA> listVENTA = new List <VENTA>(); String Qry = @"SELECT id_venta, cve_Cte, fecha, subtotal, iva, descuento, total FROM venta WHERE cve_Cte=@ID and tipo='PRESUPUESTO'"; BaseDatos d = new BaseDatos(); d.Conectar(); d.CrearComando(Qry); d.AsignarParametroEntero("@ID", cliente); DbDataReader datosItems = d.EjecutarConsulta(); while (datosItems.Read()) { VENTA objVENTA = new VENTA(); objVENTA.id_venta = Convert.ToInt32(datosItems["id_venta"].ToString()); objVENTA.cve_cte = Convert.ToInt32(datosItems["cve_cte"].ToString()); objVENTA.fecha = Convert.ToDateTime(datosItems["fecha"].ToString()); objVENTA.subtotal = Convert.ToDouble(datosItems["subtotal"].ToString()); objVENTA.iva = Convert.ToDouble(datosItems["iva"].ToString()); objVENTA.descuento = Convert.ToDouble(datosItems["descuento"].ToString()); objVENTA.total = Convert.ToDouble(datosItems["total"].ToString()); listVENTA.Add(objVENTA); } datosItems.Close(); d.Desconectar(); return(listVENTA); }
public static List <VENTA> seleccionarVENTA(DateTime inicio, DateTime fin, String rfc) { String Qry = ""; List <VENTA> listVENTA = new List <VENTA>(); BaseDatos d = new BaseDatos(); d.Conectar(); if (rfc == "") { Qry = @" SELECT id_venta,serie,folio, cve_Cte, fecha, subtotal, iva, descuento, total,tipo,receptor,uuid,folioCancelacion FROM venta WHERE tipo<>'PRESUPUESTO' and uuid is not null AND `fecha` BETWEEN @desde and @hasta union SELECT id_venta, serie,folio, cve_Cte, fecha, subtotal, iva, descuento, total,tipo,receptor,uuid,folioCancelacion FROM venta WHERE uuid is null AND `fecha` ";// d.CrearComando(Qry); } else { Qry = @"SELECT id_venta,serie,folio, cve_Cte, fecha, subtotal, iva, descuento, total,tipo,receptor,uuid,folioCancelacion FROM venta WHERE tipo<>'PRESUPUESTO' and uuid is not null AND `fecha` BETWEEN @desde and @hasta and receptor like @rfc union SELECT id_venta,serie,folio, cve_Cte, fecha, subtotal, iva, descuento, total,tipo,receptor,uuid,folioCancelacion FROM venta WHERE uuid is null AND `fecha` "; d.CrearComando(Qry); d.AsignarParametroCadena("@rfc", "%" + rfc + "%"); } d.AsignarParametroCadena("@desde", inicio.ToString("yyyy-MM-dd")); d.AsignarParametroCadena("@hasta", fin.ToString("yyyy-MM-dd")); DbDataReader datosItems = d.EjecutarConsulta(); while (datosItems.Read()) { VENTA objVENTA = new VENTA(); objVENTA.receptor = datosItems["receptor"].ToString(); objVENTA.id_venta = Convert.ToInt32(datosItems["id_venta"].ToString()); objVENTA.serie = datosItems["serie"].ToString();; objVENTA.folio = datosItems["folio"].ToString(); objVENTA.cve_cte = Convert.ToInt32(datosItems["cve_cte"].ToString()); objVENTA.fecha = Convert.ToDateTime(datosItems["fecha"].ToString()); objVENTA.subtotal = Convert.ToDouble(datosItems["subtotal"].ToString()); objVENTA.iva = Convert.ToDouble(datosItems["iva"].ToString()); objVENTA.descuento = Convert.ToDouble(datosItems["descuento"].ToString()); objVENTA.total = Convert.ToDouble(datosItems["total"].ToString()); objVENTA.tipo = datosItems["tipo"].ToString(); objVENTA.uuid = datosItems["uuid"].ToString(); objVENTA.cancelacion = datosItems["folioCancelacion"].ToString(); listVENTA.Add(objVENTA); } datosItems.Close(); d.Desconectar(); return(listVENTA); }
public static VENTA seleccionarVENTA(string ID) { VENTA objVENTA = new VENTA(); String Qry = @"SELECT * FROM venta,clientes WHERE venta.receptor=clientes.rfc and id_venta=@ID"; BaseDatos d = new BaseDatos(); d.Conectar(); d.CrearComando(Qry); d.AsignarParametroCadena("@ID", ID); DbDataReader datosItems = d.EjecutarConsulta(); while (datosItems.Read()) { objVENTA.receptor = datosItems["receptor"].ToString(); objVENTA.id_venta = Convert.ToInt32(datosItems["id_venta"].ToString()); objVENTA.cve_cte = Convert.ToInt32(datosItems["cve_cte"].ToString()); objVENTA.fecha = Convert.ToDateTime(datosItems["fecha"].ToString()); objVENTA.subtotal = Convert.ToDouble(datosItems["subtotal"].ToString()); objVENTA.iva = Convert.ToDouble(datosItems["iva"].ToString()); objVENTA.descuento = Convert.ToDouble(datosItems["descuento"].ToString()); objVENTA.total = Convert.ToDouble(datosItems["total"].ToString()); objVENTA.tipo = datosItems["tipo"].ToString(); objVENTA.serie = datosItems["serie"].ToString(); objVENTA.folio = datosItems["folio"].ToString(); objVENTA.nombreReceptor = datosItems["tipo"].ToString(); objVENTA.usocfdi = datosItems["usoCFDI"].ToString().Split('-')[0]; objVENTA.metodo_pago = datosItems["metodo_pago"].ToString(); objVENTA.forma_pago = datosItems["forma_pago"].ToString(); objVENTA.nombreReceptor = datosItems["nombre"].ToString(); objVENTA.xml = datosItems["xml"].ToString(); objVENTA.uuid = datosItems["UUID"].ToString(); } datosItems.Close(); d.Desconectar(); return(objVENTA); }
public string Nueva(string IDVENTA) { VENTA venta = metodos_VENTA.seleccionarVENTA(IDVENTA); List <DETALLEVENTA> detalle = metodos_DETALLEVENTA.seleccionarDETALLEVENTA(Convert.ToInt32(IDVENTA)); Comprobante objetoComprobante = new Comprobante(); // Nodo comprobante objetoComprobante.Version = "3.3"; objetoComprobante.Serie = venta.serie; objetoComprobante.Folio = venta.folio; objetoComprobante.Fecha = Convert.ToDateTime(DateTime.Now.ToString("s")); objetoComprobante.TipoDeComprobante = c_TipoDeComprobante.I; objetoComprobante.MetodoPagoSpecified = true; objetoComprobante.MetodoPago = venta.metodo_pago.Split('-')[0]; objetoComprobante.FormaPagoSpecified = true; objetoComprobante.FormaPago = venta.forma_pago.Split('-')[0]; objetoComprobante.LugarExpedicion = ConfigurationManager.AppSettings["LugarExpedicion"]; X509Certificate2 certEmisor = new X509Certificate2(); byte[] byteCertData = ReadFile(ConfigurationManager.AppSettings["rutaCer"]); certEmisor.Import(byteCertData); //objetoComprobante.Sello = generaSello(); objetoComprobante.NoCertificado = ConfigurationManager.AppSettings["noCertificado"]; objetoComprobante.Certificado = Convert.ToBase64String(certEmisor.GetRawCertData()); objetoComprobante.Emisor = new ComprobanteEmisor(); objetoComprobante.Emisor.Rfc = ConfigurationManager.AppSettings["rfcEmisor"]; objetoComprobante.Emisor.Nombre = ConfigurationManager.AppSettings["Empresa"]; objetoComprobante.Emisor.RegimenFiscal = c_RegimenFiscal.Item612;// ConfigurationManager.AppSettings["RegimenFiscal"]; objetoComprobante.Receptor = new ComprobanteReceptor(); objetoComprobante.Receptor.Rfc = venta.receptor; objetoComprobante.Receptor.Nombre = venta.nombreReceptor; objetoComprobante.Receptor.UsoCFDI = "G03";//venta.usocfdi.Split('-')[0]; objetoComprobante.Conceptos = new ComprobanteConcepto[detalle.Count]; int indice = 0; decimal impuesto = 0; foreach (DETALLEVENTA v in detalle) { objetoComprobante.Conceptos[indice] = new ComprobanteConcepto(); objetoComprobante.Conceptos[indice].Impuestos = new ComprobanteConceptoImpuestos(); objetoComprobante.Conceptos[indice].Impuestos.Traslados = new ComprobanteConceptoImpuestosTraslado[1]; objetoComprobante.Conceptos[indice].Impuestos.Traslados[0] = new ComprobanteConceptoImpuestosTraslado(); objetoComprobante.Conceptos[indice].Impuestos.Traslados[0].Base = Convert.ToDecimal(String.Format("{0:###0.00;(###0.00);0.00}", v.precio * v.cantidad)); //TODO calcular interes + carga - descuento objetoComprobante.Conceptos[indice].Impuestos.Traslados[0].Importe = Convert.ToDecimal(String.Format("{0:###0.00;(###0.00);0.00}", v.precio * v.cantidad * Convert.ToDecimal(0.16))); //TODO IVA objetoComprobante.Conceptos[indice].Impuestos.Traslados[0].TipoFactor = c_TipoFactor.Tasa; objetoComprobante.Conceptos[indice].Impuestos.Traslados[0].Impuesto = c_Impuesto.Item002; //IVA objetoComprobante.Conceptos[indice].Impuestos.Traslados[0].TasaOCuota = 0.160000m; objetoComprobante.Conceptos[indice].Impuestos.Traslados[0].ImporteSpecified = true; objetoComprobante.Conceptos[indice].Impuestos.Traslados[0].TasaOCuotaSpecified = true; objetoComprobante.Conceptos[indice].ClaveProdServ = v.claveservicio; objetoComprobante.Conceptos[indice].ClaveUnidad = v.claveunidad; objetoComprobante.Conceptos[indice].Cantidad = Convert.ToDecimal(v.cantidad); objetoComprobante.Conceptos[indice].Unidad = metodos_C_CVEUNIDAD.seleccionarC_CVEUNIDAD(v.claveunidad).nombre; objetoComprobante.Conceptos[indice].Descripcion = v.descripcion; objetoComprobante.Conceptos[indice].ValorUnitario = Convert.ToDecimal(String.Format("{0:###0.00;(###0.00);0.00}", v.precio)); objetoComprobante.Conceptos[indice].Importe = Convert.ToDecimal(String.Format("{0:###0.00;(###0.00);0.00}", v.precio * v.cantidad)); impuesto += Convert.ToDecimal(String.Format("{0:###0.00;(###0.00);0.00}", objetoComprobante.Conceptos[indice].Importe)); indice++; } //Nodo Impuestos objetoComprobante.Impuestos = new ComprobanteImpuestos(); objetoComprobante.Impuestos.TotalImpuestosTrasladadosSpecified = true; // // Nodo Impuestos Trasladados objetoComprobante.Impuestos.Traslados = new ComprobanteImpuestosTraslado[1]; objetoComprobante.Impuestos.Traslados[0] = new ComprobanteImpuestosTraslado(); objetoComprobante.Impuestos.Traslados[0].Importe = Convert.ToDecimal(String.Format("{0:###0.00;(###0.00);0.00}", venta.iva)); objetoComprobante.Impuestos.Traslados[0].TasaOCuota = 0.160000m; objetoComprobante.Impuestos.Traslados[0].Impuesto = c_Impuesto.Item002; objetoComprobante.Impuestos.TotalImpuestosTrasladados = Convert.ToDecimal(String.Format("{0:###0.00;(###0.00);0.00}", venta.iva));; objetoComprobante.SubTotal = Convert.ToDecimal(String.Format("{0:###0.00;(###0.00);0.00}", venta.subtotal)); objetoComprobante.Moneda = c_Moneda.MXN; objetoComprobante.Total = Convert.ToDecimal(String.Format("{0:###0.00;(###0.00);0.00}", venta.total)); // Creas los namespaces requeridos XmlSerializerNamespaces xmlNameSpace = new XmlSerializerNamespaces(); xmlNameSpace.Add("cfdi", "http://www.sat.gob.mx/cfd/3"); //xmlNameSpace.Add("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital"); xmlNameSpace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance"); //xmlNameSpace.Add("xsi:schemaLocation", "http://www.sat.gob.mx/cfd/3http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd http://www.sat.gob.mx/TimbreFiscalDigitalhttp://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd"); xmlNameSpace.Add("schemaLocation", "http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd"); // Creas una instancia de XMLSerializer con el tipo de dato Comprobante XmlSerializer xmlArchivo = new XmlSerializer(typeof(Comprobante)); XmlTextWriter xmlTextWriter = new XmlTextWriter(@"C:\CFDI\SinTimbrar.xml", Encoding.UTF8); xmlTextWriter.Formatting = Formatting.Indented; xmlArchivo.Serialize(xmlTextWriter, objetoComprobante, xmlNameSpace); xmlTextWriter.Close(); XmlDocument documentoXml = new XmlDocument(); documentoXml.Load(@"C:\CFDI\SinTimbrar.xml"); desSerializarXML(); return(Timbrar(IDVENTA, venta.receptor, venta.serie, venta.folio, venta.total)); }