Developer forum

Forum » Development » DW8 Orders.SalesDiscounts.Vouchers

DW8 Orders.SalesDiscounts.Vouchers

Diogo Lino
Reply

Hello,

 

I'm trying to migrate from a custom voucher system used on DW7 to the new Vouchers discounts of DW8.

Having voucher codes on a custom table (DQVouchers1) where I can see the voucher is used if it has an OrderId filled on the record, I use something like this:

                var allVoucherLists = VoucherList.GetAllVoucherLists();
                var table1List = allVoucherLists.FirstOrDefault(p => p.ListName == "25% Discount");

                if (table1List != null)
                {
                    DataContext dc = new DataContext();
                    var dqVouchers1 = dc.DQVouchers1s.ToList();

                    foreach (var dqVoucher in dqVouchers1)
                    {
                        var isValid = Voucher.isValid(dqVoucher.Code, table1List.ID);
                        if (!isValid)
                        {
                            dc.EcomVouchers.InsertOnSubmit(new EcomVoucher { VoucherCode = dqVoucher.Code, VoucherListID = table1List.ID });
                            dc.SubmitChanges();

                            if (!string.IsNullOrEmpty(dqVoucher.OrderId) && dqVoucher.OrderId != "0")
                            {
                                Voucher.MarkAsUsed(dqVoucher.Code, dqVoucher.OrderId);
                            }
                        }
                    }
                }
                else
                {
                    Log.Error("There isn't a voucher list «25% Discount». It must be created!");
                }

I am getting errors on the function Voucher.isValid(...) where the voucher code exists on the list, and on the function Voucher.MarkAsUsed(...).

I get exceptions "Object reference not set to an instance of an object.", and all the arguments are not null.

 

For the function Voucher.isValid() I can check the database, but I don't know how to mark a voucher as used without the function Voucher.MarkAsUsed(), because I don't know what to put on the varchar "VoucherStatus" of the table.

 

Any help?

 

Thanks,

Diogo Lino


Replies

 

You must be logged in to post in the forum