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); }
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; } }
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; }