Ejemplo n.º 1
0
        /// <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);
            }
        }