2010-12-07 10 views
5

के लिए बिक्री कर रणनीति लागू करना यहां दक्षिण अफ्रीका में हमारे पास वैल्यू एडेड टैक्स (वैट) है जो बिक्री कर के बराबर है और वर्तमान में 14% पर तय है, लेकिन किसी भी समय बदल सकता है।चालान

मुझे इनवॉइस पर वैट शामिल करने की आवश्यकता है (जो अपरिवर्तनीय हैं) कई चालान लाइन शामिल हैं। प्रत्येक पंक्ति एक बूलियन संपत्ति, IsTaxable के साथ Product का संदर्भ देती है, और लगभग सभी उत्पाद कर योग्य हैं।

मैं डेटाबेस में प्री-टैक्स की कीमतों को स्टोर नहीं करना चाहता, क्योंकि इससे वास्तविक कीमत को पढ़ने में मुश्किल होती है जिसे ग्राहक भुगतान करने जा रहे हैं और हर जगह मैं उन कीमतों को प्रदर्शित करता हूं, मुझे तब याद रखना होगा कर जोड़ें और जब वैट दर बदलती है, इस विशेष व्यवसाय के लिए, सभी कीमतों को स्वचालित रूप से बदलने के लिए यह अवांछनीय है।

तो मुझे लगता है कि एक रिवर्स टैक्स गणना जाने का तरीका है और शायद असामान्य नहीं है। चालान कुल सभी चालान लाइन योगों का योग है, जिसमें कोई भी लाइन छूट शामिल है और कर-समावेशी होना चाहिए। इसलिए चालान ही कुल कर-सहित है:

TaxTotal = InvoiceTotal/(1 + TaxRate), 

जहां InvoiceTotal कर-सहित और TaxRate == 0.14

चालान, एक बार जारी (वे अडिग हैं) बदला नहीं जा सकता है के बाद से किया जाना चाहिए मैं है:

  1. मेरी Invoices तालिका में कोई भी Tax राशि संग्रहीत नहीं करता है जो परिवर्तित नहीं होता है? या ...
  2. प्रत्येक चालान लाइन के लिए कर राशि स्टोर करें और जब भी मैं चालान प्रदर्शित करता हूं तो चालान कर कुल की गणना करता हूं?

विकल्प 2 एक डीबीए बिंदु के देखने से सुरक्षित लगता है अगर एक चालान कभी मैन्युअल रूप बदल जाते हैं तो टैक्स सही ढंग से गणना की जाएगी के बाद से, लेकिन यदि चालान पहले से ही जारी किया गया है, यह अभी भी एक समस्या प्रस्तुत करता है असंगतता का। यदि मैं विकल्प 1 के साथ चिपकता हूं, तो मैं एक पंक्ति वस्तु के लिए कर प्रदर्शित नहीं कर सकता, लेकिन यह कर कुल प्रबंधन और कुल गणना को आसान बनाता है, हालांकि यह कभी भी बदले में असंगतता भी प्रस्तुत करता है।

मैं दोनों नहीं कर सकता क्योंकि यह डेटा डुप्लिकेट करेगा।

  • जाने का सही तरीका कौन सा है? या एक रिवर्स कर गणना वास्तव में एक बुरा विचार है?

उत्तर

4

डेटा बेस में पूर्व कर मूल्य स्टोर करें, आप कर मूल्य के साथ भी स्टोर कर सकते हैं और अधिकांश उपयोग मामलों के लिए इसका उपयोग कर सकते हैं।

बड़ी समस्या मैं फोर्स इनवॉइस पर वैट के लिए राउंडिंग नियम है। ये (कम से कम ब्रिटेन में) वास्तव में सख्त हैं और इस अधिकार को पाने के लिए आपकी रिवर्स गणना के लिए कोई रास्ता नहीं है।

इसके अलावा आपको टैक्स आइटम को आइटम द्वारा स्टोर करने की आवश्यकता है क्योंकि वैट ड्रेगन आपको एक आइटम लौटाए जाने पर कर चुकाने की अपेक्षा करेगा। शुरू करने से पहले आपको वास्तव में स्थानीय बिक्री कर नियमों को पकड़ना होगा।

मेरा अनुभव यह है कि यदि आप गणना करते हैं तो आप कोयले पर खींच लिया जा सकता है, और यदि आप ऑडिट कर रहे हैं तो आपको यह दिखाने में सक्षम होना चाहिए कि आप वैट आंकड़े पर कैसे पहुंचे हैं ताकि भंडारण न हो आपकी गणना में उपयोग की जाने वाली कुछ भी आपको पकड़ लेगी।

+2

+1। यूरोप में, प्रमाणित व्यवसाय के लिए, अलग-अलग उत्पाद परिवारों के लिए अलग-अलग दरें हो सकती हैं, इसलिए मैं फैमिली आईडी को उत्पाद तालिका में और परिवार तालिका में टैक्सकोड स्टोर करता हूं। दर वैट टेबल में संग्रहीत है। मैं ग्राहकों को एक वैट श्रेणी भी जोड़ता हूं, क्योंकि कुछ ग्राहक कुछ मामलों में 0% का भुगतान कर सकते हैं। इसके अलावा कुछ चालानों में अलग-अलग लाइनों पर अलग-अलग VAT दरें हो सकती हैं। –

1

मैं पूरी तरह जेम्स एंडरसन से सहमत हूं! जर्मनी में वैट गणना के अनुसार नियम ब्रिटेन के जितना सख्त हैं।

हमें वैट प्रतिशत द्वारा शुद्ध मूल्य जमा करना है (हमारे पास तीन प्रकार हैं: 0, 7 और 1 9 प्रतिशत) दो अंकों से घिरा हुआ है। इस गोलाकार मूल्य पर हमें वैट की गणना करना है। वैट को दो अंकों से गोल किया जाना है और इनवॉइस पर दिखाया जाना है।

लेकिन फिर भी आप कर सहित कीमतों को स्टोर कर सकते हैं। यह निर्भर करता है कि टैक्स बढ़ने पर शुद्ध कीमतें या अंत कीमतें अपरिवर्तित रहती हैं या नहीं। जर्मनी में आमतौर पर बी 2 बी शुद्ध मूल्य अपरिवर्तित रहते हैं लेकिन बी 2 सी अंत की कीमत अपरिवर्तित बनी रहती है - यह निर्भर करता है।

with cPriceIncludingVAT as (
    select InvoiceNo, VATPercentage, 
      PriceIncludingVAT = cast(sum(amount * price) as decimal(12,2)) 
    from InvoiceLines inner join VAT on VAT.VATID=InvoiceLines.VATID 
    group by InvoiceNo, VATPercentage 
), 
cVATcalculated as (
    select InvoiceNo, VATPercentage, PriceIncludingVAT, 
      VAT = cast(PriceIncludingVAT * VATPercentage/
         (1+VATPercentage) as decimal(12,2)) 
    from cVATcalculated 
) 
select InvoiceNo, VATPercentage, PriceIncludingVAT, VAT, 
      NetPrice = PriceIncludingVAT - VAT 
from  cVATcalculated; 

आप एक दृश्य के रूप में सहेजना यदि आप वास्तव में एक गतिशील गणना की वैट मूल्य पुनर्मुद्रण में सक्षम होना चाहिए:

आप इसे इस तरह से गणना कर सकते हैं। जब कोई लेखा प्रणाली होती है तो आप उसी डेटा को निर्यात (और चाहिए) निर्यात कर सकते हैं। आमतौर पर आपको डेटाबेस के भीतर फ़ील्ड मानों के रूप में इन्हें मूल्यों को सहेजना चाहिए - लेकिन मैं समझता हूं कि क्या आप अधिक गतिशील दृष्टिकोण चाहते हैं ...

0

अन्य उत्तरों अच्छे हैं, लेकिन जैसा कि idevlop उल्लेख करता है, यह लगभग एक है निश्चित रूप से भविष्य में कुछ समय पर, आप विभिन्न श्रेणियों के उत्पादों के लिए अलग-अलग दरें शुरू कर देंगे। उस क्षमता को आगे बढ़ाकर आपको बाद में दिल का दर्द बचाएगा। वहाँ किया गया था कि।

संबंधित मुद्दे