Example #1
0
        private static string consultarAfip(int p_pv, int p_codigo, double p_importe, double p_iva, double p_total, DateTime p_fecha, long doc, int concepto, int tipo_doc, int tipo_iva, string moneda)
        {
            numero_comprobante = 0;
            cae_comprobante    = "";
            cae_vencimiento    = "";
            mensaje_afip       = "";
            mensaje_obs        = "";
            mensaje_error      = "";
            string m = "";

            resultado = "R";

            try
            {
                if (Main.authRequest == null)
                {
                    Main.authRequest       = new FEAuthRequest();
                    Main.authRequest.Cuit  = Main.CUIT;
                    Main.authRequest.Sign  = Main.SING;
                    Main.authRequest.Token = Main.TOKEN;
                }

                AFIP.TEST.WSFE.Service service = getServicio();
                service.ClientCertificates.Add(Main.certificado);

                /*
                 * if (Main.Testing == 1)
                 * {
                 *  AFIP.TEST.WSFE.Service service = getServicioTest();
                 *  service.ClientCertificates.Add(Main.certificado);
                 * }
                 * else
                 * {
                 *  AFIP.WSFE.Service service = getServicioProducion();
                 *  service.ClientCertificates.Add(Main.certificado);
                 * }*/
                //PtoVenta pvObj = ptos_venta_cm.SelectedItem;
                //int pv = p_pv;//pvObj.Nro;
                //CbteTipo cm = p_codigo;//TiposComprobantesCMB.SelectedItem;

                FECAERequest    req = new FECAERequest();
                FECAECabRequest cab = new FECAECabRequest();
                FECAEDetRequest det = new FECAEDetRequest();

                cab.CantReg  = 1;
                cab.PtoVta   = p_pv;
                cab.CbteTipo = p_codigo;//cm.Id;
                req.FeCabReq = cab;

                FECAEDetRequest bar = det;
                //ConceptoTipo concepto = TipoConcepto.SelectedItem;
                bar.Concepto = concepto; //concepto.ID;
                //DocTipo doctipo = TipoDocCMB.SelectedItem;
                bar.DocTipo = tipo_doc;  //doctipo.Id
                bar.DocNro  = doc;       //long.Parse(DocTX.Text)

                //Buscar el ultimo numero
                try
                {
                    FERecuperaLastCbteResponse lastRes = service.FECompUltimoAutorizado(Main.authRequest, p_pv, p_codigo);
                    int last = lastRes.CbteNro;

                    bar.CbteDesde = last + 1;
                    bar.CbteHasta = last + 1;
                }
                catch
                {
                    bar.CbteDesde = p_codigo;
                    bar.CbteHasta = p_codigo;
                }

                bar.CbteFch = p_fecha.ToString("yyyyMMdd");              //FechaDTP.Value.ToString("yyyyMMdd");

                bar.ImpNeto  = Double.Parse(p_importe.ToString("0.00")); //NetoTX.Text;
                bar.ImpIVA   = Double.Parse(p_iva.ToString("0.00"));     // ImpIvaTx.Text;
                bar.ImpTotal = Double.Parse(p_total.ToString("0.00"));   // TotalTx.Text;

                bar.ImpTotConc = 0;
                bar.ImpOpEx    = 0;
                bar.ImpTrib    = 0;

                //Moneda mon = MonedaCMB.SelectedItem;
                bar.MonId    = moneda;// mon.Id
                bar.MonCotiz = 1;

                AlicIva alicuota = new AlicIva();
                //IvaTipo ivat = TipoIVACmb.SelectedItem;
                alicuota.Id      = tipo_iva;                             // ivat.Id
                alicuota.BaseImp = p_importe;                            // NetoTX.Text
                alicuota.Importe = Double.Parse(p_iva.ToString("0.00")); // ImpIvaTx.Text

                bar.Iva = new AlicIva[] { alicuota };
                //bar.Iva.Append(alicuota);

                req.FeDetReq = new FECAEDetRequest[] { bar };
                //req.FeDetReq.Append(bar);


                try
                {
                    FECAEResponse r      = service.FECAESolicitar(Main.authRequest, req);
                    string        vbCrLf = "\n";

                    resultado = r.FeDetResp[0].Resultado;

                    m  = "Estado Cabecera: " + r.FeCabResp.Resultado + vbCrLf;
                    m += "Estado Detalle: " + r.FeDetResp[0].Resultado;
                    m += vbCrLf;
                    m += "CAE: " + r.FeDetResp[0].CAE;
                    m += vbCrLf;
                    m += "Vto: " + r.FeDetResp[0].CAEFchVto;
                    m += vbCrLf;
                    m += "Numero de comprobante: " + r.FeDetResp[0].CbteDesde;
                    m += vbCrLf;

                    numero_comprobante = r.FeDetResp[0].CbteDesde;
                    cae_comprobante    = r.FeDetResp[0].CAE;
                    cae_vencimiento    = r.FeDetResp[0].CAEFchVto;

                    if (r.FeDetResp[0].Observaciones != null)
                    {
                        foreach (var o in r.FeDetResp[0].Observaciones)
                        {
                            mensaje_obs += string.Format("Obs: {0} ({1})", o.Msg, o.Code) + vbCrLf;
                            m           += mensaje_obs;
                        }
                    }
                    if (r.Errors != null)
                    {
                        foreach (var er in r.Errors)
                        {
                            mensaje_error += string.Format("Er: {0}: {1}", er.Code, er.Msg) + vbCrLf;
                            m             += mensaje_error;
                        }
                    }
                    if (r.Events != null)
                    {
                        foreach (var ev in r.Events)
                        {
                            mensaje_afip += string.Format("Ev: {0}: {1}", ev.Code, ev.Msg) + vbCrLf;
                            m            += mensaje_afip;
                        }
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Log(LogTarget.File, DateTime.Now.ToString() + " - ERROR COMPROBANTE AFIP: " + e.Message + " - " + e.StackTrace);
                    m = "ERROR";
                    return(m);
                }



                //Resultado.Text = m
                LogHelper.Log(LogTarget.File, DateTime.Now.ToString() + " - Consultando en AFIP: " + resultado);
            }
            catch (Exception e)
            {
                LogHelper.Log(LogTarget.File, DateTime.Now.ToString() + " - ERROR COMPROBANTE AFIP: " + e.Message + " - " + e.StackTrace);
                //MessageBox.Show("ERROR: "+e.Message+"\n"+e.StackTrace);
            }

            return(m);
        }
Example #2
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;
            }
        }
Example #3
0
        public bool CAEAInformar(int ptoVenta, int CbteTipo, string CAE)
        {
            mFECAEResponse = null;

            FECAEARequest Req = new FECAEARequest();

            Req.FeCabReq = new FECAEACabRequest();
            Req.FeDetReq = (new List <FECAEADetRequest>()).ToArray();

            Req.FeCabReq.CantReg  = mFECAERequest.FeDetReq.Length;
            Req.FeCabReq.PtoVta   = ptoVenta;
            Req.FeCabReq.CbteTipo = CbteTipo;


            for (int I = 0; I <= mFECAERequest.FeDetReq.Length - 1; I++)
            {
                FECAEADetRequest[] requests = Req.FeDetReq;
                Array.Resize(ref requests, Req.FeDetReq.Length + 1);
                Req.FeDetReq = requests;
                FECAEADetRequest lDetalle = new FECAEADetRequest();
                Req.FeDetReq[Req.FeDetReq.Length - 1] = lDetalle;

                lDetalle.CAEA         = CAE;
                lDetalle.Concepto     = mFECAERequest.FeDetReq[I].Concepto;
                lDetalle.DocTipo      = mFECAERequest.FeDetReq[I].DocTipo;
                lDetalle.DocNro       = mFECAERequest.FeDetReq[I].DocNro;
                lDetalle.CbteDesde    = mFECAERequest.FeDetReq[I].CbteDesde;
                lDetalle.CbteHasta    = mFECAERequest.FeDetReq[I].CbteHasta;
                lDetalle.CbteFch      = mFECAERequest.FeDetReq[I].CbteFch;
                lDetalle.ImpTotal     = mFECAERequest.FeDetReq[I].ImpTotal;
                lDetalle.ImpTotConc   = mFECAERequest.FeDetReq[I].ImpTotConc;
                lDetalle.ImpNeto      = mFECAERequest.FeDetReq[I].ImpNeto;
                lDetalle.ImpOpEx      = mFECAERequest.FeDetReq[I].ImpOpEx;
                lDetalle.ImpTrib      = mFECAERequest.FeDetReq[I].ImpTrib;
                lDetalle.ImpIVA       = mFECAERequest.FeDetReq[I].ImpIVA;
                lDetalle.FchServDesde = mFECAERequest.FeDetReq[I].FchServDesde;
                lDetalle.FchServHasta = mFECAERequest.FeDetReq[I].FchServHasta;
                lDetalle.FchVtoPago   = mFECAERequest.FeDetReq[I].FchVtoPago;
                lDetalle.MonId        = mFECAERequest.FeDetReq[I].MonId;
                lDetalle.MonCotiz     = mFECAERequest.FeDetReq[I].MonCotiz;


                if ((mFECAERequest.FeDetReq[I].CbtesAsoc != null))
                {
                    for (int J = 0; J <= mFECAERequest.FeDetReq[I].CbtesAsoc.Length - 1; J++)
                    {
                        CbteAsoc   lCompAsoc = new CbteAsoc();
                        CbteAsoc[] compAsocs = lDetalle.CbtesAsoc;
                        Array.Resize(ref compAsocs, lDetalle.CbtesAsoc.Length + 1);
                        lDetalle.CbtesAsoc = compAsocs;
                        lDetalle.CbtesAsoc[lDetalle.CbtesAsoc.Length - 1] = lCompAsoc;


                        lCompAsoc.Tipo   = mFECAERequest.FeDetReq[I].CbtesAsoc[J].Tipo;
                        lCompAsoc.PtoVta = mFECAERequest.FeDetReq[I].CbtesAsoc[J].PtoVta;
                        lCompAsoc.Nro    = mFECAERequest.FeDetReq[I].CbtesAsoc[J].Nro;
                    }
                }


                if ((mFECAERequest.FeDetReq[I].Tributos != null))
                {
                    mFECAERequest.FeDetReq[I].Tributos = (new List <Tributo>()).ToArray();


                    for (int J = 0; J <= mFECAERequest.FeDetReq[I].Tributos.Length - 1; J++)
                    {
                        Tributo   lTributo = new Tributo();
                        Tributo[] tributos = lDetalle.Tributos;
                        Array.Resize(ref tributos, lDetalle.Tributos.Length + 1);
                        lDetalle.Tributos = tributos;
                        lDetalle.Tributos[lDetalle.Tributos.Length - 1] = lTributo;

                        lTributo.Id      = mFECAERequest.FeDetReq[I].Tributos[J].Id;
                        lTributo.Desc    = mFECAERequest.FeDetReq[I].Tributos[J].Desc;
                        lTributo.Alic    = mFECAERequest.FeDetReq[I].Tributos[J].Alic;
                        lTributo.Importe = mFECAERequest.FeDetReq[I].Tributos[J].Importe;
                    }
                }


                if ((mFECAERequest.FeDetReq[I].Iva != null))
                {
                    mFECAERequest.FeDetReq[I].Iva = (new List <AlicIva>()).ToArray();

                    for (int J = 0; J <= mFECAERequest.FeDetReq[I].Iva.Length - 1; J++)
                    {
                        AlicIva   lIva = new AlicIva();
                        AlicIva[] ivas = lDetalle.Iva;
                        Array.Resize(ref ivas, lDetalle.Iva.Length + 1);
                        lDetalle.Iva = ivas;
                        lDetalle.Iva[lDetalle.Iva.Length - 1] = lIva;
                        lIva.Id      = mFECAERequest.FeDetReq[I].Iva[J].Id;
                        lIva.BaseImp = mFECAERequest.FeDetReq[I].Iva[J].BaseImp;
                        lIva.Importe = mFECAERequest.FeDetReq[I].Iva[J].Importe;
                    }
                }


                if ((mFECAERequest.FeDetReq[I].Opcionales != null))
                {
                    mFECAERequest.FeDetReq[I].Opcionales = (new List <Opcional>()).ToArray();


                    for (int J = 0; J <= mFECAERequest.FeDetReq[I].Opcionales.Length - 1; J++)
                    {
                        Opcional   lOpcional  = new Opcional();
                        Opcional[] opcionales = lDetalle.Opcionales;
                        Array.Resize(ref opcionales, lDetalle.Opcionales.Length + 1);
                        lDetalle.Opcionales = opcionales;
                        lDetalle.Opcionales[lDetalle.Opcionales.Length - 1] = lOpcional;
                        lOpcional.Id    = mFECAERequest.FeDetReq[I].Opcionales[J].Id;
                        lOpcional.Valor = mFECAERequest.FeDetReq[I].Opcionales[J].Valor;
                    }
                }
            }

            mCAEAInformarResponse = getClient().FECAEARegInformativo(mAuthRequest, Req);
            if (isError(mCAEAInformarResponse.Errors))
            {
                return(false);
            }

            return(true);
        }
        public string comprobante_electronico(int tipocomprobante, long nrodoc, double total, double neto21, double civa21, double neto105, double civa105, ref string cae, ref string fechavto, ref string tipofactura, ref string puntoventa)
        {
            try
            {
                LoginClass miloginclase = new LoginClass("wsfe", NegocioConfigEmpresa.urllogin, @"C:\CertificadodonVito\certificado.pfx", "");
                miloginclase.hacerLogin(miloginclase);
                int doctipoid = 96;
                authRequest       = new FEAuthRequest();
                authRequest.Cuit  = NegocioConfigEmpresa.emcuit;
                authRequest.Sign  = miloginclase.Sing;
                authRequest.Token = miloginclase.Token;

                Service servicio = new Service();
                servicio     = getServicio();
                servicio.Url = NegocioConfigEmpresa.urlservicio;
                //servicio.ClientCertificates.Add(certificado);

                //ver conceptoid
                int conceptoid = CONCEPTO_PRODUCTO;
                if (nrodoc.ToString().Length == 11)
                {
                    doctipoid = 80;
                }


                //  Service service = getServicio();
                servicio.ClientCertificates.Add(miloginclase.Certificado);
                FECAERequest    req = new FECAERequest();
                FECAECabRequest cab = new FECAECabRequest();
                FECAEDetRequest det = new FECAEDetRequest();

                cab.CantReg  = 1;
                cab.PtoVta   = Convert.ToInt32(NegocioConfigEmpresa.puntoventa);
                cab.CbteTipo = tipocomprobante;
                req.FeCabReq = cab;

                det.Concepto = conceptoid;
                det.DocTipo  = doctipoid;
                det.DocNro   = nrodoc;

                // ultimo comprobante autorizado

                FERecuperaLastCbteResponse lastres = servicio.FECompUltimoAutorizado(authRequest, 3, tipocomprobante);
                int last = lastres.CbteNro;
                det.CbteDesde = last + 1;
                det.CbteHasta = last + 1;
                int nrocomprobante = last + 1;

                det.CbteFch = DateTime.Now.ToString("yyyyMMdd");
                if (tipocomprobante == 1 || tipocomprobante == 6)
                {
                    decimal totalneto = decimal.Round(Convert.ToDecimal(neto21 + neto105), 2);
                    decimal totaliva  = decimal.Round(Convert.ToDecimal(civa21 + civa105), 2);
                    det.ImpNeto = Convert.ToDouble(totalneto);
                    det.ImpIVA  = Convert.ToDouble(totaliva);
                }
                else
                {
                    det.ImpNeto = total;
                    det.ImpIVA  = 0;
                }

                det.ImpTotal = total;

                det.ImpTotConc = 0.00;
                det.ImpOpEx    = 0.00;
                det.ImpTrib    = 0.00;

                det.MonId    = "PES";
                det.MonCotiz = 1;
                int     tipoalicuota = ID_TASA_IVA_NINGUNO;
                AlicIva alicuota     = new AlicIva();
                if (tipocomprobante == TIPOCOMPROBANTE_FACTURA_A || tipocomprobante == TIPOCOMPROBANTE_FACTURA_B)
                {
                    tipoalicuota     = ID_TASA_IVA_21_00;
                    alicuota.Id      = tipoalicuota;
                    alicuota.BaseImp = neto21;
                    alicuota.Importe = civa21;
                    if (neto105 > 0)
                    {
                        AlicIva alicuota2 = new AlicIva();
                        tipoalicuota      = ID_TASA_IVA_10_50;
                        alicuota2.Id      = tipoalicuota;
                        alicuota2.BaseImp = neto105;
                        alicuota2.Importe = civa105;
                        det.Iva           = new[] { alicuota, alicuota2 };
                    }
                    else
                    {
                        det.Iva = new[] { alicuota };
                    }
                }
                else
                {
                    alicuota.Id      = tipoalicuota;
                    alicuota.BaseImp = 0;
                    alicuota.Importe = 0;
                    det.Iva          = new[] { alicuota };
                }



                req.FeDetReq = new[] { det };

                FECAEResponse r = servicio.FECAESolicitar(authRequest, req);
                cae = r.FeDetResp[0].CAE; //string CAE
                string ESTADO    = r.FeCabResp.Resultado;
                string resultado = r.FeDetResp[0].Resultado;
                fechavto = r.FeDetResp[0].CAEFchVto;//string vto

                puntoventa  = NegocioConfigEmpresa.puntoventa;
                tipofactura = tipocomprobante.ToString("00");


                string m = "ok";

                {
                    if (r.FeDetResp[0].Observaciones is object)
                    {
                        foreach (var o in r.FeDetResp[0].Observaciones)
                        {
                            m += string.Format("Obs: {0} ({1})", o.Msg, o.Code) + Constants.vbCrLf;
                        }
                    }
                }
                {
                    if (r.Errors is object)
                    {
                        foreach (var er in r.Errors)
                        {
                            m += string.Format("Er: {0}: {1}", er.Code, er.Msg) + Constants.vbCrLf;
                        }
                    }
                }
                {
                    if (r.Events is object)
                    {
                        foreach (var ev in r.Events)
                        {
                            m += string.Format("Ev: {0}: {1}", ev.Code, ev.Msg) + Constants.vbCrLf;
                        }
                    }
                }
                if (m == "ok")
                {
                    m = m + nrocomprobante.ToString();
                }
                return(m);
            }
            catch (Exception)
            {
                throw;
            }


            // string error = r.error;
            //  string desde = r.FeDetResp[0].CbteDesde;
            //  string hasta = r.FeDetResp[0].CbteHasta;
            // string OBSERVACION = r.FeDetResp[0].Observaciones;
        }