/// <summary> /// Ensambla la aceptación o rechazo de un lote de facturas de compra /// _lDocumentos: Lista de dte's /// </summary> /// <param name="loteFacturasCompra">Lote de documentos a procesar</param> public void EnsamblaLote(vwCfdLogFacturaCompra loteFacturasCompra, int evento, String motivoRechazo) { String sTipo = String.Empty; try { OnProgreso(1, "Iniciando..."); //Notifica al suscriptor loteFacturasCompra.Rewind(); //move to first record _sMsj = string.Empty; _iErr = 0; int iMaxErr = 0; _lAcuses.Clear(); _lRespuestas.Clear(); do { //RespuestaEnvio cfdCompra = new RespuestaEnvio() ; //CFDReciboMercaServicio cfdRecibo = new CFDReciboMercaServicio() ; if (evento == Maquina.eventoAcuseProducto) { ArmaRecepcionProducto(loteFacturasCompra, evento, _Param.RutaArchivosTemp); sTipo = "RECIBO"; if (_iErr == 0) { _lAcuses.Add(_reciboProducto); } } if (evento == Maquina.eventoResultadoAceptado || evento == Maquina.eventoResultadoRechazado) { ArmaResultadoDte(loteFacturasCompra, evento, _Param.RutaArchivosTemp, motivoRechazo); //evento resultado: acepta sTipo = "RESULTADO"; if (_iErr == 0) { _lRespuestas.Add(_respuestaResultado); } } OnProgreso(100 / loteFacturasCompra.RowCount, "Doc. compra: " + loteFacturasCompra.Folio + " " + _sMsj); if (_iErr > 0) { iMaxErr++; } _sMsj = String.Empty; _iErr = 0; } while (loteFacturasCompra.MoveNext() && iMaxErr < 10); int numDocs = _lRespuestas.Count() + _lAcuses.Count(); OnProgreso(100, numDocs.ToString() + " comprobante(s) procesados. "); } catch (Exception errorGral) { _sMsj = "Excepción encontrada al formar la respuesta tipo: " + sTipo + " " + errorGral.Message + " [CFDFacturasCompraFabrica.EnsamblaLote] "; _iErr++; OnProgreso(0, _sMsj); } }
private CFDReciboMercaServicio ArmaRecepcionProducto(vwCfdLogFacturaCompra cfdCompra, int evento, String ruta) { _iErr = 0; _sMsj = String.Empty; _reciboProducto = new CFDReciboMercaServicio(_encriptador, _Conex.ConnStr, _Conex.Usuario, _encoding, cfdCompra.EstadoActual, cfdCompra.IdxSingleStatus, 0, cfdCompra.Tipo); _reciboProducto.Evento = evento; _reciboProducto.RutaXml = ruta; _reciboProducto.TipoDte = cfdCompra.Tipo; _reciboProducto.Folio = cfdCompra.Folio; _reciboProducto.IdImpuestoTercero = cfdCompra.IdImpuestoTercero; _reciboProducto.NombreTercero = cfdCompra.NombreTercero; _reciboProducto.Estado = cfdCompra.Estado; _reciboProducto.EBinStatus = cfdCompra.EstadoActual; _reciboProducto.IdExterno = cfdCompra.IdExterno; //_reciboProducto.Mensaje = cfdCompra.Mensaje; _reciboProducto.RutFirma = _certificados.idImpuesto; _reciboProducto.Prefijo = "ACU"; _reciboProducto.EmailProveedor = cfdCompra.Mensaje; _reciboProducto.Ensambla(cfdCompra.ArchivoXML); _iErr += _reciboProducto.iErr; _sMsj = _reciboProducto.sMsj; if (_iErr == 0) { //Canonicaliza documento original _reciboProducto.Canonicaliza(); //firma al enviar _reciboProducto.Firma(_reciboProducto.IdRecibo); _reciboProducto.InsertaFirma("Recibo"); _reciboProducto.Firma(_reciboProducto.IdSetRecibos); _reciboProducto.InsertaFirma("EnvioRecibos"); //facturaCompra.VerificaFirma(); _iErr = _reciboProducto.iErr; _sMsj = _reciboProducto.sMsj; } //if (_iErr == 0) //{ // //inicio intercambio // //_reciboProducto.SaveFile(); // //fin intercambio // _iErr = _reciboProducto.iErr; // _sMsj = _reciboProducto.sMsj; //} return(_reciboProducto); }
//private CFDFacturaCompra ArmaRespuestaRecepcionFactura(vwCfdLogFacturaCompra cfdCompra) //{ // _iErr = 0; // _sMsj = String.Empty; // CFDFacturaCompra facturaCompra = new CFDFacturaCompra(_encriptador, _Conex.ConnStr, _encoding); // facturaCompra.TipoDte = cfdCompra.Tipo; // facturaCompra.Folio = cfdCompra.Folio; // facturaCompra.IdImpuestoTercero = cfdCompra.IdImpuestoTercero; // facturaCompra.NombreTercero = cfdCompra.NombreTercero; // facturaCompra.Estado = cfdCompra.Estado; // facturaCompra.EBinStatus = cfdCompra.EstadoActual; // facturaCompra.IdExterno = cfdCompra.IdExterno; // facturaCompra.Mensaje = cfdCompra.Mensaje; // facturaCompra.EnsamblaRespuesta(cfdCompra); // _iErr += facturaCompra.iErr; // _sMsj = facturaCompra.sMsj; // //if (iErr == 0) //Evento 0: ensambla lote, emite factura // //{ // // facturaCompra.cicloDeVida.Transiciona(0, _certificados.firma); // // iErr = facturaCompra.cicloDeVida.iErr; // // sMsj = facturaCompra.cicloDeVida.sMsj; // //} // if (_iErr == 0) // { // //Canonicaliza documento original // facturaCompra.Canonicaliza(); // //firma al enviar // facturaCompra.Firma("RESULTADO"); // //facturaCompra.VerificaFirma(); // _iErr = facturaCompra.iErr; // _sMsj = facturaCompra.sMsj; // } // if (_iErr == 0) // { // facturaCompra.SaveFile(); // //Anota en la bitácora // facturaCompra.Save(); // facturaCompra.Update(); // _iErr = facturaCompra.iErr; // _sMsj = facturaCompra.sMsj; // } // return facturaCompra; //} private RespuestaEnvio ArmaResultadoDte(vwCfdLogFacturaCompra cfdCompra, int evento, String ruta, String motivoRechazo) { _iErr = 0; _sMsj = String.Empty; _respuestaResultado = new RespuestaEnvio(_Conex.ConnStr, _encoding, _Conex.Usuario, _certificados.envia); _respuestaResultado.Evento = evento; _respuestaResultado.RutaXml = ruta; _respuestaResultado.criptografo = _encriptador; _respuestaResultado.tipoDTE = cfdCompra.Tipo.ToString(); _respuestaResultado.Folio = cfdCompra.Folio; _respuestaResultado.rutEmisor = cfdCompra.IdImpuestoTercero; _respuestaResultado.NomEmisor = cfdCompra.NombreTercero; _respuestaResultado.ESingleStatus = cfdCompra.Estado; _respuestaResultado.EBinStatus = cfdCompra.EstadoActual; _respuestaResultado.Uid = cfdCompra.IdExterno; _respuestaResultado.archivoRecibido = "-"; //_respuestaResultado.EnvioDTEID = cfdCompra.Mensaje; _respuestaResultado.EmailProveedor = cfdCompra.Mensaje; _respuestaResultado.EnsamblaResultado(cfdCompra.ArchivoXML, evento == Maquina.eventoResultadoAceptado, motivoRechazo); _iErr += _respuestaResultado.IErr; _sMsj = _respuestaResultado.SMsj; //if (_iErr == 0) //{ //_respuestaResultado.CicloDeVida.TipoDoc = cfdCompra.Folio; //_respuestaResultado.CicloDeVida.Transiciona(evento, _certificados.envia); //_iErr = _respuestaResultado.CicloDeVida.iErr; //_sMsj = _respuestaResultado.CicloDeVida.sMsj; //} if (_iErr == 0) { //Canonicaliza documento original _respuestaResultado.Canonicaliza(); //firma al enviar _respuestaResultado.firma(_respuestaResultado.IdResultado); //respuestaResultado.VerificaFirma(); _iErr = _respuestaResultado.IErr; _sMsj = _respuestaResultado.SMsj; } return(_respuestaResultado); }
/// <summary> /// Filtra la lista de facturas de compra /// </summary> /// <param name="filtroPeriodo"></param> /// <param name="dePeriodo"></param> /// <param name="aPeriodo"></param> /// <param name="dePeriodoDefault"></param> /// <param name="aPeriodoDefault"></param> /// <param name="filtroEstado"></param> /// <param name="estado"></param> /// <param name="facturasCompra"></param> public void AplicaFiltroACompras( bool filtroFecha, DateTime desdeF, DateTime hastaF, DateTime deFDefault, DateTime aFDefault, bool filtroNumDoc, string numDocDe, string numDocA, bool filtroIdDoc, string idDoc, bool filtroEstado, string estado, bool filtroProveedor, string proveedor, out vwCfdLogFacturaCompra facturasCompra) { facturasCompra = new vwCfdLogFacturaCompra(_Conexion.ConnStr); facturasCompra.Query.AddOrderBy(vwCfdLogFacturaCompra.ColumnNames.NombreTercero, WhereParameter.Dir.ASC); DateTime desdeFecha = new DateTime(deFDefault.Year, deFDefault.Month, deFDefault.Day, 0, 0, 0); DateTime hastaFecha = new DateTime(aFDefault.Year, aFDefault.Month, aFDefault.Day, 23, 59, 59); if (filtroFecha) { //Filtro personalizado desdeFecha = desdeF; hastaFecha = hastaF; } if ((!filtroNumDoc && !filtroIdDoc && !filtroEstado && !filtroProveedor) || filtroFecha) { //Filtra los documentos por fecha. De forma predeterminada es la fecha de hoy. facturasCompra.Where.FechaRecepcion.BetweenBeginValue = desdeFecha; facturasCompra.Where.FechaRecepcion.BetweenEndValue = hastaFecha; facturasCompra.Where.FechaRecepcion.Operator = WhereParameter.Operand.Between; } if (filtroNumDoc) { facturasCompra.Where.Folio.BetweenBeginValue = numDocDe.Trim(); facturasCompra.Where.Folio.BetweenEndValue = numDocA.Trim(); facturasCompra.Where.Folio.Operator = WhereParameter.Operand.Between; } if (filtroIdDoc) { facturasCompra.Where.Tipo.Value = idDoc.Trim(); facturasCompra.Where.Tipo.Operator = WhereParameter.Operand.Equal; } if (filtroEstado) { facturasCompra.Where.Estado.Value = estado; facturasCompra.Where.Estado.Operator = WhereParameter.Operand.Equal; } if (filtroProveedor) { facturasCompra.Where.NombreTercero.Value = "%" + proveedor + "%"; facturasCompra.Where.NombreTercero.Operator = WhereParameter.Operand.Like; } try { if (!facturasCompra.Query.Load()) { ultimoMensaje = "No hay datos para el filtro seleccionado."; numMensajeError++; } } catch (Exception eFiltro) { ultimoMensaje = "Contacte al administrador. No se pudo consultar la base de datos. [cfdReglasFacturaXml.AplicaFiltroACompras]" + eFiltro.Message; numMensajeError++; } }