Developer forum

Forum » Development » Skip VAT while total price is above 80 kr.

Skip VAT while total price is above 80 kr.


Reply
Er der nogen der har implementeret en lignende løsning ?

Har forsøgt med OrderLineTemplateExtender, ProductTemplateExtender, TotalSalesPriceDiscount uden at finde den rette løsning.

Vil sætte VATPercent på alle varer til 0.0, når prisen uden moms og gebyrer overstiger 80 kr. Jeg har lavet en ny moms gruppe, hvis løsningen er at ændre momsgruppe.

Vil gerne have nogle input.

Replies

 
Reply
Hej Magni,

Skal momsen slettes helt, eller ville det kunne løses med en SalesDiscountProvider?

Mvh.
Lars
 
Reply

Jeg vil sætte vat procent til 0% ved køb over 80 kr., men den skal sættes til 5% (default på frimærker). Se koden:

// Get rawprice
PriceRaw rawprice = new PriceRaw(orderLine.Product.Price.Price, Dynamicweb.eCommerce.Common.Application.DefaultCurrency);
 

// Convert to a calculated price
PriceCalculated newPrice = new PriceCalculated(rawprice);
 

if (args.OrderLines.Order.PriceBeforeFees.Price >= 80 && (Base.ChkString(args.OrderLines.Order.CustomerCountryCode).ToLower() == "dk")
{
  newPrice.VATPercent = 0.0;
  orderLine.Modified = DateTime.Now;
  orderLine.UnitPrice = newPrice;
}
 

if (args.OrderLines.Order.PriceBeforeFees.Price < 80 && Base.ChkString(args.OrderLines.Order.CustomerCountryCode).ToLower() == "dk")
{
  newPrice.VATPercent = 5.0;
  orderLine.Modified = DateTime.Now;
  orderLine.UnitPrice = newPrice;
}

Denne koden er p.t. i en [Subscribe(Dynamicweb.Notifications.eCommerce.Cart.BeforeRender)]

Jeg tror min kode er i orden, men får bare ikke opdateret prisen, hvis du forstår.

SalesDiscountProvider er ikke helt det jeg søger, fordi det er ikke en rabat kunden skal have.

 
Reply

Nu har forsøgt at sætte momsen til 0% på varen, men mit problem kunne også løses ved at sætte order.VATProcent til 0 (beløb eller procent).

Hvordan tvinger man egentlig DW at opdatere ordrelinjer ? fordi jeg forstår ikke hvorfor min pris ikke ændres. Kan godt ændre navnet f.eks. suffix.

 
Reply
This might work:
You can set a sales discount to 5% on sales above kr 80 - see http://www.screencast.com/users/DavidMatheson/folders/Jing/media/93245118-8b70-4e30-9921-242a7803851b 
 
Reply
Please remember to invoke the Save() method on the Orderline object in order to commit the changes to the database. Afterwards invoke the Save() method on the Order object. You may also have to manupulate with the VAT value on the Order object.

BR.
Lars
 
Reply

Hi Matheson
 

Your idea is fine. But when i use the SalesDiscountProvider it adds an additional orderline to the order object.

When the system adds a new orderline, this orderline also inherits vatprocent, this complicates it even more, when using SalesDiscountProvider.

I want equivalent function without the the orderline type of discount or without an orderline at all.

I will try our solution Lars. Looks promising.

 
Reply
It does not matter how many save methods i invoke (orderline and order). It still wont update product price.

I ended with this code in the OrderTemplateExtender: (this code is not functional !!)

if (base.Order.PriceBeforeFees.Price >= 80 && Base.ChkString(base.Order.CustomerCountryCode).ToLower() == "dk")
{
 foreach (OrderLine ol in base.Order.OrderLines)
 {
  ol.ProductName += " (new price)";
  ol.Price.VATPercent = 0.0;
  ol.Save(ol.ID);
 }
 base.Order.Price.VATPercent = 0.0;
 base.Order.Save(base.Order.ID);
}

Product name is being altered, but the price is not. Is there something im missing ?
 
Reply
The FIX !!

if (base.Order.PriceBeforeFees.Price >= 80 && Base.ChkString(base.Order.CustomerCountryCode).ToLower() == "dk")
{
 base.Order.Price.VAT = 0.0;
 base.Order.Price.PriceWithVAT = base.Order.Price.PriceWithoutVAT;
 base.Order.Save(base.Order.ID);
}

I did not see this solution coming.

A much better solution would be to set product VAT to zero instead of overwriting the order object.

 

You must be logged in to post in the forum