Ejemplo n.º 1
0
 protected internal override void OnInitialize()
 {
     CallCreate(ACBrECFInterop.ECF_Create);
     Device = new ACBrDevice(this);
     this.InfoRodapeCupom = new Rodape(this);
     this.ConfigBarras = new ConfigBarras(this);
     this.Consumidor = new Consumidor(this);
     this.DadosReducaoZClass = new DadosReducaoZClass(this);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Cancela as Pré Vendas pendentes  
        /// </summary>
        private void CancelaPreVendasPendentes()
        {
            try
            {
                //Verifica se tem pre vendas pendentes
                DateTime dataMov = DateTime.Today;

                #region Antes da emissão da redução Z

                if (DadosReducaoZ.DataDoMovimento.CompareTo(dataMov) > 2)
                    dataMov = dataMov.AddDays(DadosReducaoZ.DataDoMovimento.CompareTo(dataMov) - 1);
                else if (DadosReducaoZ.DataDoMovimento.CompareTo(dataMov) != 1)
                    dataMov = DadosReducaoZ.DataDoMovimento.AddDays(-1);

                IList<IPreVenda> preVendas = new PreVenda().Find<IPreVenda>(new Where() {
                {
                    "fat_LanMov.DataHoraMovimento < @p1",
                    new Parameter
                    {
                        GenericDbType = GenericDbType.DateTime,
                        ParameterName = "@p1",
                        Value = dataMov
                    }
                   },
                     {
                    "fat_Lan.Status = @p2",
                    new Parameter
                    {
                        GenericDbType = GenericDbType.Integer,
                        ParameterName = "@p2",
                        Value = (int)Enuns.Faturamento.Lancamento.Status.Aberto
                    }
                   }
                });
                //Cancela se houver pre vendas pendentes
                foreach (IPreVenda pv in preVendas)
                {
                    Model.Faturamento.Lancamento.Movimento.VendaCF.IVendaCF venda = new VendaCF();
                    venda.DadoPessoa = pv.DadoPessoa;
                    venda.Emitente = pv.Emitente;

                    int contaPV = 0;
                    foreach (Model.Faturamento.Lancamento.Movimento.Item.IItem item in pv.Itens)
                        if (((Model.Faturamento.Lancamento.Movimento.Item.PreVenda.IItem)item).Status == Enuns.Faturamento.Lancamento.Movimento.Item.Status.Cancelado)
                            contaPV++;

                    if (contaPV != pv.Itens.Count)
                    {
                        ACBrECF.AbreCupom(venda.DadoPessoa.Cliente.GetCPFCNPJ(), venda.DadoPessoa.NomeFantasia, "");
                        foreach (Model.Faturamento.Lancamento.Movimento.Item.IItem item in pv.Itens)
                            if (((Model.Faturamento.Lancamento.Movimento.Item.PreVenda.IItem)item).Status != Enuns.Faturamento.Lancamento.Movimento.Item.Status.Cancelado)
                            {
                                Model.Faturamento.Lancamento.Movimento.Item.VendaCF.IItem i = new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.VendaCF.Item();
                                i.DescricaoNF = item.DescricaoNF;
                                i.ItemMovimentado = item.ItemMovimentado;
                                i.Quantidade = item.Quantidade;
                                i.ValorUnitarioBruto = item.ValorUnitarioBruto;
                                i.Vendedor = item.Vendedor;
                                i.Status = Enuns.Faturamento.Lancamento.Movimento.Item.Status.Cancelado;
                                i.SituacaoTributaria = SituacaoTributaria.Isento;
                                i.ItensParent.Add(item);
                                (i.ItemMovimentado as Model.Cadastro.Item.Produto.IProduto).IndicadorProducao = "P";
                                (i.ItemMovimentado as Model.Cadastro.Item.Produto.IProduto).IndicadorTruncamento = "T";
                                ((Model.Faturamento.Lancamento.Movimento.Item.PreVenda.IItem)item).Status = Enuns.Faturamento.Lancamento.Movimento.Item.Status.Cancelado;
                                item.Save();
                                venda.Itens.Add(i);
                                ACBrECF.VendeItem(i.Ordem.ToString(), i.DescricaoNF, "FF", (decimal)i.Quantidade, (decimal)i.ValorUnitarioLiquido);
                            }

                        venda.NumeroSerieECF = NumeroSerie;
                        venda.NumeroOrdemECF = Unimake.Convert.ToInt(NumeroECF);
                        venda.COO = COO;
                        venda.COOFinal = 0; // Todo: o valor do coo final será atualizado posteriormente pela emissão da redução z
                        venda.CRO = CRO;
                        venda.CCF = CCF;
                        venda.CRZ = CRZ;
                        venda.ValorGrandeTotalECF = GrandeTotal;
                        venda.Save();
                        ACBrECF.SubtotalizaCupom();
                        ACBrECF.FechaCupom("Obrigado");
                        ACBrECF.CancelaCupom();
                        pv.Cancelar(DateTime.Today, "Cancelamento Automático - Emissão de Redução Z");
                    }
                }
                #endregion
            }
            finally
            {
                //aqui tem que liberar a variável da redução Z, pois será chamada em outros métodos que dependem
                // dos dados da última redução Z. Ou seja, os dados de pois de validados por este método.
                // Este método é chamado antes da redução Z
                _dadosReducaoZ = null;
            }
        }
Ejemplo n.º 3
0
        public string DadosReducaoZ()
        {
            const int BUFFER_LEN = 16384;
            string retorno = GetString(ACBrECFInterop.ECF_GetDadosReducaoZ, BUFFER_LEN);

            DadosReducaoZClass = new DadosReducaoZClass(this);

            return retorno;
        }