protected void btnGetCAE_Click(object sender, EventArgs e) { try { Settings oSettings = new Settings(ddlEmpresa.SelectedItem.Value); AfipConnection afipConnFex = new AfipConnection("wsfex", oSettings); AfipConnection afipConnFe = new AfipConnection("wsfe", oSettings); AfipConnection afipConnFeB = new AfipConnection("wsbfe", oSettings); wsfex.Service fexService = new wsfex.Service(); fexService.Url = oSettings.UrlAFIPwsfex; wsfe.Service feService = new wsfe.Service(); feService.Url = oSettings.UrlAFIPwsfe; wsfeb.Service febService = new wsfeb.Service(); febService.Url = oSettings.UrlAFIPwsbfe; wsfex.ClsFEX_LastCMP afipLastEx = new wsfex.ClsFEX_LastCMP(); wsfex.ClsFEXAuthRequest objFEXAuthRequest = new wsfex.ClsFEXAuthRequest(); wsfex.FEXGetCMPResponse objFEXGetCMPResponse = new wsfex.FEXGetCMPResponse(); wsfex.ClsFEXRequest objFEXRequest = new wsfex.ClsFEXRequest(); wsfex.FEXResponseAuthorize fexResponse = new wsfex.FEXResponseAuthorize(); wsfe.FEAuthRequest objFEAuthRequest = new wsfe.FEAuthRequest(); wsfe.FECompConsultaReq objFERequest = new wsfe.FECompConsultaReq(); wsfe.FECompConsultaResponse feResponse = new wsfe.FECompConsultaResponse(); //wsfe.FELastCMPtype objFELastCMType = new wsfe.FELastCMPtype(); //wsfe.FEConsultaCAEResponse objFEConsultaCAEResponse = new wsfe.FEConsultaCAEResponse(); //wsfe.FEConsultaCAEReq objCMPFE = new wsfe.FEConsultaCAEReq(); //wsfe.FEResponse feResponse = new wsfe.FEResponse(); //wsfe.FERequest objFERequest = new wsfe.FERequest(); wsfeb.BFEGetCMPResponse objBFEGetCMPResponse = new wsfeb.BFEGetCMPResponse(); wsfeb.ClsBFEGetCMP objCMP = new wsfeb.ClsBFEGetCMP(); wsfeb.ClsBFEAuthRequest objBFEAuthRequest = new wsfeb.ClsBFEAuthRequest(); DataTable returnDTable = new DataTable(); SQLEngine sqlEngine = new SQLEngine(); switch (ddlTipoComprobanteCAE.SelectedValue) { case "1": case "2": case "3": case "6": case "7": case "8": lblErrorMessages.Text = ""; if (afipConnFeB.ConnectionErrorDescription == string.Empty) { objBFEAuthRequest.Cuit = afipConnFeB.Cuit; objBFEAuthRequest.Sign = afipConnFeB.Sign; objBFEAuthRequest.Token = afipConnFeB.Token; objCMP.Punto_vta = Convert.ToInt16(ddlSucursalCAE.SelectedValue); objCMP.Tipo_cbte = Convert.ToInt16(ddlTipoComprobanteCAE.SelectedValue); objCMP.Cbte_nro = Convert.ToInt64(txtNroComprobante.Text); objBFEGetCMPResponse = febService.BFEGetCMP(objBFEAuthRequest, objCMP); if (objBFEGetCMPResponse.BFEResultGet != null && objBFEGetCMPResponse.BFEResultGet.Fch_venc_Cae != null) { lblCAE.Text = objBFEGetCMPResponse.BFEResultGet.Cae; lblVto.Text = objBFEGetCMPResponse.BFEResultGet.Fch_venc_Cae;//objBFEGetCMPResponse.BFEResultGet.Fch_venc_Cae.Substring(3, 2) + "/" + objBFEGetCMPResponse.BFEResultGet.Fch_venc_Cae.Substring(4, 2) + "/" + objBFEGetCMPResponse.BFEResultGet.Fch_venc_Cae.Substring(0, 4); } else { objFEAuthRequest.Cuit = afipConnFe.Cuit; objFEAuthRequest.Sign = afipConnFe.Sign; objFEAuthRequest.Token = afipConnFe.Token; objFERequest.CbteNro = Convert.ToInt64(txtNroComprobante.Text); objFERequest.CbteTipo = Convert.ToInt16(ddlTipoComprobanteCAE.SelectedValue); objFERequest.PtoVta = Convert.ToInt16(ddlSucursalCAE.SelectedValue); feResponse = feService.FECompConsultar(objFEAuthRequest, objFERequest); if (feResponse.ResultGet != null && feResponse.ResultGet.CodAutorizacion != null) { lblCAE.Text = feResponse.ResultGet.CodAutorizacion; lblVto.Text = feResponse.ResultGet.FchVto; //.Substring(6, 2) + "/" + feResponse.FecResp.fecha_cae.Substring(4, 2) + "/" + feResponse.FecResp.fecha_cae.Substring(0, 4); ; } else { lblCAE.Text = "Comprobante inexistente."; lblVto.Text = "XX/XX/XXXX"; } ////si es bienes y servicios hay que reprocesar para obtener CAE, lo busco en la base //returnDTable = sqlEngine.GetItems("cbtecabecera", "*", "NroComprobanteDesde = '" + FillWithCeros(txtNroComprobante.Text) + "' and PuntoVenta = '" + ddlSucursalCAE.SelectedValue + "' and TipoComprobante = '" + ddlTipoComprobanteCAE.SelectedValue + "'", 0); //if (returnDTable.Rows.Count > 0) //{ // if (returnDTable.Rows[0]["BatchUniqueId"].ToString() != string.Empty) // { // wsfe.FECabeceraRequest objFECabeceraRequest = new wsfe.FECabeceraRequest(); // objFECabeceraRequest.cantidadreg = 0; // objFECabeceraRequest.id = Convert.ToInt64(returnDTable.Rows[0]["BatchUniqueId"].ToString()); // objFECabeceraRequest.presta_serv = 0; // wsfe.FEDetalleRequest[] aObjFEDetalleRequest = new wsfe.FEDetalleRequest[1]; // wsfe.FEDetalleRequest objFEDetalleRequest = new wsfe.FEDetalleRequest(); // objFEDetalleRequest.tipo_doc = Convert.ToInt16(returnDTable.Rows[0]["CompradorCodigoDocumento"]); // objFEDetalleRequest.nro_doc = (long)Convert.ToDouble(returnDTable.Rows[0]["CompradorNroDocumento"]); // objFEDetalleRequest.tipo_cbte = Convert.ToInt16(returnDTable.Rows[0]["TipoComprobante"]); // objFEDetalleRequest.punto_vta = Convert.ToInt16(returnDTable.Rows[0]["PuntoVenta"]); // objFEDetalleRequest.cbt_desde = (long)Convert.ToDouble(returnDTable.Rows[0]["NroComprobanteDesde"]); // objFEDetalleRequest.cbt_hasta = (long)Convert.ToDouble(returnDTable.Rows[0]["NroComprobanteHasta"]); // objFEDetalleRequest.imp_total = Convert.ToDouble(returnDTable.Rows[0]["Importe"]); // objFEDetalleRequest.imp_tot_conc = Convert.ToDouble(returnDTable.Rows[0]["ImporteNoGravado"]); // objFEDetalleRequest.imp_neto = Convert.ToDouble(returnDTable.Rows[0]["ImporteGravado"]); // objFEDetalleRequest.impto_liq = Convert.ToDouble(returnDTable.Rows[0]["ImporteImpuestoLiquidado"]); // objFEDetalleRequest.impto_liq_rni = Convert.ToDouble(returnDTable.Rows[0]["ImporteRNI_Percepcion"]); // objFEDetalleRequest.imp_op_ex = Convert.ToDouble(returnDTable.Rows[0]["ImporteExento"]); // // Las fechas deben venir en formato "YYYY-MM-DD" // objFEDetalleRequest.fecha_cbte = Convert.ToDateTime(returnDTable.Rows[0]["FechaComprobante"]).ToString("yyyyMMdd"); // objFEDetalleRequest.fecha_serv_desde = Convert.ToDateTime(returnDTable.Rows[0]["FechaDesdeServicioFacturado"]).ToString("yyyyMMdd"); // objFEDetalleRequest.fecha_serv_hasta = Convert.ToDateTime(returnDTable.Rows[0]["FechaHastaServicioFacturado"]).ToString("yyyyMMdd"); // objFEDetalleRequest.fecha_venc_pago = Convert.ToDateTime(returnDTable.Rows[0]["FechaVencimientoPago"]).ToString("yyyyMMdd"); // aObjFEDetalleRequest[0] = objFEDetalleRequest; // objFERequest.Fecr = objFECabeceraRequest; // objFERequest.Fedr = aObjFEDetalleRequest; // feResponse = feService.FEAutRequest(objFEAuthRequest, objFERequest); // if (feResponse.FedResp != null && feResponse.FedResp[0].cae != null) // { // lblCAE.Text = feResponse.FedResp[0].cae; // lblVto.Text = feResponse.FedResp[0].fecha_vto; //.Substring(6, 2) + "/" + feResponse.FecResp.fecha_cae.Substring(4, 2) + "/" + feResponse.FecResp.fecha_cae.Substring(0, 4); ; // } // else // { // lblCAE.Text = "Comprobante inexistente."; // lblVto.Text = "XX/XX/XXXX"; // } // } // else // { // lblCAE.Text = "Comprobante sin BatchUniqueId."; // lblVto.Text = "XX/XX/XXXX"; // } //} //else //{ // lblCAE.Text = "Comprobante inexistente."; // lblVto.Text = "XX/XX/XXXX"; //} } } else { lblNumCbte.Text = "XXXXXXXX"; Page.ClientScript.RegisterStartupScript(this.GetType(), "Popup", "alert('Error de login con AFIP, vuelva a intentar la operacion en unos minutos.')", true); } break; case "19": case "20": case "21": lblErrorMessages.Text = ""; if (afipConnFex.ConnectionErrorDescription == string.Empty) { //si es bienes y servicios hay que reprocesar para obtener CAE, lo busco en la base returnDTable = sqlEngine.GetItems("cbtecabecera", "*", "NroComprobanteDesde = '" + FillWithCeros(txtNroComprobante.Text) + "' and PuntoVenta = '" + ddlSucursalCAE.SelectedValue + "' and TipoComprobante = '" + ddlTipoComprobanteCAE.SelectedValue + "' and BatchUniqueId IS NOT NULL", 0); objFEXAuthRequest.Cuit = afipConnFex.Cuit; objFEXAuthRequest.Sign = afipConnFex.Sign; objFEXAuthRequest.Token = afipConnFex.Token; if (returnDTable.Rows.Count > 0) { if (returnDTable.Rows[0]["BatchUniqueId"].ToString() != string.Empty) { objFEXRequest.Id = (long)Convert.ToDouble(returnDTable.Rows[0]["BatchUniqueId"]); objFEXRequest.Tipo_cbte = Convert.ToInt16(returnDTable.Rows[0]["TipoComprobante"]); objFEXRequest.Punto_vta = Convert.ToInt16(returnDTable.Rows[0]["PuntoVenta"]); objFEXRequest.Cbte_nro = (long)Convert.ToDouble(returnDTable.Rows[0]["NroComprobanteDesde"]); objFEXRequest.Tipo_expo = Convert.ToInt16(returnDTable.Rows[0]["TipoExportacion"]); objFEXRequest.Permiso_existente = returnDTable.Rows[0]["PermisoExistente"].ToString(); objFEXRequest.Dst_cmp = Convert.ToInt16(sqlEngine.ObtenerEquivalencia("EquivAFIPPais", ddlEmpresa.SelectedItem.Value, returnDTable.Rows[0]["PaisComprador"].ToString())); objFEXRequest.Cliente = returnDTable.Rows[0]["CompradorRazonSocial"].ToString(); objFEXRequest.Domicilio_cliente = returnDTable.Rows[0]["CompradorDireccion"].ToString(); objFEXRequest.Moneda_Id = returnDTable.Rows[0]["CodigoMoneda"].ToString(); objFEXRequest.Moneda_ctz = Convert.ToDouble(returnDTable.Rows[0]["TasaCambio"]); objFEXRequest.Imp_total = Convert.ToDouble(returnDTable.Rows[0]["ImporteMonedaFacturacion"]); objFEXRequest.Idioma_cbte = Convert.ToInt16(returnDTable.Rows[0]["Idioma"]); objFEXRequest.Id_impositivo = returnDTable.Rows[0]["CompradorNroDocumento"].ToString(); objFEXRequest.Fecha_cbte = Convert.ToDateTime(returnDTable.Rows[0]["FechaComprobante"]).ToString("yyyyMMdd"); objFEXRequest.Forma_pago = returnDTable.Rows[0]["FormaPagoDescrip"].ToString(); objFEXRequest.Obs = returnDTable.Rows[0]["Observaciones"].ToString(); objFEXRequest.Obs_comerciales = returnDTable.Rows[0]["ObservacionesComerciales"].ToString(); objFEXRequest.Incoterms = returnDTable.Rows[0]["IncoTerms"].ToString(); fexResponse = fexService.FEXAuthorize(objFEXAuthRequest, objFEXRequest); if (fexResponse.FEXResultAuth != null && fexResponse.FEXResultAuth.Cae != null) { lblCAE.Text = fexResponse.FEXResultAuth.Cae; lblVto.Text = fexResponse.FEXResultAuth.Fch_venc_Cae;//.Substring(6, 2) + "/" + fexResponse.FEXResultAuth.Fch_venc_Cae.Substring(4, 2) + "/" + fexResponse.FEXResultAuth.Fch_venc_Cae.Substring(0, 4); } else { lblCAE.Text = "Comprobante inexistente."; lblVto.Text = "XX/XX/XXXX"; } } else { lblCAE.Text = "Comprobante sin BatchUniqueId."; lblVto.Text = "XX/XX/XXXX"; } } else { lblCAE.Text = "Comprobante inexistente."; lblVto.Text = "XX/XX/XXXX"; } } else { lblNumCbte.Text = "XXXXXXXX"; Page.ClientScript.RegisterStartupScript(this.GetType(), "Popup", "alert('Error de login con AFIP, vuelva a intentar la operacion en unos minutos.')", true); } break; } sqlEngine.Close(); } catch (Exception ex) { lblNumCbte.Text = "XXXXXXXX"; lblErrorMessages.Text = "Error: " + ex.Message; } }
//TODO: correr en otro thread o utilizar updatepanel para mostrar barra de estado protected void CheckAfipFeService(Settings oSettings) { try { wsfe.Service afipFeService = new wsfe.Service(); afipFeService.Url = oSettings.UrlAFIPwsfe; wsfe.DummyResponse dumResp = afipFeService.FEDummy(); if (dumResp.AppServer == "OK" && dumResp.AuthServer == "OK" && dumResp.DbServer == "OK") { lblBienes.ForeColor = System.Drawing.Color.Green; lblBienes.Text = "OK"; } else { lblBienes.ForeColor = System.Drawing.Color.Red; lblBienes.Text = "ERROR"; } } catch { lblBienes.ForeColor = System.Drawing.Color.Red; lblBienes.Text = "ERROR"; } }
public string ProcesarLoteFacturasBienesServicios(string EmpresaID, string xmlDocument) { #region Inicialización Settings oSettings = new Settings(EmpresaID); wsfe.Service afipFeService = new wsfe.Service(); afipFeService.Url = oSettings.UrlAFIPwsfe; wsfe.FEAuthRequest afipObjFEAuthRequest = new wsfe.FEAuthRequest(); wsfe.CbteTipo afipObjFELastCMType = new wsfe.CbteTipo(); wsfe.FECAEResponse feResponse = new wsfe.FECAEResponse(); ResponseBatch batchResponse = new ResponseBatch(); RequestBatch loteDocs = new RequestBatch(); string url = oSettings.UrlFEWebService; string SQLID = "0"; string estadoDocumento = string.Empty; string cae = string.Empty; string FechaVencimiento = string.Empty; string strEquivalenciaErrorFields = string.Empty; bool bRegistrarInicio = false; bool bEquivalenciaError = false; //Cargar el lote recibido loteDocs.LoadXMLString(xmlDocument); #endregion #region Registrar Inicio try { bRegistrarInicio = sqlEngine.LogBatchStart(ref loteDocs); SQLID = loteDocs.RequestHeaders[0].SQLID; //DEBUG LINE if (Convert.ToBoolean( oSettings.ActivarDebug )) Utils.Utils.DebugLine(Utils.Utils.SerializeObject(loteDocs), oSettings.PathDebug + "\\" + SQLID + "-P1.RequestBatch-" + DateTime.Now.Hour.ToString("00") + DateTime.Now.Minute.ToString("00") + DateTime.Now.Second.ToString("00") + DateTime.Now.Millisecond.ToString("000") + ".xml"); } catch (Exception ex) { sqlEngine.LogError(SQLID, "0", "ProcesarLoteFacturasBienesServicios", ex.Message); bRegistrarInicio = false; } #endregion //Si pudo crear el registro en la base continuo if (bRegistrarInicio) { #region Verificar Login con AFIP AfipConnection afipConn = new AfipConnection("wsfe", oSettings); if (afipConn.ConnectionErrorDescription == string.Empty) { //Inicializo el objeto AuthRequest de la Afip afipObjFEAuthRequest.Cuit = afipConn.Cuit; afipObjFEAuthRequest.Sign = afipConn.Sign; afipObjFEAuthRequest.Token = afipConn.Token; } else { try { sqlEngine.LogError(SQLID, "0", "AfipConnection", afipConn.ConnectionErrorDescription); sqlEngine.LogBatchEnd(SQLID, "Error", cae, FechaVencimiento); } catch (Exception ex) { sqlEngine.LogError(SQLID, "0", "FEService-AFIP Login", "Error: " + ex.Message); } } AfipFE afipFE = new AfipFE(ref afipFeService, ref afipObjFEAuthRequest, ref afipObjFELastCMType); #endregion if (afipConn.ConnectionErrorDescription == string.Empty) { #region Buscar Equivalencias bEquivalenciaError = BuscarEquivalencias(ref loteDocs, oSettings, ref strEquivalenciaErrorFields); #endregion //Si no hay errores de equivalencia continuo if (!bEquivalenciaError) { #region Hacer el pedido a AFIP try { if (afipConn.IsConnected) { feResponse = afipFE.FEAuthRequest(loteDocs, oSettings); //DEBUG LINE if (Convert.ToBoolean(oSettings.ActivarDebug)) Utils.Utils.DebugLine(Utils.Utils.SerializeObject(feResponse), oSettings.PathDebug + "\\" + SQLID + "-P3.FEResponse-" + DateTime.Now.Hour.ToString("00") + DateTime.Now.Minute.ToString("00") + DateTime.Now.Second.ToString("00") + DateTime.Now.Millisecond.ToString("000") + ".xml"); } else { sqlEngine.LogError(SQLID, "0", "Respuesta AFIP", "Sin Conexion. Descripcion: " + afipConn.ConnectionErrorDescription); feResponse.Errors = new wsfe.Err[1]; feResponse.Errors[0] = new wsfe.Err(); feResponse.Errors[0].Code = 0; feResponse.Errors[0].Msg = afipConn.ConnectionErrorDescription; } } catch (Exception ex) { sqlEngine.LogError(SQLID, "0", "Respuesta AFIP", "Error: " + ex.Message); } #endregion } } #region Armar y devolver respuesta //Armar info del lote if (feResponse.FeCabResp != null) { batchResponse.BatchUniqueId = loteDocs.BatchUniqueId; batchResponse.CUITInformante = feResponse.FeCabResp.Cuit.ToString(); batchResponse.FechaCAE = feResponse.FeCabResp.FchProceso; batchResponse.CantidadComprobantes = feResponse.FeCabResp.CantReg.ToString(); batchResponse.Resultado = feResponse.FeCabResp.Resultado; batchResponse.Reproceso = feResponse.FeCabResp.Reproceso; if (feResponse.Errors != null && feResponse.Errors.Length > 0 && feResponse.Errors[0] != null) { batchResponse.CodigoError = feResponse.Errors[0].Code.ToString(); batchResponse.MensajeError = feResponse.Errors[0].Msg.ToString(); } } else { batchResponse.BatchUniqueId = "0"; batchResponse.Resultado = "R"; batchResponse.CantidadComprobantes = loteDocs.CantidadComprobantes; if (feResponse.Errors != null && feResponse.Errors.Length > 0 && feResponse.Errors[0] != null) { batchResponse.CodigoError = feResponse.Errors[0].Code.ToString(); batchResponse.MensajeError = feResponse.Errors[0].Msg.ToString(); } else if(afipConn.ConnectionErrorDescription != string.Empty) { batchResponse.Resultado = "E"; batchResponse.CodigoError = "669"; batchResponse.MensajeError = afipConn.ConnectionErrorDescription; } else if (bEquivalenciaError) { batchResponse.Resultado = "E"; batchResponse.CodigoError = "Equivalencias"; batchResponse.MensajeError = "No se encontró equivalencia con AFIP. Campos: " + strEquivalenciaErrorFields; } } //Armar info de los documentos if (feResponse.FeDetResp != null) { for (int i = 0; i < feResponse.FeDetResp.Length; i++) { ResponseHeader thisHeader = new ResponseHeader(); if (feResponse.FeDetResp[i].CAE == "NULL") feResponse.FeDetResp[i].CAE = ""; thisHeader.CAE = feResponse.FeDetResp[i].CAE; thisHeader.CodigoDocumentoComprador = feResponse.FeDetResp[i].DocTipo.ToString(); thisHeader.NroDocumentoComprador = feResponse.FeDetResp[i].DocNro.ToString(); thisHeader.TipoComprobante = feResponse.FeCabResp.CbteTipo.ToString(); thisHeader.NroComprobanteDesde = feResponse.FeDetResp[i].CbteDesde.ToString(); thisHeader.NroComprobanteHasta = feResponse.FeDetResp[i].CbteHasta.ToString(); thisHeader.Importe = loteDocs.RequestHeaders[i].Importe; thisHeader.ImporteNoGravado = loteDocs.RequestHeaders[i].ImporteNoGravado; thisHeader.ImporteGravado = loteDocs.RequestHeaders[i].ImporteGravado; thisHeader.ImporteImpuestoLiquidado = loteDocs.RequestHeaders[i].ImporteImpuestoLiquidado; thisHeader.ImporteRNI_Percepcion = loteDocs.RequestHeaders[i].ImporteRNI_Percepcion; thisHeader.ImporteExento = loteDocs.RequestHeaders[i].ImporteExento; thisHeader.Resultado = feResponse.FeDetResp[i].Resultado; thisHeader.FechaComprobante = feResponse.FeDetResp[i].CbteFch; thisHeader.FechaVencimiento = feResponse.FeDetResp[i].CAEFchVto; thisHeader.PuntoVenta = loteDocs.RequestHeaders[i].PuntoVenta; thisHeader.LetraComprobante = loteDocs.RequestHeaders[i].LetraComprobante; thisHeader.NroInternoERP = loteDocs.RequestHeaders[i].NroInternoERP; thisHeader.SQLID = loteDocs.RequestHeaders[i].SQLID; wsfe.FERecuperaLastCbteResponse feLastCMPRespose = afipFE.FERecuperaUltimoComprobante(thisHeader.TipoComprobante, thisHeader.PuntoVenta); thisHeader.UltimoNroComprobanteUsado = feLastCMPRespose.CbteNro.ToString(); if (feResponse.Errors != null && feResponse.Errors.Length > 0 && feResponse.Errors[0] != null) { thisHeader.Motivo = feResponse.Errors[0].Code.ToString(); thisHeader.MotivoDescripcion = feResponse.Errors[0].Msg; if (thisHeader.Motivo == "10016") thisHeader.MotivoDescripcion += " UltimoNroComprobanteUsado: " + thisHeader.UltimoNroComprobanteUsado; } //NUEVO DESDE VERSION 1 DE AFIP if (feResponse.FeDetResp[i].Observaciones != null) { foreach (wsfe.Obs wsObs in feResponse.FeDetResp[i].Observaciones) { ResponseHeaderObs resObs = new ResponseHeaderObs(); resObs.Codigo = wsObs.Code.ToString(); resObs.Msg = wsObs.Msg; if (resObs.Codigo == "10016") resObs.Msg += " UltimoNroComprobanteUsado: " + thisHeader.UltimoNroComprobanteUsado; thisHeader.Observaciones.Add(resObs); } } thisHeader.FechaDesdeServicioFacturado = feResponse.FeDetResp[i].CbteDesde.ToString(); thisHeader.FechaHastaServicioFacturado = feResponse.FeDetResp[i].CbteHasta.ToString(); thisHeader.FechaVencimientoPago = loteDocs.RequestHeaders[i].FechaVencimientoPago; batchResponse.ResponseHeaders.Add(thisHeader); } } else { for (int i = 0; i < loteDocs.RequestHeaders.Count; i++) { ResponseHeader thisHeader = new ResponseHeader(); thisHeader.CAE = ""; thisHeader.TipoComprobante = loteDocs.RequestHeaders[i].TipoComprobante; thisHeader.PuntoVenta = loteDocs.RequestHeaders[i].PuntoVenta; thisHeader.NroComprobanteDesde = loteDocs.RequestHeaders[i].NroComprobanteDesde; thisHeader.NroComprobanteHasta = loteDocs.RequestHeaders[i].NroComprobanteHasta; thisHeader.Importe = loteDocs.RequestHeaders[i].Importe; thisHeader.ImporteNoGravado = loteDocs.RequestHeaders[i].ImporteNoGravado; thisHeader.ImporteGravado = loteDocs.RequestHeaders[i].ImporteGravado; thisHeader.ImporteImpuestoLiquidado = loteDocs.RequestHeaders[i].ImporteImpuestoLiquidado; thisHeader.ImporteRNI_Percepcion = loteDocs.RequestHeaders[i].ImporteRNI_Percepcion; thisHeader.ImporteExento = loteDocs.RequestHeaders[i].ImporteExento; thisHeader.FechaComprobante = loteDocs.RequestHeaders[i].FechaComprobante; thisHeader.Motivo = batchResponse.CodigoError; thisHeader.MotivoDescripcion = batchResponse.MensajeError; thisHeader.FechaDesdeServicioFacturado = loteDocs.RequestHeaders[i].FechaDesdeServicioFacturado; thisHeader.FechaHastaServicioFacturado = loteDocs.RequestHeaders[i].FechaHastaServicioFacturado; thisHeader.FechaVencimientoPago = loteDocs.RequestHeaders[i].FechaVencimientoPago; thisHeader.NroInternoERP = loteDocs.RequestHeaders[i].NroInternoERP; thisHeader.LetraComprobante = loteDocs.RequestHeaders[i].LetraComprobante; thisHeader.SQLID = loteDocs.RequestHeaders[i].SQLID; batchResponse.ResponseHeaders.Add(thisHeader); } } //DEBUG LINE if (Convert.ToBoolean(oSettings.ActivarDebug)) Utils.Utils.DebugLine(Utils.Utils.SerializeObject(batchResponse), oSettings.PathDebug + "\\" + SQLID + "-P4.ResponseBatch-" + DateTime.Now.Hour.ToString("00") + DateTime.Now.Minute.ToString("00") + DateTime.Now.Second.ToString("00") + DateTime.Now.Millisecond.ToString("000") + ".xml"); #endregion #region Registrar Fin //TODO: VERIFICAR ESTA PARTE CAPTURA MAL LOS ERRORES switch (batchResponse.Resultado) { case "A": estadoDocumento = "Aceptado"; cae = batchResponse.ResponseHeaders[0].CAE; FechaVencimiento = batchResponse.ResponseHeaders[0].FechaVencimiento; break; case "R": estadoDocumento = "Rechazado"; cae = ""; FechaVencimiento = ""; break; default: if (batchResponse.Reproceso.ToLower() == "s") { estadoDocumento = "Rechazado"; cae = batchResponse.ResponseHeaders[0].CAE; FechaVencimiento = batchResponse.ResponseHeaders[0].FechaVencimiento; } else { estadoDocumento = "Error"; cae = ""; FechaVencimiento = ""; } break; } try { sqlEngine.LogBatchEnd(SQLID, estadoDocumento, cae, FechaVencimiento); } catch (Exception ex) { sqlEngine.LogError(SQLID, "0", "Respuesta Recibida", "Error: " + ex.Message); } #endregion } return batchResponse.GetXMLString(); }
protected void btnObtenerNum_Click(object sender, EventArgs e) { Settings oSettings = new Settings(ddlEmpresa.SelectedItem.Value); AfipConnection afipConnFex = new AfipConnection("wsfex", oSettings); AfipConnection afipConnFe = new AfipConnection("wsfe", oSettings); wsfex.Service afipFexService = new wsfex.Service(); afipFexService.Url = oSettings.UrlAFIPwsfex; wsfe.Service feService = new wsfe.Service(); feService.Url = oSettings.UrlAFIPwsfe; wsfex.ClsFEX_LastCMP afipLastEx = new wsfex.ClsFEX_LastCMP(); wsfe.FEAuthRequest afipObjFEAuthRequest = new wsfe.FEAuthRequest(); switch (ddlTipoComprobante.SelectedValue) { case "1": case "2": case "3": case "6": case "7": case "8": try { lblErrorMessages.Text = ""; if (afipConnFe.ConnectionErrorDescription == string.Empty) { //Inicializo el objeto AuthRequest de la Afip afipObjFEAuthRequest.Cuit = afipConnFe.Cuit; afipObjFEAuthRequest.Sign = afipConnFe.Sign; afipObjFEAuthRequest.Token = afipConnFe.Token; wsfe.FERecuperaLastCbteResponse objFERecuperaLastCMPResponse = new wsfe.FERecuperaLastCbteResponse(); objFERecuperaLastCMPResponse = feService.FECompUltimoAutorizado(afipObjFEAuthRequest, Convert.ToInt16(ddlSucursales.SelectedValue), Convert.ToInt16(ddlTipoComprobante.SelectedValue)); lblNumCbte.Text = (objFERecuperaLastCMPResponse.CbteNro + 1).ToString(); lblNumCbte.Text = FillWithCeros(lblNumCbte.Text); } else { lblNumCbte.Text = "XXXXXXXX"; lblErrorMessages.Text = "Error de login con AFIP.<br>Error: " + afipConnFe.ConnectionErrorDescription; } } catch (Exception ex) { lblNumCbte.Text = "XXXXXXXX"; lblErrorMessages.Text = "Error: " + ex.Message; } //wsfe.FETributoResponse trires = feService.FEParamGetTiposTributos(afipObjFEAuthRequest); break; case "19": case "20": case "21": try { lblErrorMessages.Text = ""; if (afipConnFex.ConnectionErrorDescription == string.Empty) { //Inicializo el objeto AuthRequest de la Afip afipLastEx.Cuit = afipConnFex.Cuit; afipLastEx.Sign = afipConnFex.Sign; afipLastEx.Token = afipConnFex.Token; afipLastEx.Pto_venta = Convert.ToInt16(ddlSucursales.SelectedItem.Text); afipLastEx.Tipo_cbte = Convert.ToInt16(ddlTipoComprobante.SelectedItem.Value); wsfex.FEXResponseLast_CMP lastResp = afipFexService.FEXGetLast_CMP(afipLastEx); lblNumCbte.Text = (lastResp.FEXResult_LastCMP.Cbte_nro + 1).ToString(); lblNumCbte.Text = FillWithCeros(lblNumCbte.Text); } else { lblNumCbte.Text = "XXXXXXXX"; lblErrorMessages.Text = "Error de login con AFIP.<br>Error: " + afipConnFex.ConnectionErrorDescription; } } catch (Exception ex) { lblNumCbte.Text = "XXXXXXXX"; lblErrorMessages.Text = "Error: " + ex.Message; } break; } }
public AfipFE(ref wsfe.Service afipFeService, ref wsfe.FEAuthRequest afipObjFEAuthRequest, ref wsfe.CbteTipo afipObjFELastCMType) { feService = afipFeService; objFEAuthRequest = afipObjFEAuthRequest; objFELastCMType = afipObjFELastCMType; }