Ejemplo n.º 1
0
def sync_requisition_from_openlmis(domain, requisition_id, openlmis_endpoint):
    cases = []
    send_notification = False
    lmis_requisition_details = openlmis_endpoint.get_requisition_details(
        requisition_id)
    if lmis_requisition_details:
        rec_cases = [
            c for c in RequisitionCase.get_by_external_id(
                domain, str(lmis_requisition_details.id))
            if c.type == const.REQUISITION_CASE_TYPE
        ]

        if len(rec_cases) == 0:
            products = [
                product for product in lmis_requisition_details.products
                if product.skipped == False
            ]
            for product in products:
                pdt = Product.get_by_code(domain, product.code.lower())
                if pdt:
                    case = lmis_requisition_details.to_requisition_case(
                        pdt._id)
                    case.save()
                    if case.requisition_status == 'AUTHORIZED':
                        send_notification = True
                    cases.append(case)
Ejemplo n.º 2
0
def sync_requisition_from_openlmis(domain, requisition_id, openlmis_endpoint):
    cases = []
    send_notification = False
    lmis_requisition_details = openlmis_endpoint.get_requisition_details(requisition_id)
    if lmis_requisition_details:
        rec_cases = [c for c in RequisitionCase.get_by_external_id(domain, str(lmis_requisition_details.id)) if c.type == const.REQUISITION_CASE_TYPE]

        if len(rec_cases) == 0:
            products = [product for product in lmis_requisition_details.products if product.skipped == False]
            for product in products:
                pdt = Product.get_by_code(domain, product.code.lower())
                if pdt:
                    case = lmis_requisition_details.to_requisition_case(pdt._id)
                    case.save()
                    if case.requisition_status == 'AUTHORIZED':
                        send_notification = True
                    cases.append(case)
        else:
            for case in rec_cases:
                before_status = case.requisition_status
                if apply_updates(case, lmis_requisition_details.to_dict(case.product_id)):
                    after_status = case.requisition_status
                    case.save()
                    if before_status in ['INITIATED', 'SUBMITTED'] and after_status == 'AUTHORIZED':
                        send_notification = True
                cases.append(case)
        return cases, send_notification
    else:
        return None, False
Ejemplo n.º 3
0
def raise_events(xform, cases):
    """
    Raise requisition events associated with cases
    """
    # todo: nothing calls this and it can be removed today, though openlmis code depends
    # on it being called during case processing
    requisition_cases = [
        RequisitionCase.wrap(c._doc) for c in cases
        if c.type == REQUISITION_CASE_TYPE
    ]
    if requisition_cases and requisition_cases[
            0].requisition_status == RequisitionStatus.APPROVED:
        requisition_approved.send(sender=None, requisitions=requisition_cases)
    if requisition_cases and requisition_cases[
            0].requisition_status == RequisitionStatus.RECEIVED:
        requisition_receipt.send(sender=None, requisitions=requisition_cases)

    if requisition_cases and requisition_cases[
            0].requisition_status == RequisitionStatus.REQUESTED:
        requisition_modified.send(sender=None, cases=requisition_cases)
Ejemplo n.º 4
0
    def to_requisition_case(self, product_id, case_id=None, case_rev=None):
        req_case = RequisitionCase()
        req_case.type = REQUISITION_CASE_TYPE
        req_case.user_id = self.agent_code
        req_case.set_case_property("program_id", self.program_id)
        req_case.set_case_property("period_id", self.period_id)
        req_case.product_id = product_id
        req_case.external_id = self.id
        req_case.requisition_status = self.requisition_status
        req_case.set_case_property("order_id", self.order_id)
        req_case.set_case_property("order_status", self.order_status)
        req_case.set_case_property("emergency", self.emergency)
        req_case.set_case_property("start_date", self.period_start_date)
        req_case.set_case_property("end_date", self.period_end_date)

        if case_id:
            req_case._id = case_id
        if case_rev:
            req_case._rev = case_rev

        return req_case
Ejemplo n.º 5
0
    def to_requisition_case(self, product_id, case_id=None, case_rev=None):
        req_case = RequisitionCase()
        req_case.type = REQUISITION_CASE_TYPE
        req_case.user_id = self.agent_code
        req_case.set_case_property("program_id", self.program_id)
        req_case.set_case_property("period_id", self.period_id)
        req_case.product_id = product_id
        req_case.external_id = self.id
        req_case.requisition_status = self.requisition_status
        req_case.set_case_property("order_id", self.order_id)
        req_case.set_case_property("order_status", self.order_status)
        req_case.set_case_property("emergency", self.emergency)
        req_case.set_case_property("start_date", self.period_start_date)
        req_case.set_case_property("end_date", self.period_end_date)

        if case_id:
            req_case._id = case_id
        if case_rev:
            req_case._rev = case_rev

        return req_case