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);
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #4
0
        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;
            }
        }