def _get_filters(filters):
    branches = split_to_list(filters.branches)

    join_clauses = compose(" AND ".join, concatv)

    si_clauses = join_clauses(
        ["si.docstatus = 1"],
        ["si.os_branch IN %(branches)s"] if branches else [],
    )
    dn_clauses = join_clauses(
        [
            "dn.docstatus = 1",
            "dn.posting_date BETWEEN %(from_date)s AND %(to_date)s",
            "so.workflow_state = 'Collected'",
        ],
        ["dn.os_branch IN %(branches)s"] if branches else [],
    )

    values = merge(
        filters,
        {"branches": branches} if branches else {},
        {
            "selling_pl": "Standard Selling",
            "min_selling_pl1": "Minimum Selling",
            "min_selling_pl2": "Minimum Selling 2",
        },
    )
    return (
        {"si_clauses": si_clauses, "dn_clauses": dn_clauses},
        values,
    )
def _get_filters(filters):
    branches = split_to_list(filters.branches)

    join_clauses = compose(lambda x: " AND ".join(x), concatv)
    clauses = join_clauses(
        ["TRUE"],
        ["branch.name IN %(branches)s"] if branches else [],
        ["i.brand = %(brand)s"] if filters.brand else [],
        ["i.item_code = %(item_code)s"] if filters.item_code else [],
        ["i.item_group = %(item_group)s"] if filters.item_group else [],
        ["INSTR(i.item_name, %(item_name)s) > 0"] if filters.item_name else [],
    )
    si_clauses = join_clauses(
        ["si.docstatus = 1", "si.posting_date BETWEEN %(from_date)s AND %(to_date)s"],
        ["si.os_branch IN %(branches)s"] if branches else [],
    )
    values = merge(filters, {"branches": branches} if branches else {})
    return (
        {
            "clauses": clauses,
            "group_by": "bin.item_code, branch.name" if branches else "bin.item_code",
            "si_clauses": si_clauses,
            "si_group_by": "sii.item_code, si.os_branch"
            if branches
            else "sii.item_code",
        },
        values,
    )
def _get_filters(filters):
    branches = split_to_list(filters.branches)

    clauses = concatv(
        ["si.docstatus = 1"],
        ["si.os_branch IN %(branches)s"] if branches else [],
        [
            "(si.update_stock = 1 OR sii.delivered_qty = sii.qty)",
            """
                (
                    (
                        si.update_stock = 1 AND
                        si.posting_date BETWEEN %(from_date)s AND %(to_date)s
                    ) OR (
                        si.update_stock = 0 AND
                        dn.posting_date BETWEEN %(from_date)s AND %(to_date)s
                    )
                )
            """,
        ] if filters.report_type == "Collected" else [],
        [
            "(si.update_stock = 0 OR sii.delivered_qty < sii.qty)",
            "si.posting_date BETWEEN %(from_date)s AND %(to_date)s",
        ] if filters.report_type == "Achieved" else [],
    )
    values = merge(
        filters,
        {"branches": branches} if branches else {},
        {
            "selling_pl": "Standard Selling",
            "min_selling_pl1": "Minimum Selling",
            "min_selling_pl2": "Minimum Selling 2",
        },
    )
    return " AND ".join(clauses), values
Esempio n. 4
0
def _get_filters(filters):
    item_groups = split_to_list(filters.item_groups)
    brands = split_to_list(filters.brands)
    item_codes = split_to_list(filters.item_codes)
    clauses = concatv(
        ["i.disabled = 0"],
        ["i.item_group IN %(item_groups)s"] if item_groups else [],
        ["i.brand IN %(brands)s"] if brands else [],
        ["i.item_code IN %(item_codes)s"] if item_codes else [],
        ["INSTR(i.item_name, %(item_name)s) > 0"] if filters.item_name else [],
    )
    values = merge(
        pick(["item_name"], filters),
        {"item_groups": item_groups} if item_groups else {},
        {"brands": brands} if brands else {},
        {"item_codes": item_codes} if item_codes else {},
    )
    return " AND ".join(clauses), values
Esempio n. 5
0
def _get_filters(filters):
    branches = split_to_list(filters.branch)
    clauses = concatv(
        ["s.docstatus = 1", "s.posting_date = %(posting_date)s"],
        ["s.os_branch IN %(branches)s"] if branches else [],
    )
    values = merge(pick(["posting_date"], filters),
                   {"branches": branches} if branches else {})
    return " AND ".join(clauses), values
Esempio n. 6
0
    def get_branches():
        if any(role in ["Accounts Manager"] for role in frappe.get_roles()):
            return split_to_list(filters.branches)
        user_branch = get_user_branch()
        if (any(role in ["Branch User", "Branch Stock"]
                for role in frappe.get_roles()) and user_branch):
            return [user_branch]

        frappe.throw(
            _("Manager privilege or Branch User / Branch Stock role required"))
def _get_filters(filters):
    modes_of_payment = split_to_list(filters.modes_of_payment)
    branches = split_to_list(filters.branches)
    si_clauses = concatv(
        [
            "si.docstatus = 1",
            "si.posting_date BETWEEN %(start_date)s AND %(end_date)s"
        ],
        ["si.is_return = 0"] if cint(filters.hide_returns) else [],
        ["si.os_branch IN %(branches)s"] if branches else [],
        ["sip.mode_of_payment IN %(modes_of_payment)s"]
        if modes_of_payment else [],
    )
    pe_clauses = concatv(
        [
            "pe.docstatus = 1",
            "pe.party_type = 'Customer'",
            "pe.posting_date BETWEEN %(start_date)s AND %(end_date)s",
        ],
        ["pe.payment_type = 'Receive'"] if cint(filters.hide_returns) else [],
        ["pe.os_branch IN %(branches)s"] if branches else [],
        ["pe.mode_of_payment IN %(modes_of_payment)s"]
        if modes_of_payment else [],
    )
    values = merge(
        pick(["start_date", "end_date"], filters),
        {"branches": branches} if branches else {},
        {"modes_of_payment": modes_of_payment} if modes_of_payment else {},
    )
    return (
        {
            "si_clauses": " AND ".join(si_clauses),
            "pe_clauses": " AND ".join(pe_clauses),
        },
        values,
    )
Esempio n. 8
0
def _get_filters(filters):
    branches = split_to_list(filters.branches)
    branch_clause = concatv(["disabled = 0"],
                            ["branch IN %(branches)s"] if branches else [])
    customer_clause = concatv(
        ["os_loyalty_activation_date BETWEEN %(from_date)s AND %(to_date)s"],
        ["branch IN %(branches)s"] if branches else [],
    )
    values = merge(
        {
            "from_date": filters.date_range[0],
            "to_date": filters.date_range[1]
        },
        {"branches": branches} if branches else {},
    )
    return (
        {
            "branch_clause": " AND ".join(branch_clause),
            "customer_clause": " AND ".join(customer_clause),
        },
        values,
    )