Пример #1
0
        /// <summary>
        /// Cancela este objeto
        /// </summary>
        /// <param name="dataHora">data/ hora que o cancelamento ocorreu</param>
        /// <param name="motivo">motivo do cancelamento</param>
        /// <returns></returns>
        public virtual bool Cancelar(DateTime dataHora, string motivo)
        {
            bool result = false;

            #region Altera o status
            this.Connection.ExecuteNonQuery("UPDATE fat_Lan SET Status = @p1 WHERE GUID=@p2", new[] {
                        new Parameter{
                            ParameterName = "@p1",
                            GenericDbType= GenericDbType.Integer,
                            Value = (int)Enuns.Faturamento.Lancamento.Status.CanceladoTotal
                        },
                        new Parameter{
                            ParameterName = "@p2",
                            Value = GUID
                        }
                    });

            #endregion

            Data.Faturamento.Lancamento.Cancelamento.CancelarTotal cancel = new Data.Faturamento.Lancamento.Cancelamento.CancelarTotal();
            cancel.Lancamento = this;
            cancel.Motivo = motivo;
            cancel.DataHora = dataHora;
            cancel.Save();
            return result;
        }
Пример #2
0
        /// <summary>
        /// Cancela este objeto
        /// Observação:
        /// O xml do evento do cancelamento já é salvo na pasta de envio
        /// </summary>
        /// <param name="dataHora">data/ hora que o cancelamento ocorreu</param>
        /// <param name="motivo">motivo do cancelamento</param>
        /// <returns></returns>
        public override bool Cancelar(DateTime dataHora, string motivo)
        {
            bool result = true;
            if(!(this is INFe) && !(this is INFCe))
                Save();
            Data.Faturamento.Lancamento.Cancelamento.CancelarTotal cancel = new Data.Faturamento.Lancamento.Cancelamento.CancelarTotal();
            cancel.Lancamento = this;
            cancel.Motivo = motivo;
            cancel.DataHora = dataHora;

            foreach(IItem item in Itens)
            {
                cancel.Itens.Add(new Data.Faturamento.Lancamento.Cancelamento.Item.Item
                {
                    ItemMovimentado = item,
                    Motivo = motivo,
                    DataHora = dataHora
                });
            }

            cancel.Save();

            #region Cancela as parcelas
            foreach(Model.Financeiro.Lancamento.IParcela parcela in Parcelas)
            {
                parcela.Cancelar("Cancelado o lançamento");
            }
            #endregion

            #region Atualiza o temporário
            if(Temp)
                this.Connection.ExecuteNonQuery("UPDATE fat_LanMov SET Temp = @p1 WHERE GUIDLan = @p2;", new Parameter[]{
                new Parameter(){
                    ParameterName="@p1",
                    Value = 0,
                    GenericDbType = GenericDbType.Integer
                    },
                new Parameter(){
                    ParameterName="@p2",
                    Value = GUID.ToString(),
                    GenericDbType = GenericDbType.String
                    }
            });
            #endregion
            this.Status = Enuns.Faturamento.Lancamento.Status.CanceladoTotal;
            this.DadosCancelamento = cancel;
            return result;
        }