public FacturaDB_ToMensajeReceptor Convertir(Factura_Resolucion facturaResolucion) { MensajeReceptor documento = new MensajeReceptor() { DetalleMensaje = facturaResolucion.DetalleResolucion, FechaEmisionDoc = facturaResolucion.Fecha_Documento, Mensaje = EnumUtils.SetTypeString <MensajeReceptorMensaje>(facturaResolucion.Resolucion.ToString()), TotalFactura = facturaResolucion.TotalComprobante, Clave = facturaResolucion.Clave, NumeroCedulaEmisor = facturaResolucion.Emisor_Identificacion_Numero.PadLeft(12).Replace(" ", "0"), NumeroCedulaReceptor = Contribuyente.Identificacion_Numero.PadLeft(12).Replace(" ", "0"), NumeroConsecutivoReceptor = facturaResolucion.NumeroConsecutivo }; if (facturaResolucion.TotalImpuesto.HasValue) { documento.MontoTotalImpuestoSpecified = true; documento.MontoTotalImpuesto = facturaResolucion.TotalImpuesto.Value; } requestData = new FacturaRequest() { clave = facturaResolucion.Clave, emisor = new FacturaClient() { numeroIdentificacion = Contribuyente.Identificacion_Numero, tipoIdentificacion = EnumUtils.SetTypeString <FacturaElectronica_V_4_3.IdentificacionTypeTipo>(Contribuyente.Identificacion_Tipo).ToString() }, fecha = facturaResolucion.Fecha_Documento.ToString("yyyy-MM-ddTHH:mm:ss"), }; DocumentoElectronico = documento; return(this); }
private void LoadResumenFactura(ref Factura_Resolucion fac, FacturaElectronica factura) { FacturaElectronicaResumenFactura Resumen = factura.ResumenFactura; if (Resumen != null) { if (Resumen.CodigoTipoMoneda != null) { fac.Codigo_Moneda = Resumen.CodigoTipoMoneda.CodigoMoneda.ToString(); fac.TipoCambio = Resumen.CodigoTipoMoneda.TipoCambio; } if (Resumen.TotalDescuentosSpecified) { fac.TotalDescuentos = Resumen.TotalDescuentos; } if (Resumen.TotalExentoSpecified) { fac.TotalExento = Resumen.TotalExento; } if (Resumen.TotalGravadoSpecified) { fac.TotalGravado = Resumen.TotalGravado; } if (Resumen.TotalImpuestoSpecified) { fac.TotalImpuesto = Resumen.TotalImpuesto; } if (Resumen.TotalMercanciasExentasSpecified) { fac.TotalMercanciasExentas = Resumen.TotalMercanciasExentas; } if (Resumen.TotalMercanciasGravadasSpecified) { fac.TotalMercanciasGravadas = Resumen.TotalMercanciasGravadas; } if (Resumen.TotalServExentosSpecified) { fac.TotalServExentos = Resumen.TotalServExentos; } fac.TotalVenta = Resumen.TotalVenta; fac.TotalVentaNeta = Resumen.TotalVentaNeta; fac.TotalComprobante = Resumen.TotalComprobante; } }
private void LoadDatosReceptor(ref Factura_Resolucion fac, FacturaElectronica factura) { if (factura.Receptor != null) { fac.Receptor__Nombre = factura.Receptor.Nombre; if (factura.Receptor.Identificacion != null) { fac.Receptor_Identificacion = factura.Receptor.Identificacion.Numero; } else { fac.Receptor_Identificacion = factura.Receptor.IdentificacionExtranjero; } } }
private void LoadBody(ref Factura_Resolucion fac, FacturaElectronica factura) { FacturaElectronicaLineaDetalle[] DetallesServicios = factura.DetalleServicio; if (DetallesServicios != null && DetallesServicios.Length > 0) { List <Factura_Resolucion_Detalle> Detalles = new List <Factura_Resolucion_Detalle>(); foreach (FacturaElectronicaLineaDetalle nodo in DetallesServicios) { Factura_Resolucion_Detalle result = CargarLinea(nodo); if (result != null) { Detalles.Add(result); } } fac.Factura_Resolucion_Detalle = Detalles; } }
private void LoadEmisor(ref Factura_Resolucion fac, FacturaElectronica factura) { if (factura.Emisor != null) { EmisorType Emi = factura.Emisor; fac.Emisor_CorreoElectronico = Emi.CorreoElectronico; if (Emi.Identificacion != null) { fac.Emisor_Identificacion_Tipo = Emi.Identificacion.Tipo.GetXmlValue(); fac.Emisor_Identificacion_Numero = Emi.Identificacion.Numero; } fac.Emisor_Nombre = Emi.Nombre; fac.Emisor_NombreComercial = Emi.NombreComercial; if (Emi.Telefono != null) { fac.Emisor_Telefono_Numero = Emi.Telefono.NumTelefono; } } }
public Factura_Resolucion Convertir(FacturaElectronica factura, string XMl = null) { Factura_Resolucion fac = new Factura_Resolucion() { Clave = factura.Clave, CondicionVenta = factura.CondicionVenta.GetXmlValue(), Email_Enviado = false, TipoDocumentoOrigen = (int)Tipo_documento.Factura_electrónica, Estado = (int)EstadoComprobante.Enviado, Fecha_Documento_Origen = factura.FechaEmision }; if (factura.MedioPago != null && factura.MedioPago.Length > 0) { fac.MedioPago = factura.MedioPago[0].GetXmlValue(); } LoadEmisor(ref fac, factura); LoadResumenFactura(ref fac, factura); LoadDatosReceptor(ref fac, factura); LoadBody(ref fac, factura); return(fac); }
private void BuscarXML(object sender, RoutedEventArgs e) { string FileUrl = null; try { OpenFileDialog openFileDialog = new OpenFileDialog { Multiselect = false, DefaultExt = "*.xml", Filter = "Documentos Electronicos (*.xml) | *.xml;" }; if (openFileDialog.ShowDialog() == true) { FileUrl = openFileDialog.FileName; } else { return; } } catch (Exception ex) { FileUrl = null; this.LogError(ex); } if (string.IsNullOrEmpty(FileUrl)) { MessageBox.Show("Error al obtener la direccion del archivo de XML", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } try { Tipo_documento typeDocument = Tipo_documento.Factura_electrónica; XmlDocument xml = new XmlDocument(); xml.Load(FileUrl); string NS_String = xml.DocumentElement.NamespaceURI; if (NS_String != "https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica" && NS_String != "https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/tiqueteElectronico") { MessageBox.Show("El tipo de xml seleccionado es incorrecto", "Validacion", MessageBoxButton.OK, MessageBoxImage.Stop); return; } if (NS_String == "https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/tiqueteElectronico") { typeDocument = Tipo_documento.Tiquete_Electrónico; } if (typeDocument == Tipo_documento.Factura_electrónica) { XmlSerializer serializer = new XmlSerializer(typeof(FacturaElectronica)); FacturaElectronica Factura = null; using (XmlReader reader = new XmlNodeReader(xml)) { Factura = (FacturaElectronica)serializer.Deserialize(reader); } FacturaResolucion = new ConvertirFacturaXml_FacturaDB().Convertir(Factura, xml.InnerXml); } } catch (Exception ex) { this.LogError(ex); MessageBox.Show("Error al abrir el archivo de XML", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } bool Encontrada = false; using (db_FacturaDigital db = new db_FacturaDigital()) { Encontrada = db.Factura_Resolucion.Any(q => q.Clave == FacturaResolucion.Clave); } if (Encontrada) { MessageBox.Show("La factura seleccionada ya se encuentra en el sistema", "Validacion", MessageBoxButton.OK, MessageBoxImage.Stop); return; } DataModel.EF.Contribuyente con = Recursos.RecursosSistema.Contribuyente; if (con.Identificacion_Numero != FacturaResolucion.Receptor_Identificacion) { MessageBoxResult result = MessageBox.Show("El numero de identicacion de la factura no concuerda con el numero de identificacion del actual contribuyente Identificacion receptor factura[" + FacturaResolucion.Receptor_Identificacion + "] Identificacion del contribuyente actual [" + con.Identificacion_Numero + "] La factura esta a nombre de [" + FacturaResolucion.Receptor__Nombre + "]. Sabiendo lo anterior desea continuar ?", "Validacion", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result != MessageBoxResult.Yes) { return; } } RenderFactura(); }