/// <remarks/> public void FECAESolicitarAsync(FEAuthRequest Auth, FECAERequest FeCAEReq, object userState) { if ((this.FECAESolicitarOperationCompleted == null)) { this.FECAESolicitarOperationCompleted = new System.Threading.SendOrPostCallback(this.OnFECAESolicitarOperationCompleted); } this.InvokeAsync("FECAESolicitar", new object[] { Auth, FeCAEReq}, this.FECAESolicitarOperationCompleted, userState); }
public FECAEResponse FECAESolicitar(FEAuthRequest Auth, FECAERequest FeCAEReq) { object[] results = this.Invoke("FECAESolicitar", new object[] { Auth, FeCAEReq}); return ((FECAEResponse)(results[0])); }
/// <remarks/> public void FECAESolicitarAsync(FEAuthRequest Auth, FECAERequest FeCAEReq) { this.FECAESolicitarAsync(Auth, FeCAEReq, null); }
public static string EnviarAFIP(out string Cae, out string CaeFecVto, FeaEntidades.InterFacturas.lote_comprobantes lc, Entidades.Sesion Sesion) { try { Cae = ""; CaeFecVto = ""; LoginTicket ticket; ar.gov.afip.wsw.Service objWS; ar.gov.afip.wsfev1.Service objWSFEV1; CrearTicket(Sesion, out ticket, out objWS, out objWSFEV1); ar.gov.afip.wsfev1.FECAERequest objFERequest = new ar.gov.afip.wsfev1.FECAERequest(); ar.gov.afip.wsfev1.FECAECabRequest objFECabeceraRequest = new ar.gov.afip.wsfev1.FECAECabRequest(); int CantidadComprobantes = 1; objFECabeceraRequest.CantReg = CantidadComprobantes; objFECabeceraRequest.CbteTipo = lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante; //Comprobante.Codigo; objFECabeceraRequest.PtoVta = lc.cabecera_lote.punto_de_venta; objFERequest.FeCabReq = objFECabeceraRequest; ///* Obtengo última transacción y sumo 1 */ //FEArn.ar.gov.afip.wsfev1.fe.FEUltNroResponse objFEUltNroResponse = new FEArn.ar.gov.afip.wsw.FEUltNroResponse(); //objFEUltNroResponse = objWS.FEUltNroRequest(ticket.ObjAutorizacion); //Comprobante.IdTransaccion = objFEUltNroResponse.nro.value + 1; //objFECabeceraRequest.id = Comprobante.IdTransaccion; //objFECabeceraRequest.presta_serv = Convert.ToInt32(Comprobante.Presta_serv); //objFERequest.Fecr = objFECabeceraRequest; //FEArn.ar.gov.afip.wsw.FEDetalleRequest[] arrayFEDetalleRequest = new FEArn.ar.gov.afip.wsw.FEDetalleRequest[CantidadComprobantes]; ar.gov.afip.wsfev1.FECAEDetRequest[] arrayFEDetalleRequest = new ar.gov.afip.wsfev1.FECAEDetRequest[CantidadComprobantes]; //FEArn.ar.gov.afip.wsw.FEDetalleRequest objFEDetalleRequest = new FEArn.ar.gov.afip.wsw.FEDetalleRequest(); ar.gov.afip.wsfev1.FECAEDetRequest objFEDetalleRequest = new ar.gov.afip.wsfev1.FECAEDetRequest(); ///* Obtengo último comprobante*/ //FEArn.ar.gov.afip.wsw.FERecuperaLastCMPResponse objFERecuperaLastCMPResponse = new FEArn.ar.gov.afip.wsw.FERecuperaLastCMPResponse(); ar.gov.afip.wsfev1.FERecuperaLastCbteResponse UltNro = new ar.gov.afip.wsfev1.FERecuperaLastCbteResponse(); UltNro = objWSFEV1.FECompUltimoAutorizado(ticket.ObjAutorizacionfev1, lc.cabecera_lote.punto_de_venta, lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante); //UltNro.CbteNro; ar.gov.afip.wsfev1.FETributoResponse arrayFETributoResponse = new ar.gov.afip.wsfev1.FETributoResponse(); arrayFETributoResponse = objWSFEV1.FEParamGetTiposTributos(ticket.ObjAutorizacionfev1); //FEArn.ar.gov.afip.wsw.FELastCMPtype tipoComprobante = new FEArn.ar.gov.afip.wsw.FELastCMPtype(); //tipoComprobante.PtoVta = Comprobante.PuntoVenta; //tipoComprobante.TipoCbte = Comprobante.Codigo; //objFERecuperaLastCMPResponse = objWS.FERecuperaLastCMPRequest(ticket.ObjAutorizacion, tipoComprobante); //Comprobante.IdComprobante = objFERecuperaLastCMPResponse.cbte_nro; objFEDetalleRequest.Concepto = lc.comprobante[0].cabecera.informacion_comprobante.codigo_concepto; //1-Productos 2-Servicios 3-Productos y Servicios objFEDetalleRequest.CbteFch = lc.comprobante[0].cabecera.informacion_comprobante.fecha_emision; // Comprobante.Fecha_cbte.ToString("yyyyMMdd"); if (lc.comprobante[0].cabecera.informacion_comprobante.codigo_concepto != 1) { objFEDetalleRequest.FchServDesde = lc.comprobante[0].cabecera.informacion_comprobante.fecha_serv_desde; // Comprobante.Fecha_serv_desde.ToString("yyyyMMdd"); objFEDetalleRequest.FchServHasta = lc.comprobante[0].cabecera.informacion_comprobante.fecha_serv_hasta; // Comprobante.Fecha_serv_hasta.ToString("yyyyMMdd"); objFEDetalleRequest.FchVtoPago = lc.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento; // Comprobante.Fecha_venc_pago.ToString("yyyyMMdd"); } if (lc.comprobante[0].resumen.codigo_moneda == "PES") { objFEDetalleRequest.ImpNeto = lc.comprobante[0].resumen.importe_total_neto_gravado; // Comprobante.Imp_neto; objFEDetalleRequest.ImpOpEx = lc.comprobante[0].resumen.importe_operaciones_exentas; // Comprobante.Imp_op_ex; objFEDetalleRequest.ImpTotConc = lc.comprobante[0].resumen.importe_total_concepto_no_gravado; // Comprobante.Imp_tot_conc; objFEDetalleRequest.ImpTotal = lc.comprobante[0].resumen.importe_total_factura; // Comprobante.Imp_total; objFEDetalleRequest.ImpIVA = lc.comprobante[0].resumen.impuesto_liq; // Comprobante.Impto_liq; objFEDetalleRequest.impto_liq_rni = lc.comprobante[0].resumen.impuesto_liq_rni; } else if (lc.comprobante[0].resumen.codigo_moneda == "DOL") { objFEDetalleRequest.ImpNeto = lc.comprobante[0].resumen.importes_moneda_origen.importe_total_neto_gravado; // Comprobante.Imp_neto; objFEDetalleRequest.ImpOpEx = lc.comprobante[0].resumen.importes_moneda_origen.importe_operaciones_exentas; // Comprobante.Imp_op_ex; objFEDetalleRequest.ImpTotConc = lc.comprobante[0].resumen.importes_moneda_origen.importe_total_concepto_no_gravado; // Comprobante.Imp_tot_conc; objFEDetalleRequest.ImpTotal = lc.comprobante[0].resumen.importes_moneda_origen.importe_total_factura; // Comprobante.Imp_total; objFEDetalleRequest.ImpIVA = lc.comprobante[0].resumen.importes_moneda_origen.impuesto_liq; // Comprobante.Impto_liq; objFEDetalleRequest.impto_liq_rni = lc.comprobante[0].resumen.importes_moneda_origen.impuesto_liq_rni; } else { throw new Exception("Moneda no permitida: " + lc.comprobante[0].resumen.codigo_moneda.ToString()); } objFEDetalleRequest.DocNro = lc.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio; // Comprobante.Nro_doc; //objFEDetalleRequest.punto_vta = Comprobante.PuntoVenta; //objFEDetalleRequest.tipo_cbte = Comprobante.Codigo; objFEDetalleRequest.DocTipo = lc.comprobante[0].cabecera.informacion_comprador.codigo_doc_identificatorio; // Comprobante.TipoDoc; objFEDetalleRequest.MonId = lc.comprobante[0].resumen.codigo_moneda; objFEDetalleRequest.MonCotiz = lc.comprobante[0].resumen.tipo_de_cambio; string TipoComp = lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString(); //Referencias if (lc.comprobante[0].cabecera.informacion_comprobante.referencias != null) { if (lc.comprobante[0].cabecera.informacion_comprobante.referencias.Length > 0) { int CantReferenciasAFIP = 0; for (int j = 0; j < lc.comprobante[0].cabecera.informacion_comprobante.referencias.Length; j++) { if (lc.comprobante[0].cabecera.informacion_comprobante.referencias[j] == null) { break; } if (lc.comprobante[0].cabecera.informacion_comprobante.referencias[j].tipo_comprobante_afip == "S") { CantReferenciasAFIP += 1; } } if (CantReferenciasAFIP != 0) { objFEDetalleRequest.CbtesAsoc = new ar.gov.afip.wsfev1.CbteAsoc[CantReferenciasAFIP]; } CantReferenciasAFIP = 0; for (int j = 0; j < lc.comprobante[0].cabecera.informacion_comprobante.referencias.Length; j++) { if (lc.comprobante[0].cabecera.informacion_comprobante.referencias[j] == null) { break; } if (lc.comprobante[0].cabecera.informacion_comprobante.referencias[j].tipo_comprobante_afip == "S") { objFEDetalleRequest.CbtesAsoc[CantReferenciasAFIP] = new ar.gov.afip.wsfev1.CbteAsoc(); objFEDetalleRequest.CbtesAsoc[CantReferenciasAFIP].Tipo = lc.comprobante[0].cabecera.informacion_comprobante.referencias[j].codigo_de_referencia; objFEDetalleRequest.CbtesAsoc[CantReferenciasAFIP].PtoVta = Convert.ToInt32(lc.comprobante[0].cabecera.informacion_comprobante.referencias[j].dato_de_referencia.Substring(0, 4)); objFEDetalleRequest.CbtesAsoc[CantReferenciasAFIP].Nro = Convert.ToInt32(lc.comprobante[0].cabecera.informacion_comprobante.referencias[j].dato_de_referencia.Substring(5, 8)); CantReferenciasAFIP += 1; } } } } //Impuestos double impTrib = 0; if (lc.comprobante[0].resumen.impuestos.Length > 0) { if (lc.comprobante[0].resumen.impuestos[0] != null) { int CantTrib = 0; int CantAlicIVA = 0; for (int j = 0; j < lc.comprobante[0].resumen.impuestos.Length; j++) { if (lc.comprobante[0].resumen.impuestos[j].codigo_impuesto != 1) { CantTrib += 1; } else { CantAlicIVA += 1; } } if (CantTrib != 0) { objFEDetalleRequest.Tributos = new ar.gov.afip.wsfev1.Tributo[CantTrib]; } CantTrib = 0; ar.gov.afip.wsfev1.AlicIva[] ivas = new ar.gov.afip.wsfev1.AlicIva[CantAlicIVA]; CantAlicIVA = 0; for (int j = 0; j < lc.comprobante[0].resumen.impuestos.Length; j++) { switch (lc.comprobante[0].resumen.impuestos[j].codigo_impuesto) { case 1: double baseImponible = 0; ivas[CantAlicIVA] = new ar.gov.afip.wsfev1.AlicIva(); //No funciona por el redondeo. //"PES" //baseImponible += Math.Round((lc.comprobante[0].resumen.impuestos[j].importe_impuesto * 100) / lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto, 2); //"DOL" //baseImponible += Math.Round((lc.comprobante[0].resumen.impuestos[j].importe_impuesto_moneda_origen * 100) / lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto, 2); //Obtener o Calcular la base imponible if (lc.comprobante[0].resumen.codigo_moneda == "PES") { baseImponible = lc.comprobante[0].resumen.impuestos[j].base_imponible; } else { baseImponible = lc.comprobante[0].resumen.impuestos[j].base_imponible_moneda_origen; } if (baseImponible == 0) { baseImponible = CalcularBaseImponible(lc, lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto); } //Informar la base imponible y el código de impuesto según la alícuota. if (lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto == 0) { ivas[CantAlicIVA].BaseImp = baseImponible; ivas[CantAlicIVA].Id = 3; } if (lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto == 10.5) { ivas[CantAlicIVA].BaseImp = baseImponible; ivas[CantAlicIVA].Id = 4; } else if (lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto == 21) { ivas[CantAlicIVA].BaseImp = baseImponible; ivas[CantAlicIVA].Id = 5; } else if (lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto == 27) { ivas[CantAlicIVA].BaseImp = baseImponible; ivas[CantAlicIVA].Id = 6; } else if (lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto == 5) { ivas[CantAlicIVA].BaseImp = baseImponible; ivas[CantAlicIVA].Id = 8; } else if (lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto == 2.5) { ivas[CantAlicIVA].BaseImp = baseImponible; ivas[CantAlicIVA].Id = 9; } else { throw new Exception("Problemas para encontrar el código de la alícuota cuyo porcentaje es: " + lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto.ToString()); } //Importe del impuesto if (lc.comprobante[0].resumen.codigo_moneda == "PES") { ivas[CantAlicIVA].Importe = Math.Round(lc.comprobante[0].resumen.impuestos[j].importe_impuesto, 2); } else { ivas[CantAlicIVA].Importe = Math.Round(lc.comprobante[0].resumen.impuestos[j].importe_impuesto_moneda_origen, 2); } CantAlicIVA += 1; break; case 2: //Internos case 3: //Otros case 4: //Nacionales case 5: //IB - Provinciales case 6: //Municipales objFEDetalleRequest.Tributos[CantTrib] = new ar.gov.afip.wsfev1.Tributo(); objFEDetalleRequest.Tributos[CantTrib].Alic = lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto; objFEDetalleRequest.Tributos[CantTrib].BaseImp = 0; //Math.Round((lc.comprobante[0].resumen.impuestos[j].importe_impuesto * 100) / lc.comprobante[0].resumen.impuestos[j].porcentaje_impuesto, 2); if (lc.comprobante[0].resumen.impuestos[j].codigo_impuesto == 2) { objFEDetalleRequest.Tributos[CantTrib].Id = 4; //"AFIP - Impuestos Internos" } else if (lc.comprobante[0].resumen.impuestos[j].codigo_impuesto == 3) { objFEDetalleRequest.Tributos[CantTrib].Id = 99; //"AFIP - Otro" } else if (lc.comprobante[0].resumen.impuestos[j].codigo_impuesto == 4) { objFEDetalleRequest.Tributos[CantTrib].Id = 1; //"AFIP - Impuestos nacionales" } else if (lc.comprobante[0].resumen.impuestos[j].codigo_impuesto == 5) { objFEDetalleRequest.Tributos[CantTrib].Id = 2; //"AFIP - Impuestos provinciales" } else if (lc.comprobante[0].resumen.impuestos[j].codigo_impuesto == 6) { objFEDetalleRequest.Tributos[CantTrib].Id = 3; //"AFIP - Impuestos municipales" } if (lc.comprobante[0].resumen.codigo_moneda == "PES") { objFEDetalleRequest.Tributos[CantTrib].Importe = Math.Round(lc.comprobante[0].resumen.impuestos[j].importe_impuesto, 2); } else { objFEDetalleRequest.Tributos[CantTrib].Importe = Math.Round(lc.comprobante[0].resumen.impuestos[j].importe_impuesto_moneda_origen, 2); } objFEDetalleRequest.Tributos[CantTrib].Desc = lc.comprobante[0].resumen.impuestos[j].descripcion; if (lc.comprobante[0].resumen.codigo_moneda == "PES") { impTrib += Math.Round(lc.comprobante[0].resumen.impuestos[j].importe_impuesto, 2); } else { impTrib += Math.Round(lc.comprobante[0].resumen.impuestos[j].importe_impuesto_moneda_origen, 2); } CantTrib += 1; break; default: throw new Exception("Problemas para enviar el comprobante, código de impuesto incorrecto o inexistente. Código: " + lc.comprobante[0].resumen.impuestos[j].codigo_impuesto.ToString()); } } if (ivas != null && ivas.Length > 0) { objFEDetalleRequest.Iva = ivas; } } } objFEDetalleRequest.ImpTrib = impTrib; //Total de tributos; //objFEDetalleRequest.Tributos arrayFEDetalleRequest[0] = objFEDetalleRequest; //for (int c = 0; c < CantidadComprobantes; c++) //{ //Comprobante.IdComprobante = Comprobante.IdComprobante + 1; objFEDetalleRequest.CbteDesde = lc.comprobante[0].cabecera.informacion_comprobante.numero_comprobante; //Comprobante.IdComprobante; objFEDetalleRequest.CbteHasta = lc.comprobante[0].cabecera.informacion_comprobante.numero_comprobante; //Comprobante.IdComprobante; arrayFEDetalleRequest[0] = objFEDetalleRequest; //} objFERequest.FeDetReq = arrayFEDetalleRequest; string loteXML = ""; SerializarC(out loteXML, objFERequest); try { Funciones.GrabarLogTexto("Consultar.txt", loteXML); } catch { } ar.gov.afip.wsfev1.FECAEResponse objFEResponse = new ar.gov.afip.wsfev1.FECAEResponse(); objFEResponse = objWSFEV1.FECAESolicitar(ticket.ObjAutorizacionfev1, objFERequest); string respuesta = ""; if (objFEResponse.Errors == null) { //if (objFEResponse.FeCabResp.Resultado == "A") //{ for (int i = 0; i < objFEResponse.FeDetResp.Length; i++) { respuesta += "Resultado: " + objFEResponse.FeDetResp[i].Resultado + "\\n"; if (objFEResponse.FeDetResp[i].Observaciones != null) { for (int j = 0; j < objFEResponse.FeDetResp[i].Observaciones.Length; j++) { respuesta += objFEResponse.FeDetResp[i].Observaciones[j].Code.ToString() + "-" + objFEResponse.FeDetResp[i].Observaciones[j].Msg + "\\n"; } } respuesta += "CAE: " + objFEResponse.FeDetResp[i].CAE; Cae = objFEResponse.FeDetResp[i].CAE; CaeFecVto = objFEResponse.FeDetResp[i].CAEFchVto; } //} } else { for (int i = 0; i < objFEResponse.Errors.Length; i++) { respuesta += objFEResponse.Errors[i].Code + "-" + objFEResponse.Errors[i].Msg + ".\\n "; if (objFEResponse.Errors[i].Code == 10016) { try { respuesta += "Ultimo nro. de comprobante enviado: " + UltNro.CbteNro + ".\\n"; } catch { } } } } return respuesta; } catch (Exception ex) { throw new Exception(ex.Message); } }