تحديث اسعار المردود من الفاتورة

Viewed 34

switchSource=fromDoc(
details.price.unitPrice=details.price.unitPrice
details.price.price=details.price.price
details.price.discount1.percentage=details.price.discount1.percentage
details.price.discount1.value=details.price.discount1.value
details.price.tax1.maxNormalPercent=details.price.tax1.maxNormalPercent
details.price.tax1.value=details.price.tax1.value
)endSwitchSource

تم عمل مسار كيان بالاتي لاحضار بيانت الصنف اسعار و خصومات داخل المردود من الفاتورة لكنه لا يعمل بشكل صحيح يحضر اول سطر

1 Answers

عند النسخ سطر-بسطر، يقوم النظام افتراضيًا بمطابقة السطور حسب ترتيبها (الموضع): السطر الأول من المردود مع السطر الأول من الفاتورة، الثاني مع الثاني، وهكذا. لذلك إذا كان ترتيب سطور المردود مختلفًا عن ترتيب سطور الفاتورة الأصلية — أو كان عددها مختلفًا — فإن القيم تُنسخ إلى السطور الخطأ، وهو ما يظهر عندك كأن البيانات لا تأتي صحيحة.

الحل أن تطابق السطور بمفتاح يربط كل سطر بنظيره بدلًا من الاعتماد على الترتيب. سطر المردود يحمل حقل sourceLineId الذي يشير إلى id سطر الفاتورة الأصلية، فنستخدمه داخل matchLinesBy:

switchSource=fromDoc(
  matchLinesBy=details.sourceLineId=details.id(
    details.price.unitPrice=details.price.unitPrice
    details.price.price=details.price.price
    details.price.discount1.percentage=details.price.discount1.percentage
    details.price.discount1.value=details.price.discount1.value
    details.price.tax1.maxNormalPercent=details.price.tax1.maxNormalPercent
    details.price.tax1.value=details.price.tax1.value
  )endMatchLinesBy
)endSwitchSource

بهذا الشكل:

  1. يتم الانتقال إلى المستند الأصلي المشار إليه بـ fromDoc.
  2. يُطابَق كل سطر في المردود مع سطر الفاتورة الذي يحمل نفس المعرّف عبر sourceLineId، بدلًا من المطابقة حسب الترتيب.
  3. تُنسخ الأسعار والخصومات والضرائب بين السطور المتطابقة، فتظهر القيم الصحيحة في كل سطر مهما اختلف ترتيب السطور أو عددها.

في حالة إدخال الأصناف يدويًا (مثلًا عبر ماسح الباركود): قد لا يكون هناك ربط عبر sourceLineId. في هذه الحالة طابِق السطور بالصنف نفسه details.item.item، ويمكنك إضافة حقول أخرى تميّز السطر (مثل اللون details.specificDimensions.color) للتفرقة بين السطور التي تحمل نفس الصنف. تفصل بين حقول المطابقة بفاصلة:

switchSource=fromDoc(
  matchLinesBy=details.item.item=details.item.item,details.specificDimensions.color=details.specificDimensions.color(
    details.price.unitPrice=details.price.unitPrice
    details.price.price=details.price.price
    details.price.discount1.percentage=details.price.discount1.percentage
    details.price.discount1.value=details.price.discount1.value
    details.price.tax1.maxNormalPercent=details.price.tax1.maxNormalPercent
    details.price.tax1.value=details.price.tax1.value
  )endMatchLinesBy
)endSwitchSource

هنا يُطابَق سطر المردود مع سطر الفاتورة الذي يحمل نفس الصنف ونفس اللون معًا، وهو مفيد عندما تُدخَل الأصناف يدويًا دون ربط مباشر بالفاتورة الأصلية.

Related