Jump to content

DPH a prodej do cizích zemí - CHYBA při počítání DPH


DaveM

Recommended Posts

Dobrý den,

 

mám problém s cenami při prodeji do jiných zemí A PROSÍM O POMOC.

 

- V pravidlech pro daně mám např. nastaveno pro Slovensko DPH, že ho má počítat.

- V košíku vše funguje v pořádku (dle nastavení) i počítání cen a DPH do té doby než nainstaluji modul VAT NUMBER a nastavím zemi kde jsem, tedy českou republiku.

- v tuto chvíli již už nepočítá DPH a v košíku se objevuje částka s DPH a bez DPH naprosto stejná. (u jiných zemí)

- když máte nastaveně akce a slevy, tak u těchto položek po odeslání objednávky se všechny ceny sníží, protože sleva počítána s DPH se promítne jako bez DPH.

 

- pokud modul VAT NUMBER odinstaluji, zase vše počítá dobře, ale nemohu u firem zadávat DIČ.

 

- používám verzi 1.4.7.0 na které to blbne. Testoval jsem i na verzi 1.4.9.0 a tam k tomu nedochází.

- porovnal jsem modul VAT NUMBER v obou verzích, trochu se liší, tak jsem použil ten novější, ale chyba nezmizela.

- podotýkám, že jsem testoval i čistou instalaci a tam je problém stejný

 

Nevíte náhodou někdo řešení tohoto problému. UPGRADE po všech těch změnách snad nepřichází v úvahu.

 

Děkuji moc za pomoc

Edited by DaveM (see edit history)
Link to comment
Share on other sites

Nebude nějaký rozdíl v nastavení zemí, zón, sazeb DPH mezi oběma verzemi? Na chybu v 1.4.7.0 moc nevěřím, ale pokud by byla, tak upgrade pomůže.

 

UPGRADE po všech těch změnách snad nepřichází v úvahu.

Omlouvám se, ale to je největší hloupost, jaká se při implementaci shopu může přihodit. Spousta záplat do kódu, žádná dokumentace o provedených změnách a strach z jakéhokoliv náznaku upgradu.

 

Mimochodem PrestaShop má ve všech verzích menší či větší chyby a nutnost mít vše zařízené pro snadný upgrade je skoro nutnost.

Link to comment
Share on other sites

Dokumentaci o provedených změnách mám, vše ukládám včetně pracovního postupu. Poslední dobou většinu úprav řeším modulem, takže přechod možný je.

 

Ale i tak kompletně to zase projít a nastavit, upravit nové soubory atd.... Z toho mám hrůzu a raději bych jen opravil chybu. Protože mám pocit, že pořád něco opravuji.

 

Při testech jsem tuto variantu přehlédl a na chybu nepřišel. Teď když všechno jede v plném proudu je velice těžké to odstavit a udělat upgrade a zase to rozjet.

 

Má nějaký smysl ten modul VAT NUMBER kromě toho, že mi přidá políčko na DPH? (když pominu tu kontrolu přes webservis)

 

DM

Link to comment
Share on other sites

Tak mi to nedalo a udělal jsem komplet čistou instalaci a mám nové zjištění. Dělá to ve verzi 1.4.7.0 ale i ve verzi 1.4.9.0. Chyba se vyskytuje když máte nainstalován modul VAT NUMBER a u adresy je vyplněno políčko DIČ. Pokud to políčko nevyplním, vše funguje, pokud ho vyplním, nefunguje.

 

Viz obrázek v příloze.

 

 

Ale jak tak nad tím přemýšlím, tak je to takto zamýšleno, protože když mám přidělené DIČ v jiné zemi, tak je jasné že Faktura bude bez DPH a daň neplatím. Proto se to takto chová, jen to špatně počítá tu slevu, kterou systém vyžaduje napsat s DPH (částku ke snížení) a pak tam dojde k této chybě.

 

Chybu bych tedy viděl ve výpočtu ceny, která je zlevněna částkou.

post-306352-0-44586400-1358341769_thumb.jpg

post-306352-0-19805100-1358342862_thumb.jpg

Edited by DaveM (see edit history)
Link to comment
Share on other sites

Řešení by bylo, při zápisu objednávky do databáze by se měla položka (jen pokud je cizí země a nastaven DIČ) reduction_amount snížit o DPH a takto zapsat, pak je vše v pořádku. Košík souhlasí s odeslanou objednávkou, v přehledu taky a je to OK.

 

Věděl by někde kde to nakonfigurovat a jakou podmínku napsat?

 

Díky moc, fakt by mi to moc pomohlo.

Link to comment
Share on other sites

Netřeba něco v PrestaShopu měnit a určitě bych se do toho nepouštěl, protože důsledky se mohou objevit na mnoha místech a nečekaně.

 

PrestaShop má s modulem pro DPH v základu schopnost přidávat DPH podle země zákazníka a tom, jestli je plátce DPH. Z toho bych vyšel.

Edited by tuk66 (see edit history)
Link to comment
Share on other sites

No podívejte se na historii objednávek viz obrázek.

 

Podotýkám, že špatná cena je jen u položek kde je nastavena specifická cena (sleva částkou).

 

Vše ostatní jako je celkový součet, prezentace cen v eshopu atd. je naprosto v pořádku. Pokud ale změním zapsanou slevu u položky v tabulce order_detail, snížím o DPH u již vytvořené objednávky, pak všechno sedí. Celkové součty i ceny produktu v objednávce vs prezentace shop atd..

 

Zkuste si to sám nasimulovat, dle mě se jedná o chybu v kódu. A to při výpočtu slevy, která se v order_detail zapisuje k produktu. (pokud je to prodej do cizí země, a zákazník má vypsané DIČ, a používám modul VAT NUMBER pro položku DIČ).

 

Nasimulujte si to opravte mě, byl bych moc rád, kdybych nemusel nic měnit.

post-306352-0-15106200-1358357099_thumb.jpg

Link to comment
Share on other sites

Tak tady je oprava, pokud by někdo chtěl. Otestoval jsem objednávky v různých kombinacích jaké můžou nastat i různé nastavení cena jaké můžou být.

 

Oprava pro verzi 1.4.9.0

 

V souboru classes/PaymentModule.php za tento řádek cca 260:

 

$tax_rate = Tax::getProductTaxRate((int)($product['id_product']), $cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')});

 

vložte tento kód:

 

// Oprava počítání slevy částkou
		if (Configuration::get('VATNUMBER_MANAGEMENT') == 1 AND Configuration::get('VATNUMBER_COUNTRY') != (int)$vat_address->id_country AND !empty($vat_address->vat_number)) {
			$tax_rate_amount = Tax::getProductTaxRate((int)($product['id_product']));
			$pocitej = 1;
		} else {
			$pocitej = 0;
		}
		// KONEC Oprava počítání slevy částkou

 

a tento řádek cca 283:

 

'.(float)(($specificPrice AND $specificPrice['reduction_type'] == 'amount') ? (!$specificPrice['id_currency'] ? Tools::convertPrice($specificPrice['reduction'], $order->id_currency) : $specificPrice['reduction']) : 0.00).',

 

změňte na:

 

'.(float)(($specificPrice AND $specificPrice['reduction_type'] == 'amount') ? (!$specificPrice['id_currency'] ? Tools::convertPrice( ( $pocitej == 1 ? $specificPrice['reduction'] / (($tax_rate_amount + 100) / 100) : $specificPrice['reduction']) , $order->id_currency) : $specificPrice['reduction']) : 0.00).',

 

V příloze hotový soubor pro 1.4.9.0

 

Celá oprava ovlivní jen zápis slevy částkou do vytvořené objednávky (pokud je prodej do ciziny a zákazník má své DIČ), aby jste neprodávali za nižší ceny než prezentujete na webu (v případě nestavené slevy částkou). Zpětný přepočet cen položek atd. se nemění a zobrazuje ceny položek v pořádku.

 

Díky

PaymentModule.zip

Edited by DaveM (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...