دليل المطوّر

XML لأمر البيع في Tally Prime

يقبل TallyPrime القسائم عبر HTTP على الجهاز الذي يعمل عليه. يُظهر هذا الدليل طلبًا كاملًا لأمر البيع، ويشرح كل جزء، ويحصر الأخطاء التي من المرجح أن تراها.

قبل أن تبدأ

  • يجب أن يكون Tally Prime قيد التشغيل مع فتح الشركة، ومضبطاً للعمل كخادم (المنفذ 9000 افتراضياً).
  • يجب تفعيل معالجة الطلبات (F11) حتى يوجد نوع قسيمة Sales Order.
  • يجب أن يكون حساب الطرف، وحساب المبيعات، وقسائم GST، وكل عنصر مخزون موجودًا مسبقًا بأسماء مطابقة تمامًا لما ترسله.
  • لا يوجد مصادقة لخادم XML. استدعِه من نفس الجهاز ولا تعرّض المنفذ 9000 أبدًا لشبكة لا تتحكم بها.

طلب كامل

تم توليد هذا الطلب بواسطة نفس الكود الذي تستخدمه OrderDak في الإنتاج، من طلب تجريبي من سطرين. أرسله مع POST http://localhost:9000 والجسم كما هو موضح.

<ENVELOPE>
 <HEADER><TALLYREQUEST>Import Data</TALLYREQUEST></HEADER>
 <BODY>
  <IMPORTDATA>
   <REQUESTDESC>
    <REPORTNAME>Vouchers</REPORTNAME>
    <STATICVARIABLES><SVCURRENTCOMPANY>Sample Electricals Distributors</SVCURRENTCOMPANY></STATICVARIABLES>
   </REQUESTDESC>
   <REQUESTDATA>
    <TALLYMESSAGE xmlns:UDF="TallyUDF">
     <VOUCHER VCHTYPE="Sales Order" ACTION="Create" OBJVIEW="Invoice Voucher View">
      <DATE>20261017</DATE>
      <VOUCHERTYPENAME>Sales Order</VOUCHERTYPENAME>
      <REFERENCE>MES/PO/2026-27/0412</REFERENCE>
      <PARTYLEDGERNAME>Mehta Electric Stores</PARTYLEDGERNAME>
      <PARTYNAME>Mehta Electric Stores</PARTYNAME>
      <PERSISTEDVIEW>Invoice Voucher View</PERSISTEDVIEW>
      <ISINVOICE>Yes</ISINVOICE>
      <LEDGERENTRIES.LIST>
       <LEDGERNAME>Mehta Electric Stores</LEDGERNAME>
       <ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>
       <ISPARTYLEDGER>Yes</ISPARTYLEDGER>
       <AMOUNT>-65608.00</AMOUNT>
      </LEDGERENTRIES.LIST>
      <LEDGERENTRIES.LIST>
       <LEDGERNAME>CGST</LEDGERNAME>
       <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
       <AMOUNT>5004.00</AMOUNT>
      </LEDGERENTRIES.LIST>
      <LEDGERENTRIES.LIST>
       <LEDGERNAME>SGST</LEDGERNAME>
       <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
       <AMOUNT>5004.00</AMOUNT>
      </LEDGERENTRIES.LIST>
      <ALLINVENTORYENTRIES.LIST>
       <STOCKITEMNAME>FR PVC Insulated Wire 1.5 sqmm Red 90m</STOCKITEMNAME>
       <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
       <RATE>1540.00/Coil</RATE>
       <AMOUNT>30800.00</AMOUNT>
       <ACTUALQTY> 20 Coil</ACTUALQTY>
       <BILLEDQTY> 20 Coil</BILLEDQTY>
       <BATCHALLOCATIONS.LIST>
        <GODOWNNAME>Main Location</GODOWNNAME>
        <BATCHNAME>Primary Batch</BATCHNAME>
        <ORDERNO>MES/PO/2026-27/0412</ORDERNO>
        <AMOUNT>30800.00</AMOUNT>
        <ACTUALQTY> 20 Coil</ACTUALQTY>
        <BILLEDQTY> 20 Coil</BILLEDQTY>
        <ORDERDUEDATE P="22-Oct-2026">22-Oct-2026</ORDERDUEDATE>
       </BATCHALLOCATIONS.LIST>
       <ACCOUNTINGALLOCATIONS.LIST>
        <LEDGERNAME>Sales GST 18%</LEDGERNAME>
        <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
        <AMOUNT>30800.00</AMOUNT>
       </ACCOUNTINGALLOCATIONS.LIST>
      </ALLINVENTORYENTRIES.LIST>
      <ALLINVENTORYENTRIES.LIST>
       <STOCKITEMNAME>FR PVC Insulated Wire 2.5 sqmm Red 90m</STOCKITEMNAME>
       <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
       <RATE>2480.00/Coil</RATE>
       <AMOUNT>24800.00</AMOUNT>
       <ACTUALQTY> 10 Coil</ACTUALQTY>
       <BILLEDQTY> 10 Coil</BILLEDQTY>
       <BATCHALLOCATIONS.LIST>
        <GODOWNNAME>Main Location</GODOWNNAME>
        <BATCHNAME>Primary Batch</BATCHNAME>
        <ORDERNO>MES/PO/2026-27/0412</ORDERNO>
        <AMOUNT>24800.00</AMOUNT>
        <ACTUALQTY> 10 Coil</ACTUALQTY>
        <BILLEDQTY> 10 Coil</BILLEDQTY>
        <ORDERDUEDATE P="22-Oct-2026">22-Oct-2026</ORDERDUEDATE>
       </BATCHALLOCATIONS.LIST>
       <ACCOUNTINGALLOCATIONS.LIST>
        <LEDGERNAME>Sales GST 18%</LEDGERNAME>
        <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
        <AMOUNT>24800.00</AMOUNT>
       </ACCOUNTINGALLOCATIONS.LIST>
      </ALLINVENTORYENTRIES.LIST>
     </VOUCHER>
    </TALLYMESSAGE>
   </REQUESTDATA>
  </IMPORTDATA>
 </BODY>
</ENVELOPE>

دور كل جزء

  • الغلاف: TALLYREQUEST هو Import Data، وREPORTNAME هو Vouchers، وSVCURRENTCOMPANY يحدد اسم الشركة كما يظهر في Tally بالضبط.
  • التواريخ: يستخدم DATE الصيغة YYYYMMDD. تاريخ استحقاق الطلب داخل تخصيص الدفعة يستخدم صيغة العرض في Tally، على سبيل المثال 22-Oct-2026.
  • اتفاقية الإشارة: المدينات سالبة مع ISDEEMEDPOSITIVE بنعم؛ والدائنة إيجابية مع لا. في أمر البيع، يُدبَّن الطرف مقابل الإجمالي شامل GST، وتُدوَّن دفاتر المبيعات وGST كدائنة. يجب أن يتوازن القسيمة إلى صفر.
  • إدخالات المخزون: السعر يحمل الوحدة (1540.00/Coil)، والكميات تحمل مسافة بادئة والوحدة ( 20 Coil)، وتسمية التخصيص المحاسبي تشير إلى دفتر المبيعات.
  • تخصيص الدفعة: يحتفظ بالمستودع (Main Location عند تعطيل المستودعات)، ورقم الطلب، وتاريخ الاستحقاق.
  • GST: أرسل دفاتر CGST وSGST لبيع داخل ولايتك، وIGST لبيع إلى ولاية أخرى. بعض الإعدادات تتيح لـ Tally حساب الضريبة من صنف المخزون بدلاً من ذلك؛ صدّر أمر بيع واحد مُعد يدوياً من شركتك لمعرفة أيهما ينطبق.
  • الهروب من الأحرف الخاصة: الأسماء مثل Mehta & Co يجب كتابتها على شكل Mehta &amp; Co.

قراءة الاستجابة

<RESPONSE>
  <CREATED>1</CREATED>
  <ALTERED>0</ALTERED>
  <LASTVCHID>812</LASTVCHID>
  <ERRORS>0</ERRORS>
</RESPONSE>

النجاح هو CREATED بقيمة 1 مع ERRORS بقيمة 0. احتفظ بـ LASTVCHID لتتمكن من تعديل أو إلغاء القسيمة لاحقاً. عند حدوث فشل، يكون ERRORS أكبر من صفر وLINEERROR يوضح السبب.

الأخطاء الشائعة

  • صنف المخزون أو الدفتر غير موجود: الاسم يختلف عن اسم Tally بمسافة أو حالة أحرف أو نقطة. اقرأ الأسماء الرئيسية من Tally أولاً وقارنها بها.
  • إجماليات القسيمة غير متطابقة: بسبب التقريب. قم بتقريب كل سطر إلى خانتين عشريتين قبل جمع الضريبة ومبلغ الطرف.
  • نوع القسيمة غير موجود: معالجة الطلبات معطلة، أو تم تغيير اسم نوع القسيمة.
  • لا يحدث شيء: لا توجد شركة مفتوحة، أو Tally لا يعمل كخادم.

تفضل عدم بناء هذا والحفاظ عليه بنفسك؟

يقوم OrderDak بقراءة أوامر شراء عملائك، ومطابقتها مع أصناف المخزون لديك، ونشر أوامر مبيعات مثل تلك المذكورة أعلاه، مع فحوصات للسعر والائتمان والمخزون.