/// <summary> /// Carga las facturas encontradas a partir del Id de un cliente. /// </summary> /// <param name="cargarPorIdCliente">Indica si hay que buscar por el Id del cliente.</param> private void CargarFacturas() { List <FacturaRecibida> facturas = null; if (IdProveedor >= 1) { facturas = FacturaRecibida.ObtenerFacturasPorIdProveedor(IdProveedor); } else { facturas = FacturaRecibida.ObtenerFacturasPorIdGaraje(IdGaraje); } if (DgvFactsRecibidas.Rows.Count >= 1) // Si hubiesen filas en el DataGridView, las eliminamos. { DgvFactsRecibidas.Rows.Clear(); } foreach (FacturaRecibida factura in facturas) { int posicion = DgvFactsRecibidas.Rows.Add(); DgvFactsRecibidas.Rows[posicion].Cells["numFactura"].Value = factura.Id; DgvFactsRecibidas.Rows[posicion].Cells["fecha"].Value = factura.Fecha.ToShortDateString(); DgvFactsRecibidas.Rows[posicion].Cells["garaje"].Value = factura.Garaje.Nombre; DgvFactsRecibidas.Rows[posicion].Cells["proveedor"].Value = factura.Proveedor.Empresa; DgvFactsRecibidas.Rows[posicion].Cells["baseImponible"].Value = factura.BaseImponible; DgvFactsRecibidas.Rows[posicion].Cells["iva"].Value = factura.Iva; DgvFactsRecibidas.Rows[posicion].Cells["totalFactura"].Value = factura.Total; } }
public void Negocios(FacturaRecibida facturaRecibida, int sucursalId) { var sucursal = _db.Sucursales.Find(sucursalId); if (facturaRecibida.Receptor == null) { throw new Exception(String.Format("El receptor de la factura {0} no coincide con el RFC {1}", facturaRecibida.NombreArchivoXml, sucursal.Rfc)); } //Factura Repetida var facturaValidadaPreviamente = _db.FacturasRecibidas.FirstOrDefault(f => f.Uuid == facturaRecibida.Uuid); if (facturaValidadaPreviamente != null) { throw new Exception(String.Format("La factura {0} ya fue validada", facturaValidadaPreviamente.NombreArchivoXml)); } //La factura es de la empresa if (facturaRecibida.Receptor.Rfc != sucursal.Rfc) { throw new Exception(String.Format("El rfc {0} no corresponde con la sucursal actual ({1})", facturaRecibida.Receptor.Rfc, sucursal.Rfc)); } //El proveedor Existe facturaRecibida.Emisor = ChecarProveedor(facturaRecibida, sucursalId); }
private void BtnGuardar_Click(object sender, EventArgs e) { if (ComprobarDatosIntroducidos()) { FacturaRecibida factura = new FacturaRecibida(); foreach (DataGridViewRow fila in DgvFactsRecibidas.SelectedRows) { factura.Id = Convert.ToInt32(fila.Cells[0].Value); } factura.Fecha = DtFecha.Value; factura.Proveedor = new Proveedor(); factura.Proveedor.Id = ((Proveedor)CbProveedores.SelectedItem).Id; factura.BaseImponible = decimal.Parse(TxtBaseImponible.Text); factura.Iva = decimal.Parse(TxtIva.Text); factura.Total = decimal.Parse(TxtTotalFactura.Text); if (factura.Modificar()) { CargarFacturas(); CompletarDetallesFactura(0); MessageBox.Show("Factura Actualizada", "Factura Actualizada", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("Ha habido un problema al actualizar la factura", "Factura no Actualizada", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Los datos introducidos no son correctos", "Datos Incorrectos", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public ActionResult Validaciones(FacturasModel facturasModel) { ModelState.Remove("Archivos"); var sucursalId = ObtenerSucursal(); var sucursal = _db.Sucursales.Find(sucursalId); facturasModel = new FacturasModel { FacturasRecibidas = _db.FacturasRecibidas.Where(fp => fp.ReceptorId == sucursalId).OrderBy(fp => fp.Emisor.RazonSocial).ThenByDescending(vf => vf.Fecha).ToList() }; if (ModelState.IsValid) { if (Request.Files.Count == 0) { ModelState.AddModelError("", "Sin archivos para procesar"); return(View(facturasModel)); } try { var facturaRecibida = new FacturaRecibida(); PopularArchivos(ref facturaRecibida); var pathFactura = Path.Combine(Server.MapPath("~/Archivos/Validaciones/"), facturaRecibida.NombreArchivoXml); _operacionesStreams.ByteArrayArchivo(facturaRecibida.ArchivoFisicoXml, pathFactura); _decodificaFacturas.DecodificarFactura(ref facturaRecibida, pathFactura); var rfcReceptor = facturaRecibida.Receptor.Rfc; facturaRecibida.Receptor = _db.Sucursales.FirstOrDefault(s => s.Rfc == rfcReceptor); //Validaciones _validacionesFacturas.Negocios(facturaRecibida, ObtenerSucursal()); facturaRecibida.Validacion = _validacionesFacturas.Sat(pathFactura, facturaRecibida.Receptor.Rfc); //Guardar factura try { _guarda.GuardarFacturaRecibida(facturaRecibida, ObtenerSucursal(), API.Enums.TiposGastos.Proveedores); _db.SaveChanges(); } catch (Exception ex) { ModelState.AddModelError("", String.Format("No se pudo guardar la factura {0}", ex.Message)); return(View(facturasModel)); } } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return(View(facturasModel)); } return(RedirectToAction("Validaciones")); } return(View(facturasModel)); }
public ActionResult CargaGeneral(CargasCfdisModel cargasCfdisModel) { PopulaForma(cargasCfdisModel.DepartamentoId, cargasCfdisModel.CentroCostoId); ModelState.Remove("Archivos"); var sucursalId = ObtenerSucursal(); var sucursal = _db.Sucursales.Find(sucursalId); if (ModelState.IsValid) { if (Request.Files.Count == 0) { ModelState.AddModelError("", "Sin archivos para procesar"); return(View()); } try { var facturaRecibida = new FacturaRecibida(); PopularArchivos(ref facturaRecibida); var pathFactura = Path.Combine(Server.MapPath("~/Archivos/Validaciones/"), facturaRecibida.NombreArchivoXml); _operacionesStreams.ByteArrayArchivo(facturaRecibida.ArchivoFisicoXml, pathFactura); _decodificaFacturas.DecodificarFactura(ref facturaRecibida, pathFactura); var rfcReceptor = facturaRecibida.Receptor.Rfc; facturaRecibida.Receptor = _db.Sucursales.FirstOrDefault(s => s.Rfc == rfcReceptor); facturaRecibida.DepartamentoId = cargasCfdisModel.DepartamentoId; facturaRecibida.CentroCostoId = cargasCfdisModel.CentroCostoId; facturaRecibida.UsuarioId = ObtenerUsuario(); //Validaciones _validacionesFacturas.Negocios(facturaRecibida, ObtenerSucursal()); facturaRecibida.Validacion = _validacionesFacturas.Sat(pathFactura, facturaRecibida.Receptor.Rfc); //Guardar factura try { _guardaFacturas.GuardarFacturaRecibida(facturaRecibida, ObtenerSucursal(), TiposGastos.Personal); _db.SaveChanges(); } catch (Exception ex) { ModelState.AddModelError("", String.Format("No se pudo guardar la factura {0}", ex.Message)); return(View()); } } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return(View()); } } return(View()); }
private void CbEmpresas_SelectionChangeCommitted(object sender, EventArgs e) { FrmBuscarFactsRecibida frmBuscarFactsRecibida = new FrmBuscarFactsRecibida(((Proveedor)CbEmpBuscar.SelectedItem).Id, 0); frmBuscarFactsRecibida.ShowDialog(); int posicion = BindingSource.Position; BindingSource.DataSource = FacturaRecibida.ObtenerFacturas(); BindingSource.Position = posicion; }
/// <summary> /// Rellena los datos de la factura a su campo correspondiente. /// </summary> /// <param name="factura">Los datos de la factura.</param> private void RellenarDatosFactura(FacturaRecibida factura) { TxtNumFactura.Text = factura.Id.ToString(); DtFecha.Value = factura.Fecha; CbGarajes.Text = factura.Garaje.Nombre; CbEmpresas.Text = factura.Proveedor.Empresa; TxtBaseImponible.Text = factura.BaseImponible.ToString(); TxtIva.Text = factura.Iva.ToString(); TxtTotalFactura.Text = factura.Total.ToString(); }
private void CbGjBuscar_SelectionChangeCommitted(object sender, EventArgs e) { FrmBuscarFactsRecibida frmBuscarFactsRecibida = new FrmBuscarFactsRecibida(0, ((Garaje)CbGjBuscar.SelectedItem).Id); frmBuscarFactsRecibida.ShowDialog(); int posicion = BindingSource.Position; BindingSource.DataSource = FacturaRecibida.ObtenerFacturas(); BindingSource.Position = posicion; }
public bool GuardarFacturaRecibida(FacturaRecibida facturaRecibida, int sucursalId, TiposGastos tipoGasto) { var receptor = _db.Sucursales.Find(sucursalId); var emisor = _db.Proveedores.FirstOrDefault(s => s.Rfc == facturaRecibida.Emisor.Rfc && s.GrupoId == receptor.GrupoId); if (emisor == null) { emisor = new Proveedor { //Domicilio CodigoPostal = facturaRecibida.Emisor.CodigoPostal, Pais = facturaRecibida.Emisor.Pais, Referencia = facturaRecibida.Emisor.Referencia, //Datos RazonSocial = facturaRecibida.Emisor.RazonSocial, Rfc = facturaRecibida.Emisor.Rfc, Status = Status.Activo }; _db.Proveedores.Add(emisor); _db.SaveChanges(); } //Asignaciones Factura facturaRecibida.EmisorId = emisor.Id; facturaRecibida.ReceptorId = receptor.Id; facturaRecibida.Version = "3.2"; facturaRecibida.TipoGasto = tipoGasto; facturaRecibida.Emisor = null; facturaRecibida.Receptor = null; _db.FacturasRecibidas.Add(facturaRecibida); try { _db.SaveChanges(); } catch (DbEntityValidationException dbEx) { var errores = new List <String>(); foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { errores.Add(String.Format("Propiedad: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage)); } } throw new Exception(string.Join(",", errores.ToArray())); } return(true); }
private void BtnGuardar_Click(object sender, EventArgs e) { if (ComprobarDatosIntroducidos()) { FacturaRecibida factura = new FacturaRecibida(); factura.Id = int.Parse(TxtNumFactura.Text); factura.Fecha = DtFecha.Value; factura.Proveedor.Id = ((Proveedor)CbEmpresas.SelectedItem).Id; factura.BaseImponible = decimal.Parse(TxtBaseImponible.Text); factura.Iva = decimal.Parse(TxtIva.Text); factura.Total = decimal.Parse(TxtTotalFactura.Text); if (Convert.ToInt32(BtnAddFactura.Tag) == 1) // Insertamos la nueva factura. { factura.Garaje.Id = ((Garaje)CbGarajes.SelectedItem).Id; if (factura.Insertar()) { MessageBox.Show("Factura guardada", "Factura Guardada", MessageBoxButtons.OK, MessageBoxIcon.Information); BindingSource.DataSource = FacturaRecibida.ObtenerFacturas(); int pos = ((List <FacturaRecibida>)BindingSource.DataSource).IndexOf(new FacturaRecibida(factura.Id)); BindingSource.Position = pos; HabilitarControles(false); CargarDatosComboBox(true, true, false); } else { MessageBox.Show("Ha habido un problema al guardar la factura", "Factura no Guardada", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else if (Convert.ToInt32(BtnModificarFactura.Tag) == 1) // Modificamos los datos de la factura. { if (factura.Modificar()) { MessageBox.Show("Factura modificada", "Factura Modificada", MessageBoxButtons.OK, MessageBoxIcon.Information); BindingSource.DataSource = FacturaRecibida.ObtenerFacturas(); int pos = ((List <FacturaRecibida>)BindingSource.DataSource).IndexOf(new FacturaRecibida(factura.Id)); BindingSource.Position = pos; HabilitarControles(false); CargarDatosComboBox(false, true, false); } else { MessageBox.Show("Ha habido un problema al modificar la factura", "Factura no Modificada", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } RestaurarTagsBotones(); }
private void BtnImprFactRecibida_Click(object sender, EventArgs e) { List <FacturaRecibida> listaFacturas = FacturaRecibida.ObtenerFacturasPorFechasInforme(DtFechaInicio.Value, DtFechaFin.Value); if (listaFacturas.Count == 0) { MessageBox.Show("No hay facturas recibidas para mostrar según las fechas escogidas", "No Existen Facturas", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { FrmFacturasRecibidas frmFacturasRecibidas = new FrmFacturasRecibidas(listaFacturas, DtFechaInicio.Value, DtFechaFin.Value); frmFacturasRecibidas.ShowDialog(); } }
private void FrmFactsRecibida_Load(object sender, EventArgs e) { CargarDatosComboBox(true, true, true); if (FacturaRecibida.HayFacturas()) { BindingSource.DataSource = FacturaRecibida.ObtenerFacturas(); RellenarDatosFactura((FacturaRecibida)BindingSource.Current); } else { MessageBox.Show("No hay facturas para mostrar. Introduzca una.", "No hay Facturas", MessageBoxButtons.OK, MessageBoxIcon.Information); BtnModificarFactura.Enabled = false; BtnEliminarFactura.Enabled = false; } }
public ActionResult Rechazar(FacturaRecibida facturaRecibida) { if (ModelState.IsValid) { _db.Entry(facturaRecibida).State = System.Data.Entity.EntityState.Modified; _db.SaveChanges(); _operacionesCfdisRecibidos = new OperacionesCfdisRecibidos(ObtenerSucursal()); _operacionesCfdisRecibidos.Autorizar(false, facturaRecibida.Id, ObtenerUsuario(), null); return(RedirectToAction("VerTodos")); } return(View(facturaRecibida)); }
/// <summary> /// Carga los datos a los distintos ComboBox. /// </summary> /// <param name="cargarFechas">Indica si hay que cargar las fechas.</param> /// <param name="cargarEmpresas">Indica si hay que cargar las empresas.</param> /// <param name="cargarGarajes">Indica si hay que cargar los garajes para buscar.</param> private void CargarDatosComboBox(bool cargarFechas, bool cargarEmpresas, bool cargarGarajes) { if (cargarFechas) { CbFechas.DataSource = FacturaRecibida.ObtenerFechas(); } if (cargarEmpresas) { CbEmpBuscar.DataSource = Proveedor.ObtenerNombresEmpresas(); CbEmpBuscar.DisplayMember = "Empresa"; } if (cargarGarajes) { CbGjBuscar.DataSource = Garaje.ObtenerGarajes(); CbGjBuscar.DisplayMember = "Nombre"; CbGjBuscar.ValueMember = "Id"; } }
private void BtnEliminarFactura_Click(object sender, EventArgs e) { if (MessageBox.Show("¿Está seguro de que desea eliminar la factura?", "¿Eliminar Factura?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { FacturaRecibida factura = (FacturaRecibida)BindingSource.Current; if (factura.Eliminar()) { MessageBox.Show("Factura eliminada", "Factura Eliminada", MessageBoxButtons.OK, MessageBoxIcon.Information); BindingSource.DataSource = FacturaRecibida.ObtenerFacturas(); HabilitarControles(false); CargarDatosComboBox(true, true, false); BindingSource.Position = BindingSource.Count - 1; } else { MessageBox.Show("Ha habido un problema al eliminar la factura", "Factura no Eliminada", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private Proveedor ChecarProveedor(FacturaRecibida facturaRecibida, int sucursalId) { var proveedor = _db.Proveedores.FirstOrDefault(p => p.Rfc == facturaRecibida.Emisor.Rfc); if (proveedor != null) { return(proveedor); } var sucursal = _db.Sucursales.Find(sucursalId); proveedor = new Proveedor { RazonSocial = facturaRecibida.Emisor.RazonSocial, Rfc = facturaRecibida.Emisor.Rfc, Pais = "MEX", GrupoId = sucursal.GrupoId }; _db.Proveedores.Add(proveedor); try { _db.SaveChanges(); } catch (DbEntityValidationException dbEx) { var errores = new List <String>(); foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { errores.Add(String.Format("Propiedad: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage)); } } throw new Exception(string.Join(",", errores.ToArray())); } return(proveedor); }
private void FrmSeleccionMesOAnio_Load(object sender, EventArgs e) { List <string> mesesAnio = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames.ToList <string>(); // Obtenemos los meses del año. for (int i = 0; i < mesesAnio.Count; i++) { if (i == mesesAnio.Count - 1) // La última posición de la lista está vacía. { mesesAnio.RemoveAt(i); } else { string mes = mesesAnio[i]; char[] letrasMes = mes.ToCharArray(); letrasMes[0] = char.ToUpper(mes[0]); mesesAnio[i] = new string(letrasMes); } } CbMeses.DataSource = mesesAnio; CbAnios.DataSource = FacturaRecibida.ObtenerAniosFechas(); }
private void BtnAddFactura_Click(object sender, EventArgs e) { BtnAddFactura.Tag = 1; CbGarajes.DataSource = Garaje.ObtenerGarajes(); CbGarajes.DisplayMember = "Nombre"; CbGarajes.ValueMember = "Id"; CbEmpresas.DataSource = Proveedor.ObtenerNombresEmpresas(); CbEmpresas.DisplayMember = "Empresa"; CbEmpresas.ValueMember = "Id"; HabilitarControles(true); TxtNumFactura.Focus(); FacturaRecibida factura = (FacturaRecibida)BindingSource.Current; if (factura != null) { if (factura.Id != 0) { LimpiarCampos(); } } }
public FacturaRecibida GuardarFacturaRecibida(Comprobante comprobante, byte[] xml) { var facturaRecibida = new FacturaRecibida { Fecha = Convert.ToDateTime(comprobante.Fecha), Folio = comprobante.Folio, FormaPago = comprobante.FormaPago, MetodoPago = comprobante.MetodoPago, Moneda = comprobante.Moneda, Serie = comprobante.Serie, Subtotal = Convert.ToDouble(comprobante.SubTotal), TipoCambio = Convert.ToDouble(comprobante.TipoCambio), TipoComprobante = comprobante.TipoDeComprobante, TotalImpuestosRetenidos = Convert.ToDouble(comprobante.Impuestos.TotalImpuestosRetenidos ?? "0.0"), TotalImpuestosTrasladados = Convert.ToDouble(comprobante.Impuestos.TotalImpuestosTrasladados ?? "0.0"), Total = Convert.ToDouble(comprobante.Total), Uuid = _decodificar.DecodificarTimbre(comprobante).UUID, ArchivoFisicoXml = xml, FechaTimbrado = DateTime.Now }; var receptor = _db.Sucursales.First(s => s.Rfc == comprobante.Receptor.Rfc); var emisor = _db.Proveedores.First(s => s.Rfc == comprobante.Emisor.Rfc); //Asignaciones Facturas facturaRecibida.EmisorId = emisor.Id; facturaRecibida.ReceptorId = receptor.Id; facturaRecibida.Emisor = null; facturaRecibida.Receptor = null; _db.FacturasRecibidas.Add(facturaRecibida); _db.SaveChanges(); return(facturaRecibida); }
private void PopularArchivos(ref FacturaRecibida facturaRecibida) { if (Request.Files.Count > 0) { for (int i = 0; i < Request.Files.Count; i++) { if (Request.Files[i].ContentLength > 0) { var operacionesStreams = new OperacionesStreams(); var nombreArchivo = Path.GetFileName(Request.Files[i].FileName); var pathDestino = Path.Combine(Server.MapPath("~/Archivos/Validaciones/"), Request.Files[i].FileName); Stream fileStream = Request.Files[i].InputStream; var mStreamer = new MemoryStream(); mStreamer.SetLength(fileStream.Length); fileStream.Read(mStreamer.GetBuffer(), 0, (int)fileStream.Length); mStreamer.Seek(0, SeekOrigin.Begin); var arreglo = operacionesStreams.StreamByteArray(mStreamer); operacionesStreams.StreamArchivo(mStreamer, pathDestino); switch (Path.GetExtension(Request.Files[i].FileName).ToLower()) { case ".xml": facturaRecibida.NombreArchivoXml = Request.Files[i].FileName; facturaRecibida.ArchivoFisicoXml = arreglo; break; default: throw new Exception("Tipo de archivo Inválido"); } mStreamer.Close(); } } } }
/// <summary> /// Constructor de ARInvoice. /// </summary> /// <param name="registroLRFacturasRecibidas">Objeto serialización xml facturas emitidas.</param> public APInvoice(RegistroLRFacturasRecibidas registroLRFacturasRecibidas) { APInvoicePayments = new List <APInvoicePayment>(); InvoicesRectified = new List <InvoiceRectified>(); RegistroLRFacturasRecibidas siiInvoice = registroLRFacturasRecibidas; InvoiceNumber = siiInvoice.IDFactura.NumSerieFacturaEmisor; IssueDate = Convert.ToDateTime(siiInvoice.IDFactura.FechaExpedicionFacturaEmisor); PostingDate = Convert.ToDateTime(siiInvoice.FacturaRecibida.FechaRegContable); if (Settings.Current.IDVersionSii.CompareTo("1.1") >= 0 && siiInvoice.FacturaRecibida.ADeducirEnPeriodoPosterior == "S") { TaxDate = new DateTime(Convert.ToInt32(siiInvoice.FacturaRecibida.EjercicioDeduccion), Convert.ToInt32(siiInvoice.FacturaRecibida.PeriodoDeduccion), 1); } if (siiInvoice.FacturaRecibida.FechaOperacion != null) { OperationIssueDate = Convert.ToDateTime(siiInvoice.FacturaRecibida.FechaOperacion); } SellerParty = new Party() { TaxIdentificationNumber = siiInvoice.IDFactura.IDEmisorFactura.NIF, PartyName = siiInvoice.FacturaRecibida.Contraparte.NombreRazon }; if (siiInvoice.FacturaRecibida.Contraparte.IDOtro != null) { // Si no es un nif español IDOtroType = (IDOtroType)Convert.ToInt32( siiInvoice.FacturaRecibida.Contraparte.IDOtro.IDType); CountryCode = siiInvoice.FacturaRecibida.Contraparte.IDOtro.CodigoPais; SellerParty.TaxIdentificationNumber = siiInvoice.FacturaRecibida.Contraparte.IDOtro.ID; } if (SellerParty == null) { throw new ArgumentNullException("SellerParty is null."); } if (IssueDate == null) { throw new ArgumentNullException("IssueDate is null."); } if (PostingDate == null) { throw new ArgumentNullException("PostingDate is null."); } InvoiceType invoiceType; if (!Enum.TryParse <InvoiceType>(siiInvoice.FacturaRecibida.TipoFactura, out invoiceType)) { throw new InvalidOperationException($"Unknown invoice type {siiInvoice.FacturaRecibida.TipoFactura}"); } InvoiceType = invoiceType; ClaveRegimenEspecialOTrascendencia = (ClaveRegimenEspecialOTrascendencia)Convert.ToInt32( siiInvoice.FacturaRecibida.ClaveRegimenEspecialOTrascendencia); // Gestion rectificativa if (siiInvoice.FacturaRecibida.TipoRectificativa != null) { if (!siiInvoice.FacturaRecibida.TipoFactura.StartsWith("R")) { throw new ArgumentException("For TipoRectificativa not null TipoFactura must begin with 'R'."); } FacturaRecibida facturaRecibidaRectificativa = siiInvoice.FacturaRecibida; if (facturaRecibidaRectificativa.ImporteRectificacion != null) { RectifiedBase = SIIParser.ToDecimal(facturaRecibidaRectificativa.ImporteRectificacion.BaseRectificada); RectifiedAmount = SIIParser.ToDecimal(facturaRecibidaRectificativa.ImporteRectificacion.CuotaRectificada); } RectifiedType rectifiedType; if (Enum.TryParse <RectifiedType>(facturaRecibidaRectificativa.TipoRectificativa, out rectifiedType)) { RectifiedType = rectifiedType; } if (facturaRecibidaRectificativa.FacturasRectificadas.Count == 0) { throw new ArgumentException("FacturasRectificadas without elements."); } foreach (var regRect in facturaRecibidaRectificativa.FacturasRectificadas) { InvoiceRectified invoiceRectified = new InvoiceRectified(); invoiceRectified.RectifiedInvoiceNumber = regRect.NumSerieFacturaEmisor; invoiceRectified.RectifiedIssueDate = Convert.ToDateTime(regRect.FechaExpedicionFacturaEmisor); InvoicesRectified.Add(invoiceRectified); } } // Gestion desgloses decimal taxRate, taxBase, taxAmount, taxRateRE, taxAmountRE; if (siiInvoice.FacturaRecibida.DesgloseFactura != null) { DesgloseIVA desgloseIVA = null; if (siiInvoice.FacturaRecibida.DesgloseFactura.InversionSujetoPasivo != null && siiInvoice.FacturaRecibida.DesgloseFactura.InversionSujetoPasivo.DetalleIVA.Count > 0) { desgloseIVA = siiInvoice.FacturaRecibida.DesgloseFactura.InversionSujetoPasivo; } else { if (siiInvoice.FacturaRecibida.DesgloseFactura.DesgloseIVA == null) { throw new ArgumentException("For InversionSujetoPasivo DesgloseIVA must be present on DesgloseFactura."); } desgloseIVA = siiInvoice.FacturaRecibida.DesgloseFactura.DesgloseIVA; } foreach (var iva in desgloseIVA.DetalleIVA) { taxRate = SIIParser.ToDecimal(iva.TipoImpositivo); taxBase = SIIParser.ToDecimal(iva.BaseImponible); taxAmount = SIIParser.ToDecimal(iva.CuotaSoportada); taxRateRE = SIIParser.ToDecimal(iva.TipoRecargoEquivalencia); taxAmountRE = SIIParser.ToDecimal(iva.CuotaRecargoEquivalencia); if (Settings.Current.IDVersionSii.CompareTo("1.1") >= 0) { IsAsset = (iva.BienInversion == "S"); } TaxesOutputs.Add(taxRate, new decimal[] { taxBase, taxAmount, taxRateRE, taxAmountRE }); } } else { throw new ArgumentException("DesgloseFactura no present in FacturaRecibida."); } // Gestión cuota deducible GrossAmount = SIIParser.ToDecimal(siiInvoice.FacturaRecibida.ImporteTotal); InvoiceText = siiInvoice.FacturaRecibida.DescripcionOperacion; }
private void CbFechas_SelectionChangeCommitted(object sender, EventArgs e) { FacturaRecibida factura = FacturaRecibida.ObtenerFacturaPorFecha((DateTime)CbFechas.SelectedItem); RellenarDatosFactura(factura); }
public void DecodificarFactura(ref FacturaRecibida facturaRecibida, String pathCompleto) { var serializador = new XmlSerializer(typeof(Comprobante)); var comprobante = (Comprobante)serializador.Deserialize(new MemoryStream(facturaRecibida.ArchivoFisicoXml)); //Complementos XmlElement timbreFiscalDigitalFisico = null; XmlElement complementoPagosFisico = null; foreach (var complemento in comprobante.Complemento) { timbreFiscalDigitalFisico = complemento.Any.FirstOrDefault(p => p.OuterXml.Contains("tfd")); complementoPagosFisico = complemento.Any.FirstOrDefault(p => p.OuterXml.Contains("pago10")); } var timbreFiscalDigital = new TimbreFiscalDigital(); if (timbreFiscalDigitalFisico != null) { timbreFiscalDigital = ObtenerComplemento <TimbreFiscalDigital>(timbreFiscalDigitalFisico); } var complementoPagos = new Pagos(); if (complementoPagosFisico != null) { complementoPagos = ObtenerComplemento <Pagos>(complementoPagosFisico); } //Datos facturaRecibida.Fecha = Convert.ToDateTime(comprobante.Fecha); facturaRecibida.NoCertificado = comprobante.NoCertificado; facturaRecibida.TipoComprobante = comprobante.TipoDeComprobante; facturaRecibida.Version = comprobante.Version; facturaRecibida.LugarExpedicion = comprobante.LugarExpedicion; facturaRecibida.FormaPago = comprobante.FormaPago; facturaRecibida.MetodoPago = comprobante.MetodoPago; facturaRecibida.Serie = comprobante.Serie; facturaRecibida.Folio = comprobante.Folio; //Totales facturaRecibida.Subtotal = Convert.ToDouble(comprobante.SubTotal); facturaRecibida.Total = Convert.ToDouble(comprobante.Total); //Timbrado facturaRecibida.FechaTimbrado = Convert.ToDateTime(timbreFiscalDigital.FechaTimbrado); facturaRecibida.NoCertificadoSat = timbreFiscalDigital.NoCertificadoSAT; facturaRecibida.SelloDigitalCfdi = timbreFiscalDigital.SelloCFD; facturaRecibida.SelloSat = timbreFiscalDigital.SelloSAT; facturaRecibida.Certificado = comprobante.Certificado; facturaRecibida.Uuid = timbreFiscalDigital.UUID; facturaRecibida.Emisor = new Proveedor { RazonSocial = comprobante.Emisor.Nombre, Rfc = comprobante.Emisor.Rfc }; facturaRecibida.Receptor = new Sucursal { Rfc = comprobante.Receptor.Rfc }; try { facturaRecibida.Descuento = Convert.ToDouble(comprobante.Descuento); } catch (Exception) { } }
private void FrmResultados_Load(object sender, EventArgs e) { MostrarFechaInicioYFin(); Dictionary <string, decimal[]> resultadosGarajes = new Dictionary <string, decimal[]>(); for (int i = 1; i <= 5; i++) { if (Mes >= 1) { switch (i) { case 1: resultadosGarajes.Add("GM", new decimal[2] { FacturaGaraje.ObtenerSumaBaseImponiblePorSubIdGarajeYMes("GM", Mes), FacturaRecibida.ObtenerSumaBaseImponiblePorSubIdGarajeYMes("GM", Mes) }); TxtEmitidasGm.Text = resultadosGarajes["GM"][0].ToString(); TxtRecibidasGm.Text = resultadosGarajes["GM"][1].ToString(); TxtResultadoGm.Text = (resultadosGarajes["GM"][0] - resultadosGarajes["GM"][1]).ToString(); break; case 2: resultadosGarajes.Add("C2", new decimal[2] { FacturaGaraje.ObtenerSumaBaseImponiblePorSubIdGarajeYMes("C2", Mes), FacturaRecibida.ObtenerSumaBaseImponiblePorSubIdGarajeYMes("C2", Mes) }); TxtEmitidasC2.Text = resultadosGarajes["C2"][0].ToString(); TxtRecibidasC2.Text = resultadosGarajes["C2"][1].ToString(); TxtResultadoC2.Text = (resultadosGarajes["C2"][0] - resultadosGarajes["C2"][1]).ToString(); break; case 3: resultadosGarajes.Add("L", new decimal[2] { FacturaLavadero.ObtenerSumaBaseImponiblePorMes(Mes), FacturaRecibida.ObtenerSumaBaseImponiblePorSubIdGarajeYMes("L", Mes) }); TxtEmitidasLv.Text = resultadosGarajes["L"][0].ToString(); TxtRecibidasLv.Text = resultadosGarajes["L"][1].ToString(); TxtResultadoLv.Text = (resultadosGarajes["L"][0] - resultadosGarajes["L"][1]).ToString(); break; case 4: resultadosGarajes.Add("IM", new decimal[2] { FacturaGaraje.ObtenerSumaBaseImponiblePorSubIdGarajeYMes("IM", Mes), FacturaRecibida.ObtenerSumaBaseImponiblePorSubIdGarajeYMes("IM", Mes) }); TxtEmitidasIm.Text = resultadosGarajes["IM"][0].ToString(); TxtRecibidasIm.Text = resultadosGarajes["IM"][1].ToString(); TxtResultadoIm.Text = (resultadosGarajes["IM"][0] - resultadosGarajes["IM"][1]).ToString(); break; case 5: resultadosGarajes.Add("C19", new decimal[2] { FacturaGaraje.ObtenerSumaBaseImponiblePorSubIdGarajeYMes("C19", Mes), FacturaRecibida.ObtenerSumaBaseImponiblePorSubIdGarajeYMes("C19", Mes) }); TxtEmitidasC19.Text = resultadosGarajes["C19"][0].ToString(); TxtRecibidasC19.Text = resultadosGarajes["C19"][1].ToString(); TxtResultadoC19.Text = (resultadosGarajes["C19"][0] - resultadosGarajes["C19"][1]).ToString(); break; } } else { switch (i) { case 1: resultadosGarajes.Add("GM", new decimal[2] { FacturaGaraje.ObtenerSumaBaseImponiblePorSubIdGarajeYAnio("GM", Anio), FacturaRecibida.ObtenerSumaBaseImponiblePorSubIdGarajeYAnio("GM", Anio) }); TxtEmitidasGm.Text = resultadosGarajes["GM"][0].ToString(); TxtRecibidasGm.Text = resultadosGarajes["GM"][1].ToString(); TxtResultadoGm.Text = (resultadosGarajes["GM"][0] - resultadosGarajes["GM"][1]).ToString(); break; case 2: resultadosGarajes.Add("C2", new decimal[2] { FacturaGaraje.ObtenerSumaBaseImponiblePorSubIdGarajeYAnio("C2", Anio), FacturaRecibida.ObtenerSumaBaseImponiblePorSubIdGarajeYAnio("C2", Anio) }); TxtEmitidasC2.Text = resultadosGarajes["C2"][0].ToString(); TxtRecibidasC2.Text = resultadosGarajes["C2"][1].ToString(); TxtResultadoC2.Text = (resultadosGarajes["C2"][0] - resultadosGarajes["C2"][1]).ToString(); break; case 3: resultadosGarajes.Add("L", new decimal[2] { FacturaLavadero.ObtenerSumaBaseImponiblePorAnio(Anio), FacturaRecibida.ObtenerSumaBaseImponiblePorSubIdGarajeYAnio("L", Anio) }); TxtEmitidasLv.Text = resultadosGarajes["L"][0].ToString(); TxtRecibidasLv.Text = resultadosGarajes["L"][1].ToString(); TxtResultadoLv.Text = (resultadosGarajes["L"][0] - resultadosGarajes["L"][1]).ToString(); break; case 4: resultadosGarajes.Add("IM", new decimal[2] { FacturaGaraje.ObtenerSumaBaseImponiblePorSubIdGarajeYAnio("IM", Anio), FacturaRecibida.ObtenerSumaBaseImponiblePorSubIdGarajeYAnio("IM", Anio) }); TxtEmitidasIm.Text = resultadosGarajes["IM"][0].ToString(); TxtRecibidasIm.Text = resultadosGarajes["IM"][1].ToString(); TxtResultadoIm.Text = (resultadosGarajes["IM"][0] - resultadosGarajes["IM"][1]).ToString(); break; case 5: resultadosGarajes.Add("C19", new decimal[2] { FacturaGaraje.ObtenerSumaBaseImponiblePorSubIdGarajeYAnio("C19", Anio), FacturaRecibida.ObtenerSumaBaseImponiblePorSubIdGarajeYAnio("C19", Anio) }); TxtEmitidasC19.Text = resultadosGarajes["C19"][0].ToString(); TxtRecibidasC19.Text = resultadosGarajes["C19"][1].ToString(); TxtResultadoC19.Text = (resultadosGarajes["C19"][0] - resultadosGarajes["C19"][1]).ToString(); break; } } } decimal totalFactsEmitidas = 0; decimal totalFactsRecibidas = 0; foreach (KeyValuePair <string, decimal[]> resultado in resultadosGarajes) { totalFactsEmitidas += resultado.Value[0]; totalFactsRecibidas += resultado.Value[1]; } decimal totalFacts = totalFactsEmitidas - totalFactsRecibidas; TxtTotalEmitidas.Text = totalFactsEmitidas.ToString(); TxtTotalRecibidas.Text = totalFactsRecibidas.ToString(); TxtTotal.Text = totalFacts.ToString(); }
/// <summary> /// Función para tratar el registro de factura que se acaba de leer. /// </summary> /// <param name="_CamposReg"></param> /// <returns></returns> private RegistroLRFacturasRecibidas TratarFactRecibida(string[] _CamposReg) { RegistroLRFacturasRecibidas _RegLRFactReciWRK = new RegistroLRFacturasRecibidas(); // Informamos el periodo impositivo. PeriodoImpositivo _PeriodoWrk = new PeriodoImpositivo { Ejercicio = _CamposReg[1], Periodo = _CamposReg[2] }; _RegLRFactReciWRK.PeriodoImpositivo = _PeriodoWrk; // Informamos el IDFactura. IDFactura _IDFactWrk = new IDFactura(); IDEmisorFactura _IDEmisorFact = new IDEmisorFactura(); Contraparte _ReceptorWrk = new Contraparte(); if (string.IsNullOrWhiteSpace(_CamposReg[4])) { _IDEmisorFact.NIF = _CamposReg[3]; _ReceptorWrk.NIF = _IDEmisorFact.NIF; } else { IDOtro _ProveedorExtWrk = new IDOtro { CodigoPais = _CamposReg[4], IDType = _CamposReg[5], ID = _CamposReg[3] }; _IDEmisorFact.IDOtro = _ProveedorExtWrk; _ReceptorWrk.IDOtro = _IDEmisorFact.IDOtro; } _IDFactWrk.IDEmisorFactura = _IDEmisorFact; _IDFactWrk.NumSerieFacturaEmisor = _CamposReg[6].Trim(); _IDFactWrk.FechaExpedicionFacturaEmisor = _CamposReg[7]; _RegLRFactReciWRK.IDFactura = _IDFactWrk; // Procedemos a tratar la factura actual. FacturaRecibida _FacturaActual = new FacturaRecibida { //Aquí indicamos si se trata de una factura 'normal' o es 'rectificativa'. TipoFactura = _CamposReg[8], ClaveRegimenEspecialOTrascendencia = _CamposReg[9], ImporteTotal = ((_CamposReg[10]).Trim()).Replace(',', '.'), FechaOperacion = _CamposReg[17] }; if (string.IsNullOrWhiteSpace(_CamposReg[11])) { _CamposReg[11] = "Hay que informar el concepto de la factura"; } _FacturaActual.DescripcionOperacion = _CamposReg[11].Trim(); // Informamos la contraparte, que según pruebas con el SOAP, este tiene que ser igual que el IDEmisorFactura _ReceptorWrk.NombreRazon = _CamposReg[12].Trim(); _FacturaActual.Contraparte = _ReceptorWrk; _FacturaActual.FechaRegContable = _CamposReg[13]; // Procedemos a informar los campos en el caso de que se trate del envio de una factura rectificativa. if (!string.IsNullOrWhiteSpace(_CamposReg[14])) { _FacturaActual.TipoRectificativa = _CamposReg[14]; ImporteRectificacion _ImpRectifWrk = new ImporteRectificacion { BaseRectificada = ((_CamposReg[15]).Trim()).Replace(',', '.'), CuotaRectificada = ((_CamposReg[16]).Trim()).Replace(',', '.') }; _FacturaActual.ImporteRectificacion = _ImpRectifWrk; } // Procedemos a informar la cuota deducible en el caso de que corresponda. // Si no viene informada la cuota deducible, pondremos '-1' con el fin de que al volver a generarse el lote // la ponga a cero, y si no la calcule. if (string.IsNullOrWhiteSpace(_CamposReg[18])) { _FacturaActual.CuotaDeducible = "-1"; } else { _FacturaActual.CuotaDeducible = ((_CamposReg[18]).Trim()).Replace(',', '.'); } _RegLRFactReciWRK.FacturaRecibida = _FacturaActual; return(_RegLRFactReciWRK); }