diff --git a/Exferia_Aplicacion/Exferia_Aplicacion/General/Mensajes.cs b/Exferia_Aplicacion/Exferia_Aplicacion/General/Mensajes.cs index 3b4d189..ef62dec 100644 --- a/Exferia_Aplicacion/Exferia_Aplicacion/General/Mensajes.cs +++ b/Exferia_Aplicacion/Exferia_Aplicacion/General/Mensajes.cs @@ -336,7 +336,7 @@ namespace Exferia_Aplicacion.General public static string G_STR_MENSAJES_DOCUMENTO_VOLCADO_REVISARLINEASVOLCADO() { return "Revise las linea del Volcado."; } public static string G_STR_MENSAJES_DOCUMENTO_VOLCADO_VALOR_CERO_NOSEVUELCA() { return "No se vuelca un valor 0."; } public static string G_STR_ESPERANDO_ENVIANDO_MENSAJES() { return "Enviando mensajes , espere por favor ..."; } - + public static string G_STR_ESPERANDO_GENERA_FACTURA_E() { return "Generando Facturas , espere por favor ..."; } public static string G_STR_VALIDACION_HAYDOCUMENTOSCERRADOS_POSTERIORES() { return "Hay documentos cerrados poesteriores a este, por favor reviselos."; } #endregion diff --git a/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Correcciones_Factura_E_Modelo.cs b/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Correcciones_Factura_E_Modelo.cs index 64673ca..06f90bb 100644 --- a/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Correcciones_Factura_E_Modelo.cs +++ b/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Correcciones_Factura_E_Modelo.cs @@ -8,7 +8,7 @@ namespace Exferia_Aplicacion.Modelos_Factura_E { public class INTERNO_Correcciones_Factura_E_Modelo { - public int NumeroFactura { get; set; }//numero factura que rectifica + public long NumeroFactura { get; set; }//numero factura que rectifica public String SerieDelegacion { get; set; }//serie de la factura que rectifica public string RazonCode { get; set; }//(ReasonDescription) public DateTime Inicio { get; set; } diff --git a/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Factura_e_Modelo.cs b/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Factura_e_Modelo.cs index bff4c20..80db065 100644 --- a/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Factura_e_Modelo.cs +++ b/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Factura_e_Modelo.cs @@ -20,7 +20,7 @@ namespace Exferia_Aplicacion.Modelos_Factura_E public string Identificador { get; set; }//BatchIdentifier public string Moneda { get; set;} - public int NumeroFactura { get; set;} + public long NumeroFactura { get; set;} public String SerieDelegacion { get; set; } public bool FacturaOriginal { get; set; } INTERNO_Correcciones_Factura_E_Modelo Correcciones { get; set; } @@ -31,14 +31,14 @@ namespace Exferia_Aplicacion.Modelos_Factura_E INTERNO_Impuestos_Factura_E_modelo Impuesto { get; set; } //resumen----------------------------------------- - public double TotalBruto { get; set; } - public double TotalDescuento { get; set; } - public double TotalBase { get; set; } - public double TotalImpuestos { get; set; } - public float TotalFactura { get; set; } - public float TotalPendiente { get; set; } - public float TotalEjecutable { get; set; } - public float TotalAnticipo { get; set; } + public decimal TotalBruto { get; set; } + public decimal TotalDescuento { get; set; } + public decimal TotalBase { get; set; } + public decimal TotalImpuestos { get; set; } + public decimal TotalFactura { get; set; } + public decimal TotalPendiente { get; set; } + public decimal TotalEjecutable { get; set; } + public decimal TotalAnticipo { get; set; } //elementos factura------------------------------ INTERNO_Item_Factura_E_modelo[] Items { get; set; } @@ -223,7 +223,7 @@ namespace Exferia_Aplicacion.Modelos_Factura_E } #endregion #region Metodos - string importarXML(string path) + public string importarXML(string path) { error = ""; string res = null; @@ -256,7 +256,7 @@ namespace Exferia_Aplicacion.Modelos_Factura_E return res; } - string exportarXML(string path) + public string exportarXML(string path) { error = ""; string res = null; @@ -570,12 +570,18 @@ namespace Exferia_Aplicacion.Modelos_Factura_E nod = doc.CreateElement(string.Empty, FACTURA_E_TeleFax_NAME, string.Empty); nod.InnerText = dat.Fax; nbase.AppendChild(nod); - nod = doc.CreateElement(string.Empty, FACTURA_E_WebAddress_NAME, string.Empty); - nod.InnerText = dat.Web; - nbase.AppendChild(nod); - nod = doc.CreateElement(string.Empty, FACTURA_E_ElectronicMail_NAME, string.Empty); - nod.InnerText = dat.Email; - nbase.AppendChild(nod); + if (dat.Web != null) + { + nod = doc.CreateElement(string.Empty, FACTURA_E_WebAddress_NAME, string.Empty); + nod.InnerText = dat.Web; + nbase.AppendChild(nod); + } + if (dat.Email != null) + { + nod = doc.CreateElement(string.Empty, FACTURA_E_ElectronicMail_NAME, string.Empty); + nod.InnerText = dat.Email; + nbase.AppendChild(nod); + } nodo.AppendChild(nbase); } @@ -921,18 +927,15 @@ namespace Exferia_Aplicacion.Modelos_Factura_E { return t.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture); } - string toStr(int t) + string toStr(long t) { return t.ToString(); } - string toStr(float t) - { - return t.ToString(); - } - string toStr(double t) + string toStr(decimal t) { return t.ToString(); } + #endregion #region LecturaXML private string leeXML(XmlNode factura) @@ -1001,12 +1004,12 @@ namespace Exferia_Aplicacion.Modelos_Factura_E if (str == null) return "Estructura invalida" + error; Identificador = str; - float? dat = getFloat(cab, FACTURA_E_BATCH_NAME + "/" + FACTURA_E_TotalInvoicesAmount_NAME+ "/"+ FACTURA_E_TotalAmount_NAME); + decimal? dat = getdecimal(cab, FACTURA_E_BATCH_NAME + "/" + FACTURA_E_TotalInvoicesAmount_NAME+ "/"+ FACTURA_E_TotalAmount_NAME); if (dat == null) return "Estructura invalida" + error; TotalFactura = dat.Value; - dat = getFloat(cab, FACTURA_E_BATCH_NAME + "/" + FACTURA_E_TotalOutstandingAmount_NAME + "/" + FACTURA_E_TotalAmount_NAME); + dat = getdecimal(cab, FACTURA_E_BATCH_NAME + "/" + FACTURA_E_TotalOutstandingAmount_NAME + "/" + FACTURA_E_TotalAmount_NAME); if (dat == null) return "Estructura invalida" + error; TotalPendiente = dat.Value; @@ -1174,12 +1177,12 @@ namespace Exferia_Aplicacion.Modelos_Factura_E return "Estructura invalida" + error; dat.Cantidad = i.Value; - float? f = getFloat(node, FACTURA_E_UnitPriceWithoutTax_NAME); + decimal? f = getdecimal(node, FACTURA_E_UnitPriceWithoutTax_NAME); if (f == null) return "Estructura invalida" + error; dat.Precio = f.Value; - f = getFloat(node, FACTURA_E_TotalCost_NAME); + f = getdecimal(node, FACTURA_E_TotalCost_NAME); if (f == null) return "Estructura invalida" + error; dat.Total = f.Value; @@ -1189,16 +1192,16 @@ namespace Exferia_Aplicacion.Modelos_Factura_E if (str == null) return "Estructura invalida" + error; dat.DescuentoRazon = str; - f = getFloat(node, FACTURA_E_DiscountsAndRebates_NAME + "/" + FACTURA_E_Discount_NAME + "/" + FACTURA_E_DiscountRate_NAME); + f = getdecimal(node, FACTURA_E_DiscountsAndRebates_NAME + "/" + FACTURA_E_Discount_NAME + "/" + FACTURA_E_DiscountRate_NAME); if (f == null) return "Estructura invalida" + error; dat.DescuentoPorcentaje = f.Value; - f = getFloat(node, FACTURA_E_DiscountsAndRebates_NAME + "/" + FACTURA_E_Discount_NAME + "/" + FACTURA_E_DiscountAmount_NAME); + f = getdecimal(node, FACTURA_E_DiscountsAndRebates_NAME + "/" + FACTURA_E_Discount_NAME + "/" + FACTURA_E_DiscountAmount_NAME); if (f == null) return "Estructura invalida" + error; dat.Descuentoimporte = f.Value; - f = getFloat(node, FACTURA_E_GrossAmount_NAME); + f = getdecimal(node, FACTURA_E_GrossAmount_NAME); if (str == null) return "Estructura invalida" + error; dat.ImporteBruto = f.Value; @@ -1230,42 +1233,42 @@ namespace Exferia_Aplicacion.Modelos_Factura_E } private string getTotal( XmlNode node) { - float? f = getFloat(node, FACTURA_E_TotalGrossAmount_NAME); + decimal? f = getdecimal(node, FACTURA_E_TotalGrossAmount_NAME); if (f == null) return "Estructura invalida" + error; TotalBruto = f.Value; - f = getFloat(node, FACTURA_E_TotalGeneralDiscounts_NAME); + f = getdecimal(node, FACTURA_E_TotalGeneralDiscounts_NAME); if (f == null) return "Estructura invalida" + error; TotalDescuento = f.Value; - f = getFloat(node, FACTURA_E_TotalGrossAmountBeforeTaxes_NAME); + f = getdecimal(node, FACTURA_E_TotalGrossAmountBeforeTaxes_NAME); if (f == null) return "Estructura invalida" + error; TotalBase = f.Value; - f = getFloat(node, FACTURA_E_TotalTaxOutputs_NAME); + f = getdecimal(node, FACTURA_E_TotalTaxOutputs_NAME); if (f == null) return "Estructura invalida" + error; TotalImpuestos = f.Value; - f = getFloat(node, FACTURA_E_InvoiceTotals_NAME); + f = getdecimal(node, FACTURA_E_InvoiceTotals_NAME); if (f == null) return "Estructura invalida" + error; if (TotalFactura == f.Value) return "Valores de total factura no coinciden: " + FACTURA_E_InvoiceTotals_NAME; - f = getFloat(node, FACTURA_E_TotalOutstandingAmount_NAME); + f = getdecimal(node, FACTURA_E_TotalOutstandingAmount_NAME); if (f == null) return "Estructura invalida" + error; TotalPendiente = f.Value; - f = getFloat(node, FACTURA_E_TotalPaymentsOnAccount_NAME); + f = getdecimal(node, FACTURA_E_TotalPaymentsOnAccount_NAME); if (f == null) return "Estructura invalida" + error; TotalAnticipo = f.Value; - f = getFloat(node, FACTURA_E_TotalExecutableAmount_NAME); + f = getdecimal(node, FACTURA_E_TotalExecutableAmount_NAME); if (f == null) return "Estructura invalida" + error; TotalEjecutable = f.Value; @@ -1285,16 +1288,16 @@ namespace Exferia_Aplicacion.Modelos_Factura_E return "Estructura invalida" + error; dat.Tipo = i.Value; - float? f = getFloat(node, FACTURA_E_TaxRate_NAME); + decimal? f = getdecimal(node, FACTURA_E_TaxRate_NAME); if (f == null) return "Estructura invalida" + error; dat.Porcentaje = f.Value; - f = getFloat(node, FACTURA_E_TaxableBase_NAME+"/"+ FACTURA_E_TotalAmount_NAME); + f = getdecimal(node, FACTURA_E_TaxableBase_NAME+"/"+ FACTURA_E_TotalAmount_NAME); if (f == null) return "Estructura invalida" + error; dat.Base = f.Value; - f = getFloat(node, FACTURA_E_TaxAmount_NAME + "/" + FACTURA_E_TotalAmount_NAME); + f = getdecimal(node, FACTURA_E_TaxAmount_NAME + "/" + FACTURA_E_TotalAmount_NAME); if (f == null) return "Estructura invalida" + error; dat.Importe = f.Value; @@ -1527,15 +1530,15 @@ namespace Exferia_Aplicacion.Modelos_Factura_E return res; } - private float? getFloat(XmlNode node, string xpath) + private decimal? getdecimal(XmlNode node, string xpath) { - float? res = null; + decimal? res = null; var str = getText(node, xpath); if(str!=null) { try { - res = float.Parse(str); + res = decimal.Parse(str); } catch { diff --git a/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Impuestos_Factura_E_modelo.cs b/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Impuestos_Factura_E_modelo.cs index 60e4529..faa2f59 100644 --- a/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Impuestos_Factura_E_modelo.cs +++ b/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Impuestos_Factura_E_modelo.cs @@ -8,9 +8,9 @@ namespace Exferia_Aplicacion.Modelos_Factura_E { public class INTERNO_Impuestos_Factura_E_modelo { - public float Porcentaje { get; set; } - public int Tipo { get; set; } - public float Base { get; set; } - public double Importe { get; set; } + public decimal Porcentaje { get; set; } + public long Tipo { get; set; } + public decimal Base { get; set; } + public decimal Importe { get; set; } } } diff --git a/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Item_Factura_E_modelo.cs b/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Item_Factura_E_modelo.cs index 95b6665..8ae2a8d 100644 --- a/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Item_Factura_E_modelo.cs +++ b/Exferia_Aplicacion/Exferia_Aplicacion/Modelos_Factura_E/INTERNO_Item_Factura_E_modelo.cs @@ -12,15 +12,15 @@ namespace Exferia_Aplicacion.Modelos_Factura_E public string CodigoArticulo { get; set; } public DateTime Fecha { get; set; } - public int Cantidad { get; set; } + public long Cantidad { get; set; } public string Descripcion { get; set; } - public double Precio { get; set; } - public double Total { get; set; } + public decimal Precio { get; set; } + public decimal Total { get; set; } public string DescuentoRazon { get; set; } - public double DescuentoPorcentaje { get; set; } - public double Descuentoimporte { get; set; } + public decimal DescuentoPorcentaje { get; set; } + public decimal Descuentoimporte { get; set; } - public double ImporteBruto { get; set; }//despues de descuentos + public decimal ImporteBruto { get; set; }//despues de descuentos public string Adicional { get; set; } public DateTime FechaAlbaran { get; set; } } diff --git a/Exferia_Ventas/Exferia_Ventas/3_Vistas/Controladoras/P_FacturaCabecera_Controladora.cs b/Exferia_Ventas/Exferia_Ventas/3_Vistas/Controladoras/P_FacturaCabecera_Controladora.cs index 68dcefc..ddf262d 100644 --- a/Exferia_Ventas/Exferia_Ventas/3_Vistas/Controladoras/P_FacturaCabecera_Controladora.cs +++ b/Exferia_Ventas/Exferia_Ventas/3_Vistas/Controladoras/P_FacturaCabecera_Controladora.cs @@ -11299,7 +11299,96 @@ namespace Exferia_Ventas._3_Vistas.Controladoras } } #endregion + #region Proceso Factura electronica + public void Proceso_FacturaE() + { + try + { + //Bloquear el formulario para que no se pueda hacer nada hasta que termine + g_frm_P_FacturaCabecera.Enabled = false; + //Mostrar la pantalla de espera + g_frm_PE_Esperando_BarraProgreso = new PE_Esperando_BarraProgreso(Mensajes.G_STR_ESPERANDO_GENERA_FACTURA_E()); + + // Si la tarea asincrona esta en marcha la paro + if (g_obj_TareaAsincrona_ProcesoEnviarMensajes != null) + { + while (g_obj_TareaAsincrona_ProcesoEnviarMensajes.IsBusy) + Application.DoEvents(); + } + else + { + g_obj_TareaAsincrona_ProcesoEnviarMensajes = new BackgroundWorker(); + g_obj_TareaAsincrona_ProcesoEnviarMensajes.DoWork += new DoWorkEventHandler(TareaAsincrona_ProcesoFacturaE_DoWork); + //g_obj_TareaAsincrona_ProcesoEnviarMensajes.ProgressChanged += new ProgressChangedEventHandler(TareaAsincrona_ProcesoEnviarMensajes_ProgressChanged); + g_obj_TareaAsincrona_ProcesoEnviarMensajes.RunWorkerCompleted += new RunWorkerCompletedEventHandler(TareaAsincrona_ProcesoFacturaE_Completed); + g_obj_TareaAsincrona_ProcesoEnviarMensajes.WorkerReportsProgress = false; + } + + //(Tarea Asincrona) ################################################################## + g_obj_TareaAsincrona_ProcesoEnviarMensajes.RunWorkerAsync(); + //################################################################################################# + + g_frm_PE_Esperando_BarraProgreso.Show(); + } + catch (Exception ex) + { + g_frm_P_FacturaCabecera.Enabled = true; + + if (g_frm_PE_Esperando_BarraProgreso != null) + { + g_frm_PE_Esperando_BarraProgreso.Close(); + g_frm_PE_Esperando_BarraProgreso = null; + } + + throw new Control_Errores("", ex, nameof(P_FacturaCabecera_Procesos_Controladora) + "/" + nameof(Proceso_FacturaE), true); + } + } + + private void TareaAsincrona_ProcesoFacturaE_DoWork(object sender, DoWorkEventArgs e) + { + //G_MDL_TIPOEMAIL_FACTURAS + try + { + + INTERNO_ERP_ValoresGenerales_Listado_Modelo _ERP_ValoresGenerales = Obtener_ERP_ValoresGenerales(); + var resul = Funciones_Ventas.GenerarFacturaElectronica( g_mdl_INTERNO_VTA_FacturasCabecera_Modelo, "c:\temp\factura.xml"); + + + + } + catch (Exception ex) + { + Control_Errores.Errores_Log("", ex, nameof(P_FacturaCabecera_Procesos_Controladora) + "/" + nameof(TareaAsincrona_ProcesoFacturaE_DoWork)); + + } + + } + private void TareaAsincrona_ProcesoFacturaE_Completed(object sender, RunWorkerCompletedEventArgs e) + { + try + { + if (g_frm_PE_Esperando_BarraProgreso != null) + { + g_frm_PE_Esperando_BarraProgreso.Close(); + g_frm_PE_Esperando_BarraProgreso = null; + } + + INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo_Resultado = (INTERNO_ValorDevuelto_Modelo)e.Result; + + } + catch (Exception ex) + { + Control_Errores.Errores_Log("", ex, nameof(P_FacturaCabecera_Procesos_Controladora) + "/" + nameof(TareaAsincrona_ProcesoFacturaE_Completed)); + } + finally + { + //Desbloquear el Formulario + g_frm_P_FacturaCabecera.Enabled = true; + } + } + + #endregion #region Enviar Mensajes public void Proceso_EnviarMensajes() { diff --git a/Exferia_Ventas/Exferia_Ventas/3_Vistas/P_FacturaCabecera.cs b/Exferia_Ventas/Exferia_Ventas/3_Vistas/P_FacturaCabecera.cs index c5ad690..79ac652 100644 --- a/Exferia_Ventas/Exferia_Ventas/3_Vistas/P_FacturaCabecera.cs +++ b/Exferia_Ventas/Exferia_Ventas/3_Vistas/P_FacturaCabecera.cs @@ -234,7 +234,7 @@ namespace Exferia_Ventas._3_Vistas ex_btn_P_FacturaCabecera_RecalcularResumen.Exferia_Button_Bloqueable = false; ex_btn_P_FacturaCabecera_EnviarMensajes.Exferia_Button_Bloqueable = false; - + ex_btn_P_FacturaCabecera_FacturaE.Exferia_Button_Bloqueable = false; //Anexo ex_btn_P_FacturaCabecera_Anexo_Actualizar.Exferia_Button_Bloqueable = false; ex_txt_P_FacturaCabecera_Anexo_NumeroPedidoCliente.Exferia_TextBox_Bloqueable = false; @@ -4111,7 +4111,7 @@ namespace Exferia_Ventas._3_Vistas private void ex_btn_P_FacturaCabecera_FacturaE_Click(object sender, EventArgs e) { - + g_obj_Controladora.Proceso_FacturaE(); } } } diff --git a/Exferia_Ventas/Exferia_Ventas/General/Funciones_Ventas.cs b/Exferia_Ventas/Exferia_Ventas/General/Funciones_Ventas.cs index c0eea71..d9bd441 100644 --- a/Exferia_Ventas/Exferia_Ventas/General/Funciones_Ventas.cs +++ b/Exferia_Ventas/Exferia_Ventas/General/Funciones_Ventas.cs @@ -1,6 +1,7 @@ using Exferia_Aplicacion.Calculos; using Exferia_Aplicacion.Calculos.VentasCompras; using Exferia_Aplicacion.General; +using Exferia_Aplicacion.Modelos_Factura_E; using Exferia_Aplicacion.Modelos_Generales; using Exferia_Aplicacion.Modelos_Informes; using Exferia_EntityFramework; @@ -946,6 +947,95 @@ namespace Exferia_Ventas.General return mdl_INTERNO_ValorDevuelto_Modelo; } #endregion + public static INTERNO_ValorDevuelto_Modelo GenerarFacturaElectronica( VTA_FacturasCabecera factura, string path) + { + INTERNO_ValorDevuelto_Modelo res = new INTERNO_ValorDevuelto_Modelo(); + res.TodoCorrecto = true; + try + { + var empresaVendedor=Datos_Generales.GEN_Empresas_Obtener_Modelo_Por_Id(factura.idEmpresa); + var empresaComprador = Datos_Generales.GEN_Empresas_Obtener_Modelo_Por_Id(factura.MAE_Clientes.idEmpresa); + INTERNO_Factura_e_Modelo factura_e = new INTERNO_Factura_e_Modelo(); + + var idEmpresa = new List(); + idEmpresa.Add(factura.idEmpresa); + var idEmpresacomprador = new List(); + idEmpresa.Add(empresaComprador.id); + //conseguir direcciones-------------- + var direcliente = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsEmpresaTipoDireccion(idEmpresacomprador, "2", true, true, true, true, true).FirstOrDefault();// factura.MAE_Clientes.GEN_Direcciones.FirstOrDefault(e => int.Parse(e.tipoDireccion) == 2); + var direEmpresa = Datos_Generales.GEN_Direcciones_Obtener_Modelo_Listado_Por_IdsEmpresaTipoDireccion(idEmpresa, "2", true, true, true, true, true).FirstOrDefault(); + //delegacion + var delegacion = Datos_Generales.GEN_Delegaciones_Obtener_Modelo_Por_Id(factura.idDelegacion); + + var albaranes = factura.VTA_AlbaranesFacturasLineas;//lineas factura + + //rellenar datos + factura_e.Identificador = factura.MAE_Clientes.cif + factura.numeroFactura + factura.GEN_Delegaciones.codigo; + factura_e.TotalFactura = factura.total_Final; + factura_e.TotalPendiente = factura.total_Final; + + //vendedor-------------------------------------------------------------------------------------------------- + factura_e.Vendedor = new INTERNO_Vendedor_Factura_E_modelo(); + if ('0' >= empresaVendedor.nif[0] && '9' <= empresaVendedor.nif[0]) + factura_e.Vendedor.Tipo = "F"; + else + factura_e.Vendedor.Tipo = "J"; + + factura_e.Vendedor.IdImpuestos = (direcliente.idPais == direEmpresa.idPais ? "" : direEmpresa.GEN_Paises.codigo_ISO2D) + empresaVendedor.nif; + factura_e.Vendedor.RazonSocial = empresaVendedor.razonSocial; + factura_e.Vendedor.NombreComercial = empresaVendedor.descripcion; + factura_e.Vendedor.Direccion = direEmpresa.nombreVia+", "+direcliente.numeroCasa; + factura_e.Vendedor.CP = direEmpresa.codigoPostal; + factura_e.Vendedor.Poblacion = direEmpresa.GEN_Poblaciones.descripcion; + factura_e.Vendedor.Provincia = direEmpresa.GEN_Provincias.descripcion; + factura_e.Vendedor.Pais = direEmpresa.GEN_Paises.descripcion; + factura_e.Vendedor.Tlf = empresaVendedor.telefonoOficina; + factura_e.Vendedor.Fax = empresaVendedor.telefonoFax; + factura_e.Vendedor.Web = null; + factura_e.Vendedor.Email = empresaVendedor.email; + + //cliente-------------------------------------------------------------------------------------------------- + factura_e.Comprador = new INTERNO_Comprador_Factura_E_modelo(); + if ('0' >= empresaComprador.nif[0] && '9' <= empresaComprador.nif[0]) + factura_e.Comprador.Tipo = "F"; + else + factura_e.Comprador.Tipo = "J"; + factura_e.Comprador.IdImpuestos = (direcliente.idPais == direEmpresa.idPais ? "" : direcliente.GEN_Paises.codigo_ISO2D) + empresaComprador.nif; + factura_e.Comprador.RazonSocial = empresaComprador.razonSocial; + factura_e.Comprador.NombreComercial = empresaComprador.descripcion; + factura_e.Comprador.Direccion = direcliente.nombreVia + ", " + direcliente.numeroCasa; + factura_e.Comprador.CP = direcliente.codigoPostal; + factura_e.Comprador.Poblacion = direcliente.GEN_Poblaciones.descripcion; + factura_e.Comprador.Provincia = direcliente.GEN_Provincias.descripcion; + factura_e.Comprador.Pais = direcliente.GEN_Paises.descripcion; + factura_e.Comprador = null; + + //datos factura---------------------- + factura_e.NumeroFactura = factura.numeroFactura; + factura_e.SerieDelegacion = delegacion.codigo; + factura_e.FacturaOriginal = true; + //correcciones-------------------- + + factura_e.Fecha = factura.fecha; + + //exporta--------------------------------------------------------------------------------------------------- + string resul =factura_e.exportarXML(path); + if(resul!=null) + { + res.TodoCorrecto = false; + Control_Errores.Errores_Log(resul, nameof(Funciones_Ventas) + "/" + nameof(GenerarFacturaElectronica)); + } + + } + catch (Exception ex) + { + res.TodoCorrecto = false; + Control_Errores.Errores_Log("", ex, nameof(Funciones_Ventas) + "/" + nameof(GenerarFacturaElectronica)); + } + + + return res; + } } }