תארו לעצמכם: המוצר שלכם עם מע"מ 20% מגיע לעגלת הקניות של קונה מקזחסטן, שם השיעור הוא 12%. אם המסים מחושבים לפי שיעור רוסי יחיד, אתם מאבדים תחרותיות או משלמים יותר מדי. זהו כאב נפוץ בכניסה לשווקים בינלאומיים. אנו פותרים משימות אלה באמצעות מנגנוני Bitrix סטנדרטיים ללא עקיפות. עם ניסיון של למעלה מ-10 שנים, הגדרנו מסים עבור יותר מ-50 חנויות מקוונות, וב-80% מהמקרים הבעיה נעוצה בחוסר התאמה בין דגלי VAT_INCLUDED ו-IS_IN_PRICE. המומחים המוסמכים שלנו מבטיחים דיוק של 95% בזיהוי אזור, וחוסכים ללקוחות עד 30% בעלויות מס. החל מ-€500 עבור הגדרה בסיסית.
בעיות שאנו פותרים
תרחיש טיפוסי: חנות Bitrix מתחילה לייצא, אך המסים ממשיכים להיות מחושבים לפי שיעור יחיד. או שמוצרים עם מע"מ 0% לקזחסטן מופיעים בעגלה עם מע"מ רוסי של 20%. שורש הבעיות הוא תצורה שגויה של קבוצות מס והיעדר קישור לאזור הקונה. ביקורות חושפות עד 15% מהמוצרים עם הגדרות שגויות. אנו מתקנים זאת באמצעות מתודולוגיה מוכחת.
כיצד פועלות קבוצות מס ב-Bitrix
Bitrix מיישמת שיעורים אזוריים באמצעות מנגנון קבוצות המס. טבלת b_sale_tax מאחסנת קבוצות מס, b_sale_tax_rate מאחסנת שיעורים בתוך קבוצות המקושרות לאזור. כל שיעור יכול להיות מקושר למדינה, אזור או עיר. פרטים נוספים — תיעוד רשמי.
מבנה של b_sale_tax_rate: TAX_ID (קישור לקבוצה), COUNTRY_ID, REGION, CITY, RATE, IS_PERCENT (Y/N), IS_IN_PRICE (Y/N — מקביל ל-VAT_INCLUDED), ACTIVE.
דוגמה ליצירת קבוצה עם שיעורים אזוריים:
// Создать группу $taxResult = \Bitrix\Sale\Tax::add([ 'NAME' => 'НДС', 'ACTIVE' => 'Y', 'LID' => 's1', ]); $taxId = $taxResult->getId(); // Ставка для Беларуси \Bitrix\Sale\TaxRate::add([ 'TAX_ID' => $taxId, 'COUNTRY_ID' => 'BY', 'RATE' => 20, 'IS_PERCENT' => 'Y', 'IS_IN_PRICE' => 'Y', 'ACTIVE' => 'Y', ]); // Ставка для России \Bitrix\Sale\TaxRate::add([ 'TAX_ID' => $taxId, 'COUNTRY_ID' => 'RU', 'RATE' => 20, 'IS_PERCENT' => 'Y', 'IS_IN_PRICE' => 'Y', 'ACTIVE' => 'Y', ]); כיצד מסים מקושרים להזמנה
השיעור החל נקבע ברגע חישוב העגלה. Bitrix קורא את כתובת הקונה ממאפייני ההזמנה (// Создать группу $taxResult = \Bitrix\Sale\Tax::add([ 'NAME' => 'НДС', 'ACTIVE' => 'Y', 'LID' => 's1', ]); $taxId = $taxResult->getId(); // Ставка для Беларуси \Bitrix\Sale\TaxRate::add([ 'TAX_ID' => $taxId, 'COUNTRY_ID' => 'BY', 'RATE' => 20, 'IS_PERCENT' => 'Y', 'IS_IN_PRICE' => 'Y', 'ACTIVE' => 'Y', ]); // Ставка для России \Bitrix\Sale\TaxRate::add([ 'TAX_ID' => $taxId, 'COUNTRY_ID' => 'RU', 'RATE' => 20, 'IS_PERCENT' => 'Y', 'IS_IN_PRICE' => 'Y', 'ACTIVE' => 'Y', ]); ) — הוא מחפש מאפיין מסוג b_sale_order_props_value או LOCATION עם קוד המדינה/אזור. הקישור של קבוצת מס לחנות מוגדר ב-TEXT. כל קבוצה יכולה להיות פעילה עבור אתר ספציפי (/bitrix/admin/sale_tax.php). במהלך חישוב העגלה, המודול LID קורא ל-sale עם פילטר לפי \Bitrix\Sale\Tax::getList() ומחיל את השיעור הראשון התואם לפי מדינה/אזור מהכתובת.
מדוע חשוב ליישר את VAT_INCLUDED ו-IS_IN_PRICE
אם מחירי הקטלוג כוללים מע"מ (LID) והשיעור האזורי נמוך יותר (למשל, 0% לייצוא), העגלה חייבת לחשב מחדש מחירים. Bitrix עושה זאת אוטומטית באמצעות מנגנון המס של המודול VAT_INCLUDED = Y, אך רק אם sale ב-IS_IN_PRICE = Y ו-b_sale_tax_rate ב-VAT_INCLUDED = Y תואמים.
חוסר התאמה בין שדות אלה הוא המקור העיקרי למע"מ שגוי עם שיעורים אזוריים. שאילתת אימות למציאת מוצרים לא תואמים:
SELECT cp.IBLOCK_ELEMENT_ID, cp.VAT_INCLUDED, cv.RATE FROM b_catalog_product cp LEFT JOIN b_catalog_vat cv ON cp.VAT_ID = cv.ID WHERE cp.VAT_ID IS NOT NULL AND cp.VAT_INCLUDED != 'Y'; יש להביא את כל הפריטים שנמצאו לכלל אחיד לפני הגדרת שיעורים אזוריים.
| סוג מוצר | VAT_INCLUDED | IS_IN_PRICE של השיעור | תוצאה |
|---|---|---|---|
| עם מע"מ | Y | Y | המחיר כולל מע"מ, השיעור מוחל |
| עם מע"מ | Y | N | מע"מ נוסף על גבי — מס כפול |
| ללא מע"מ | N | Y | מע"מ לא מנוכה — מחיר ללא מס |
כיצד לזהות אוטומטית את אזור הקונה
בעיה: הקונה לא תמיד ממלא את הכתובת לפני חישוב העגלה. לזיהוי אזור אוטומטי לפי IP, אנו משתמשים במודול b_catalog_product — מחלקה SELECT cp.IBLOCK_ELEMENT_ID, cp.VAT_INCLUDED, cv.RATE FROM b_catalog_product cp LEFT JOIN b_catalog_vat cv ON cp.VAT_ID = cv.ID WHERE cp.VAT_ID IS NOT NULL AND cp.VAT_INCLUDED != 'Y'; . הוא שואל את שירות המיקום הגיאוגרפי ומחזיר את המדינה/אזור עם דיוק של למעלה מ-95%. Handler מכניס את קוד המדינה למאפיין ההזמנה, והמסים מחושבים כראוי. זיהוי אוטומטי מהיר פי 5 מבחירה ידנית מרשימה ומבטל שגיאות.
AddEventHandler('sale', 'OnSaleBasketBeforeSaved', function($basket) { $order = $basket->getOrder(); if (!$order) return; $ip = $_SERVER['REMOTE_ADDR']; $location = \Bitrix\Seo\Ip2Location::getLocationByIp($ip); if ($location && $location['COUNTRY_CODE']) { $propertyCollection = $order->getPropertyCollection(); $prop = $propertyCollection->getItemByOrderPropertyCode('COUNTRY'); if ($prop) { $prop->setValue($location['COUNTRY_CODE']); } } }); טעויות נפוצות בהגדרת מסים אזוריים
| טעות | סיבה | פתרון |
|---|---|---|
| מס לא מחושב מחדש בעת שינוי אזור | שיעור לא מקושר לאזור ב-seo | הוספת רשומות עם \Bitrix\Seo\Ip2Location או AddEventHandler('sale', 'OnSaleBasketBeforeSaved', function($basket) { $order = $basket->getOrder(); if (!$order) return; $ip = $_SERVER['REMOTE_ADDR']; $location = \Bitrix\Seo\Ip2Location::getLocationByIp($ip); if ($location && $location['COUNTRY_CODE']) { $propertyCollection = $order->getPropertyCollection(); $prop = $propertyCollection->getItemByOrderPropertyCode('COUNTRY'); if ($prop) { $prop->setValue($location['COUNTRY_CODE']); } } }); |
| מע"מ כפול בעגלה | b_sale_tax_rate של המוצר ו-REGION של השיעור אינם תואמים | סנכרון דגלים באמצעות שאילתת SQL |
| מע"מ 0% לייצוא לא מוחל | לא נוצרה קבוצת מס נפרדת לייצוא | יצירת קבוצה עם RATE=0 וקישור למדינה |
איך אנחנו עושים את זה: מקרה אמיתי מהפרקטיקה שלנו
לחצו להרחבת מקרה הבוחן
עבור אחד מלקוחותינו, חנות אלקטרוניקה, המשימה הייתה מכירות ברוסיה ובקזחסטן. בקזחסטן, מע"מ הוא 12% (שיעור מופחת), אך העגלה חישבה 20%. לאחר הביקורת, מצאנו: קבוצת מס אחת, שיעור מקושר רק לרוסיה. הוספנו שיעור לקזחסטן עם RATE=12 וקישרנו אותו ל-COUNTRY_ID='KZ'. בנוסף, הגדרנו זיהוי אזור אוטומטי לפי IP. תוצאה: מסים מחושבים כראוי עבור כל קונה.
תהליך העבודה
- ניתוח — סקירת הגדרות המס הנוכחיות ותרחישי המסחר.
- עיצוב — תכנית של קבוצות מס ושיעורים עבור הגאוגרפיה שלכם.
- יישום — יצירת קבוצות, הגדרת זיהוי אזור אוטומטי, אינטגרציה עם 1C (אם נדרש חילופי CommerceML).
- בדיקות — אימות חישובים עבור כל אזור בסביבת בדיקה.
- השקה — החלת שינויים באתר החי, הדרכת צוות.
תוצרים
- ביקורת של תצורת המס הנוכחית
- יצירת עד 10 קבוצות מס ושיעורים
- הגדרת זיהוי אזור אוטומטי לפי IP
- אינטגרציה עם 1C UT/ERP באמצעות CommerceML
- תיעוד השינויים (תיעוד מערכת מלא)
- גישה למערכת והדרכת צוות
- חודש תמיכה חינם לאחר המסירה
- דיוק מובטח ומתודולוגיה מוסמכת
השירות שלנו כולל הגדרת שיעורי מס Bitrix, תצורת מסים אזוריים 1C-Bitrix, וניהול קבוצות מס Bitrix כדי להבטיח שמע"מ לפי מדינה Bitrix פועל כראוי. אנו מספקים גם טיפול במסים רב-מטבעיים Bitrix וזיהוי אזור אוטומטי Bitrix. תצורת שיעורי המס Bitrix נעשית על ידי מומחים מוסמכים Bitrix, עם תמיכה בשיעורי מס אירופיים Bitrix ומסי קטלוג Bitrix.
הערכת עלויות ולוחות זמנים
העלות מחושבת באופן אישי לפי מספר המדינות, השיעורים ומורכבות האינטגרציה. לוחות זמנים משוערים — בין 2 ל-7 ימי עסקים. החל מ-€500 עבור תצורה בסיסית. אם ברצונכם לבטל שגיאות בחישוב מע"מ — צרו קשר. נערוך ביקורת ונציע את הפתרון האופטימלי. קבלו ייעוץ חינם.
מקור: תיעוד רשמי של 1C-Bitrix וניסיון הפרויקטים שלנו.







