private void AutorizarFacturaAfip(int factura_id) { try { Factura factura = new Factura(); factura = Facturas.FindById(factura_id); factura.cliente = Clientes.FindById(factura.cliente_id); factura.cliente.tipodocumento = TiposDocumento.FindById(factura.cliente.tipodocumento_id); if (factura.estado_afip != "A" || string.IsNullOrEmpty(factura.estado_afip)) { int resultado_update = Facturas.UpdateComprobanteAfip(factura); if (resultado_update > 0) { factura = Facturas.FindById(factura_id); string mensaje = string.Empty; if (factura.estado_afip.Trim() == "A") { mensaje += "Comprobante Autorizado" + Environment.NewLine + Environment.NewLine + "Nro. Comprobante: " + String.Format("{0:0000}", factura.puntoventa_id) + "-" + String.Format("{0:00000000}", factura.numero) + Environment.NewLine + "CAE : " + factura.cae + Environment.NewLine + "Vencimiento : " + factura.fecha_vencimiento_cae.ToShortDateString() + Environment.NewLine + Environment.NewLine; } if (factura.estado_afip.Trim() == "R") { mensaje += "Comprobante Rechazado" + Environment.NewLine + Environment.NewLine; } if (factura.estado_afip.Trim() == "P") { mensaje += "Comprobante Autorizado Parcial" + Environment.NewLine + Environment.NewLine + "Nro. Comprobante: " + String.Format("{0:0000}", factura.puntoventa_id) + "-" + String.Format("{0:00000000}", factura.numero) + Environment.NewLine + "CAE : " + factura.cae + Environment.NewLine + "Vencimiento : " + factura.fecha_vencimiento_cae.ToShortDateString() + Environment.NewLine + Environment.NewLine; } MessageBox.Show(mensaje, "Autorización de Comprobantes", MessageBoxButtons.OK, MessageBoxIcon.Information); GetFacturasAutorizar(); } } else { MessageBox.Show("El Comprobante Seleccionado ya se encuentra autorizado.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception e) { MessageBox.Show("Error : " + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public static int Add(Factura entity) { int factura_id = 0; bool resultado = true; try { using(TransactionScope scope = new TransactionScope()) { IFacturaRepository _repository = new FacturaRepository(); factura_id = _repository.Add(entity); if(factura_id > 0) { foreach(var row in entity.alicuotas) { row.factura_id = factura_id; int res = FacturasAlicuotas.Add(row); if(res == 0) { resultado = false; break; } } } else { resultado = false; } if (resultado == true) scope.Complete(); } } catch(Exception e) { throw e; } return factura_id; }
private void RegistrarFactura() { try { Factura factura = new Factura(); factura.cliente_id = Convert.ToInt32(txtCodigoCliente.Text); factura.concepto = GetConceptoFactura(); factura.condicionventa_id = Convert.ToInt32(cboCondicionVenta.SelectedValue); factura.estado = "P"; factura.fecha = dtpFecha.Value; factura.iva = Convert.ToDouble(txtIva.Text); factura.observaciones = txtObservaciones.Text; factura.otros_tributos = Convert.ToDouble(txtOtrosTributos.Text); factura.puntoventa_id = 3; factura.subtotal = Convert.ToDouble(txtSubtotal.Text); factura.tipocomprobante_id = Convert.ToInt32(cboTipoComprobante.SelectedValue); factura.total = Convert.ToDouble(txtTotal.Text); factura.fecha_vencimiento_cae = dtpFecha.Value; //cargo las alicuotas IList<FacturaAlicuota> alicuotas = new List<FacturaAlicuota>(); foreach(DataGridViewRow row in dgvAlicuotas.Rows) { FacturaAlicuota alicuota = new FacturaAlicuota(); alicuota.alicuota_id = Convert.ToInt32(row.Cells[0].Value); alicuota.base_imponible = Convert.ToDouble(row.Cells[2].Value); alicuota.importe = Convert.ToDouble(row.Cells[3].Value); alicuotas.Add(alicuota); } factura.alicuotas = alicuotas; int resultado = Facturas.Add(factura); if(resultado > 0) { MessageBox.Show("Los datos se registraron correctamente.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); //LimpiarControles(); } else { MessageBox.Show("Ocurrio un error al registrar los datos. Intente Nuevamente.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch(Exception e) { MessageBox.Show("Error : " + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public static int UpdateComprobanteAfip(Factura factura) { string CAE = string.Empty; string FchVencimiento = string.Empty; DateTime fechavencimientocae = factura.fecha; long numero_comp = 0; int ptovta = 0; try { factura.tipocomprobante = TiposComprobante.FindById(factura.tipocomprobante_id); FacturaElectronica Fe = new FacturaElectronica("C:\\Certificados\\bonechi\\Desarrollo.p12", 20107618725, "H**O"); var respuesta = Fe.FECompUltimoAutorizado(3, factura.tipocomprobante.codigo_afip); int proximocomprobante = respuesta.CbteNro + 1; factura.alicuotas = FacturasAlicuotas.FindAllByIdFactura(factura.id).ToList(); var query = factura.alicuotas.GroupBy(x => x.alicuota_id) .Select(item => new FacturaAlicuota { alicuota_id = item.First().alicuota_id, base_imponible = item.Sum(x => x.base_imponible), importe = item.Sum(x => x.importe) }).ToList(); int i = 0; AlicIva[] ivas = new AlicIva[query.ToList().Count]; foreach (var row in query) { Alicuota alicuota = Alicuotas.FindById(row.alicuota_id); Afip.FE.Wsfe.AlicIva alic = new Afip.FE.Wsfe.AlicIva(); alic.Id = alicuota.codigo_afip; alic.BaseImp = row.base_imponible; alic.Importe = row.importe; ivas[i] = alic; i += 1; } var response = Fe.FECAESolicitar(1, 3, factura.tipocomprobante.codigo_afip, factura.concepto, factura.cliente.tipodocumento.codigo_afip, factura.cliente.documento, proximocomprobante, proximocomprobante, factura.fecha.ToString("yyyyMMdd"), factura.total, 0, factura.subtotal, 0, factura.otros_tributos, factura.iva, "", "", "", "PES", 1, null, null, ivas, null); string resultado = response.FeCabResp.Resultado; if (resultado != "R") { //Obtengo el CAE y su vencimiento CAE = response.FeDetResp[0].CAE; FchVencimiento = response.FeDetResp[0].CAEFchVto; fechavencimientocae = DateTime.ParseExact(FchVencimiento, "yyyyMMdd", null); numero_comp = response.FeDetResp[0].CbteDesde; ptovta = response.FeCabResp.PtoVta; } string obsafip = string.Empty; //Obtengo las observaciones y las muestro en el textbox var observaciones = response.FeDetResp[0].Observaciones; if (observaciones != null) { foreach (var Obs in observaciones) { obsafip += " * " + Obs.Code + " : " + Obs.Msg + Environment.NewLine; } } string erroresafip = string.Empty; //Obtengo los errores y los muestro si los hubiese var Errors = response.Errors; if (Errors != null) { foreach (var Error in Errors) { erroresafip += " * " + Error.Code + " : " + Error.Msg + Environment.NewLine; } } string CB = "20107618725" + String.Format("{0:00}", factura.tipocomprobante.codigo_afip) + String.Format("{0:0000}", 3) + CAE + FchVencimiento; factura.cae = CAE; factura.fecha_vencimiento_cae = fechavencimientocae; factura.codigo_barras = CB; factura.estado_afip = resultado; factura.numero = String.Format("{0:00000000}", numero_comp); factura.estado = "A"; factura.observacionesafip = obsafip; factura.erroresafip = erroresafip; IFacturaRepository _repository = new FacturaRepository(); return _repository.UpdateComprobanteAfip(factura); } catch (Exception e) { throw e; } }