I have 3 purchase receipts against 1 purchase order.
Iam getting below values for all 3 purchase receipts.

But i want to print first 2 lines for purchase receipt-1 ,
next 2 lines for purchase receipt-2 ,
last 2 lines for purchase receipt-3.
Code::
{%- set total_received_qty = {} -%}
{%- for row in doc.items -%}
{%- set item_code = row.item_code -%}
{%- set _ = total_received_qty.update({item_code: 0}) -%}
{%- set purchase_receipt_items = frappe.get_all("Purchase Receipt Item", filters={"parenttype": "Purchase Receipt", "item_code": item_code, "purchase_order": row.purchase_order}, fields=["qty"]) -%}
{% set po = frappe.get_doc("Purchase Order", row.purchase_order) %}
{%- for poi in po.items if row.item_code == poi.item_code -%}
{%- for pr in purchase_receipt_items -%}
{%- set _ = total_received_qty.update({item_code: total_received_qty[item_code] + pr.qty}) -%}
{%- set remaining_qty = poi.qty - total_received_qty[item_code] %}
<p style="padding: 10px;"><b>Total Received Quantity :</b> {{ total_received_qty[item_code] }}</p>
<p style="padding: 10px;"><b>Remaining Quantity :</b> {{ remaining_qty }}</p>
{%- endfor %}
{%- endfor %}
{%- endfor %}
Help me to do this.
Any ideas are highly appreciable.
Thanks in advance.
NCP
2
Try it.
{%- set purchase_receipts = {} -%}
{%- for row in doc.items -%}
{%- set item_code = row.item_code -%}
{%- set purchase_receipt_items = frappe.get_all("Purchase Receipt Item", filters={"parenttype": "Purchase Receipt", "item_code": item_code, "purchase_order": row.purchase_order}, fields=["qty", "parent"]) -%}
{%- for pr_item in purchase_receipt_items -%}
{%- set pr_name = pr_item.parent -%}
{%- if pr_name not in purchase_receipts -%}
{%- set _ = purchase_receipts.update({pr_name: []}) -%}
{%- endif -%}
{%- set _ = purchase_receipts[pr_name].append(pr_item) -%}
{%- endfor -%}
{%- endfor -%}
{%- for pr_name, items in purchase_receipts.items() -%}
<h2>Purchase Receipt: {{ pr_name }}</h2>
{%- for pr_item in items -%}
{%- set po = frappe.get_doc("Purchase Order", row.purchase_order) %}
{%- for poi in po.items if pr_item.item_code == poi.item_code -%}
{%- set total_received_qty = sum(i.qty for i in items if i.item_code == pr_item.item_code) -%}
{%- set remaining_qty = poi.qty - total_received_qty -%}
<p style="padding: 10px;"><b>Item Code:</b> {{ pr_item.item_code }}</p>
<p style="padding: 10px;"><b>Quantity:</b> {{ pr_item.qty }}</p>
<p style="padding: 10px;"><b>Total Received Quantity:</b> {{ total_received_qty }}</p>
<p style="padding: 10px;"><b>Remaining Quantity:</b> {{ remaining_qty }}</p>
{%- endfor -%}
{%- endfor -%}
{%- endfor -%}
@NCP Thank you for your fast reply.

Getting these for all three documents.
Thank you all !
I got a solution.
NCP
5
Please share the solution code, so helpful for someone.
Okay @NCP Sir.
I simply compare the document names.
{%- set total_received_qty = {} -%}
{%- set item_code = row.item_code -%}
{% set _ = total_received_qty.update({item_code: 0}) %}
{%- set purchase_receipt_items = frappe.get_all("Purchase Receipt Item", filters={"parenttype": "Purchase Receipt", "item_code": item_code, "purchase_order": row.purchase_order}, fields=["qty","parent"]) -%}
{% set po = frappe.get_doc("Purchase Order", row.purchase_order) %}
{% if doc.docstatus==1 %}
{%- for poi in po.items if row.item_code == poi.item_code -%}
{%- for pr in purchase_receipt_items -%}
{% set purchase_receipt = frappe.get_doc("Purchase Receipt", pr.parent) %}
{% set pr_number = purchase_receipt.name %}
{% if pr_number < doc.name %}
{% set document_status = frappe.db.get_value('Purchase Receipt', pr_number, 'docstatus') %}
{% if document_status == 1 %}
{% set _ = total_received_qty.update({item_code: total_received_qty[item_code] + pr.qty}) %}
{% endif %}
{% else %}
{% set document_status = frappe.db.get_value('Purchase Receipt', pr_number, 'docstatus') %}
{% if document_status == 1 %}
{% set _ = total_received_qty.update({item_code: row.received_qty}) %}
{% endif %}
{% endif %}
{%- endfor %}
{%- set remaining_qty = poi.qty - total_received_qty[item_code] %}
{% if not doc.is_return %}<td style="text-align:right">{{ remaining_qty }}</td>{% endif %}
{%- endfor %}
{% else %}
{%- set quantity = poi.qty -%}
{%- set purchase_receipt_items = frappe.get_all("Purchase Receipt Item", filters={"parenttype": "Purchase Receipt", "item_code": item_code, "purchase_order": row.purchase_order,"docstatus":1}, fields=["qty","parent"]) -%}
{%- set qty = purchase_receipt_items[0]['qty'] if purchase_receipt_items else 0 -%}
{%- set quantity = quantity - qty -%}
{% if not doc.is_return %}<td style="text-align:right">{{ quantity }}</td>{% endif %}
{% endif %}