public static string EnviarAFIPExpo(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.wsfexv1.Service objWSFEXV1; CrearTicketExpo(Sesion, out ticket, out objWS, out objWSFEXV1); ar.gov.afip.wsfexv1.ClsFEXRequest objFECabeceraRequest = new ar.gov.afip.wsfexv1.ClsFEXRequest(); objFECabeceraRequest.Id = lc.cabecera_lote.id_lote; objFECabeceraRequest.Cbte_Tipo = Convert.ToInt16(lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante); objFECabeceraRequest.Punto_vta = Convert.ToInt16(lc.cabecera_lote.punto_de_venta); objFECabeceraRequest.Cbte_nro = lc.comprobante[0].cabecera.informacion_comprobante.numero_comprobante; objFECabeceraRequest.Fecha_cbte = lc.comprobante[0].cabecera.informacion_comprobante.fecha_emision; objFECabeceraRequest.Tipo_expo = Convert.ToInt16(lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.tipo_exportacion); objFECabeceraRequest.Dst_cmp = Convert.ToInt16(lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.destino_comprobante); objFECabeceraRequest.Incoterms = lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.incoterms; objFECabeceraRequest.Incoterms_Ds = lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.descripcion_incoterms; if (lc.comprobante[0].extensiones != null) { if (lc.comprobante[0].extensiones.extensiones_camara_facturas != null && lc.comprobante[0].extensiones.extensiones_camara_facturasSpecified == true) { objFECabeceraRequest.Idioma_cbte = Convert.ToInt16(lc.comprobante[0].extensiones.extensiones_camara_facturas.id_idioma); } } objFECabeceraRequest.Cuit_pais_cliente = lc.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio; objFECabeceraRequest.Cliente = lc.comprobante[0].cabecera.informacion_comprador.denominacion; //No es obligatorio si se asigna el Cuit_pais_cliente. //objFECabeceraRequest.Id_impositivo = ""; objFECabeceraRequest.Domicilio_cliente = lc.comprobante[0].cabecera.informacion_comprador.domicilio_calle + " " + lc.comprobante[0].cabecera.informacion_comprador.domicilio_numero; objFECabeceraRequest.Forma_pago = lc.comprobante[0].cabecera.informacion_comprobante.condicion_de_pago; //No son obligatorias. String(c2000) //objFECabeceraRequest.Obs_comerciales = "" //No son obligatorias. String(c1000) //objFECabeceraRequest.Obs = ""; //Clave de identificación tributaria del comprador. No es obligatorio si se ingresó valor en el campo Cuit_pais_cliente. //objFECabeceraRequest.Id_impositivo = ""; if (lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.permiso_existente == "S") { objFECabeceraRequest.Permiso_existente = lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.permiso_existente; if (lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.permisos != null && lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.permisos.Length > 0) { int CantidadPermisos = 0; foreach (FeaEntidades.InterFacturas.permisos pe in lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.permisos) { if (pe == null) { break; } CantidadPermisos += 1; } if (CantidadPermisos != 0) { ar.gov.afip.wsfexv1.Permiso[] arrayFEPermisosRequest = new ar.gov.afip.wsfexv1.Permiso[CantidadPermisos]; for (int i = 0; i < CantidadPermisos; i++) { ar.gov.afip.wsfexv1.Permiso p = new ar.gov.afip.wsfexv1.Permiso(); p.Id_permiso = lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.permisos[i].id_permiso; p.Dst_merc = lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.permisos[i].destino_mercaderia; arrayFEPermisosRequest[i] = p; } objFECabeceraRequest.Permisos = arrayFEPermisosRequest; } } } else if (lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.permiso_existente == "N") { objFECabeceraRequest.Permiso_existente = lc.comprobante[0].cabecera.informacion_comprobante.informacion_exportacion.permiso_existente; } else { objFECabeceraRequest.Permiso_existente = ""; } if (lc.comprobante[0].cabecera.informacion_comprobante.referencias != null && lc.comprobante[0].cabecera.informacion_comprobante.referencias.Length > 0) { int CantidadReferencias = 0; foreach (FeaEntidades.InterFacturas.informacion_comprobanteReferencias re in lc.comprobante[0].cabecera.informacion_comprobante.referencias) { if (re == null) { break; } CantidadReferencias += 1; } if (CantidadReferencias != 0) { ar.gov.afip.wsfexv1.Cmp_asoc[] arrayFEReferenciasRequest = new ar.gov.afip.wsfexv1.Cmp_asoc[CantidadReferencias]; for (int i = 0; i < CantidadReferencias; i++) { //if (lc.comprobante[0].cabecera.informacion_comprobante.referencias[i].tipo_comprobante_afip == "S") //{ ar.gov.afip.wsfexv1.Cmp_asoc r = new ar.gov.afip.wsfexv1.Cmp_asoc(); r.Cbte_tipo = Convert.ToInt16(lc.comprobante[0].cabecera.informacion_comprobante.referencias[i].codigo_de_referencia); r.Cbte_punto_vta = Convert.ToInt16(lc.comprobante[0].cabecera.informacion_comprobante.referencias[i].dato_de_referencia.Substring(0, 4)); r.Cbte_nro = Convert.ToInt32(lc.comprobante[0].cabecera.informacion_comprobante.referencias[i].dato_de_referencia.Substring(5, 8)); arrayFEReferenciasRequest[i] = r; //} } objFECabeceraRequest.Cmps_asoc = arrayFEReferenciasRequest; } } ///* Obtengo último comprobante*/ //ar.gov.afip.wsfexv1.ClsFEX_LastCMP lastCMP = new ar.gov.afip.wsfexv1.ClsFEX_LastCMP(); //lastCMP.Cuit = Convert.ToInt64(Sesion.Cuit.Nro); //lastCMP.Sign = ticket.ObjAutorizacionfexv1.Sign; //lastCMP.Token = ticket.ObjAutorizacionfexv1.Token; //lastCMP.Cbte_Tipo = Convert.ToInt16(lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante); //lastCMP.Pto_venta = Convert.ToInt16(lc.comprobante[0].cabecera.informacion_comprobante.punto_de_venta); //ar.gov.afip.wsfexv1.FEXResponseLast_CMP lastcmpResponse = objWSFEXV1.FEXGetLast_CMP(lastCMP); //long UltNro = lastcmpResponse.FEXResult_LastCMP.Cbte_nro; //Consultar comprobante //ar.gov.afip.wsfexv1.ClsFEXGetCMP getCMP = new ar.gov.afip.wsfexv1.ClsFEXGetCMP(); //getCMP.Cbte_tipo = Convert.ToInt16(lc.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante); //getCMP.Punto_vta = Convert.ToInt16(lc.comprobante[0].cabecera.informacion_comprobante.punto_de_venta); //getCMP.Cbte_nro = lc.comprobante[0].cabecera.informacion_comprobante.numero_comprobante; //ar.gov.afip.wsfexv1.FEXGetCMPResponse cmpResponse = objWSFEXV1.FEXGetCMP(ticket.ObjAutorizacionfexv1, getCMP); //Código de moneda. Consultar método FEXGetPARAM_MON para valores permitidos. objFECabeceraRequest.Moneda_Id = lc.comprobante[0].resumen.codigo_moneda; objFECabeceraRequest.Moneda_ctz = Convert.ToDecimal(Math.Round(lc.comprobante[0].resumen.tipo_de_cambio, 6)); if (lc.comprobante[0].resumen.codigo_moneda == "PES") { objFECabeceraRequest.Imp_total = Convert.ToDecimal(Math.Round(lc.comprobante[0].resumen.importe_total_factura, 3)); } else if (lc.comprobante[0].resumen.codigo_moneda == "DOL") { objFECabeceraRequest.Imp_total = Convert.ToDecimal(Math.Round(lc.comprobante[0].resumen.importes_moneda_origen.importe_total_factura, 3)); } else { throw new Exception("Moneda no permitida: " + lc.comprobante[0].resumen.codigo_moneda.ToString()); } //Renglones int CantidadLineas = 0; if (lc.comprobante[0].detalle.linea != null) { foreach (FeaEntidades.InterFacturas.linea li in lc.comprobante[0].detalle.linea) { if (li == null) { break; } CantidadLineas += 1; } if (CantidadLineas != 0) { ar.gov.afip.wsfexv1.Item[] items = new ar.gov.afip.wsfexv1.Item[CantidadLineas]; for (int j = 0; j < CantidadLineas; j++) { ar.gov.afip.wsfexv1.Item item = new ar.gov.afip.wsfexv1.Item(); item.Pro_codigo = lc.comprobante[0].detalle.linea[j].codigo_producto_vendedor; if (lc.comprobante[0].detalle.linea[j].descripcion.Substring(0, 1) == "%") { item.Pro_ds = RN.Funciones.HexToString(lc.comprobante[0].detalle.linea[j].descripcion); } else { item.Pro_ds = lc.comprobante[0].detalle.linea[j].descripcion; } if (lc.comprobante[0].detalle.linea[j].cantidadSpecified == true) { item.Pro_qty = Convert.ToDecimal(lc.comprobante[0].detalle.linea[j].cantidad); } item.Pro_umed = Convert.ToInt32(lc.comprobante[0].detalle.linea[j].unidad); if (lc.comprobante[0].resumen.codigo_moneda == "PES") { if (lc.comprobante[0].detalle.linea[j].precio_unitarioSpecified == true) { item.Pro_precio_uni = Convert.ToDecimal(lc.comprobante[0].detalle.linea[j].precio_unitario); } item.Pro_total_item = Convert.ToDecimal(lc.comprobante[0].detalle.linea[j].importe_total_articulo); } else { if (lc.comprobante[0].detalle.linea[j].importes_moneda_origen.precio_unitarioSpecified == true) { item.Pro_precio_uni = Convert.ToDecimal(lc.comprobante[0].detalle.linea[j].importes_moneda_origen.precio_unitario); } item.Pro_total_item = Convert.ToDecimal(lc.comprobante[0].detalle.linea[j].importes_moneda_origen.importe_total_articulo); } items[j] = item; } objFECabeceraRequest.Items = items; } } string loteXML = ""; SerializarCExpo(out loteXML, objFECabeceraRequest); try { Funciones.GrabarLogTexto("Consultar.txt", loteXML); } catch { } ar.gov.afip.wsfexv1.FEXResponseAuthorize objFEResponse = new ar.gov.afip.wsfexv1.FEXResponseAuthorize(); objFEResponse = objWSFEXV1.FEXAuthorize(ticket.ObjAutorizacionfexv1, objFECabeceraRequest); string respuesta = ""; if (objFEResponse.FEXErr == null || objFEResponse.FEXErr.ErrMsg == "OK") { respuesta += "Resultado: " + objFEResponse.FEXResultAuth.Resultado + "\\n"; if (objFEResponse.FEXResultAuth.Motivos_Obs != null && objFEResponse.FEXResultAuth.Motivos_Obs != "") { respuesta += objFEResponse.FEXResultAuth.Motivos_Obs + "\\n"; } respuesta += "CAE: " + objFEResponse.FEXResultAuth.Cae; Cae = objFEResponse.FEXResultAuth.Cae; CaeFecVto = objFEResponse.FEXResultAuth.Fch_venc_Cae; } else { respuesta += objFEResponse.FEXErr.ErrCode + "-" + objFEResponse.FEXErr.ErrMsg + ".\\n "; } return respuesta; } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <remarks/> public void FEXAuthorizeAsync(ClsFEXAuthRequest Auth, ClsFEXRequest Cmp) { this.FEXAuthorizeAsync(Auth, Cmp, null); }
/// <remarks/> public void FEXAuthorizeAsync(ClsFEXAuthRequest Auth, ClsFEXRequest Cmp, object userState) { if ((this.FEXAuthorizeOperationCompleted == null)) { this.FEXAuthorizeOperationCompleted = new System.Threading.SendOrPostCallback(this.OnFEXAuthorizeOperationCompleted); } this.InvokeAsync("FEXAuthorize", new object[] { Auth, Cmp}, this.FEXAuthorizeOperationCompleted, userState); }
public FEXResponseAuthorize FEXAuthorize(ClsFEXAuthRequest Auth, ClsFEXRequest Cmp) { object[] results = this.Invoke("FEXAuthorize", new object[] { Auth, Cmp}); return ((FEXResponseAuthorize)(results[0])); }