示例#1
0
    def _prepare_sales_orders_and_items(self):
        self.expected_programme_1 = Programme(wbs_element_ex='0060/A0/07/883')
        self.expected_programme_1.save()
        self.expected_programme_2 = Programme(wbs_element_ex='4380/A0/04/105')
        self.expected_programme_2.save()
        self.sales_order_1 = SalesOrder(programme=self.expected_programme_1,
                                        order_number=20173918,
                                        date=datetime.date(2015, 12, 3))
        self.sales_order_1.save()
        self.sales_order_2 = SalesOrder(programme=self.expected_programme_2,
                                        order_number=20174363,
                                        date=datetime.date(2015, 12, 14))
        self.sales_order_2.save()

        self.item_1 = Item(description='Scale,electronic,mother/child,150kgx100g',
                           material_code='S0141021')
        self.item_2 = Item(description='Laundry soap, Carton, 25 bars, 800 grams',
                           material_code='SL009100')

        self.sales_item_1 = SalesOrderItem(sales_order=self.sales_order_1,
                                           item=self.item_1,
                                           net_price=0,
                                           net_value=Decimal('51322.6500'),
                                           issue_date=datetime.date(2015, 12, 3),
                                           delivery_date=datetime.date(2015, 12, 3),
                                           description='Scale,electronic,mother/child,150kgx100g')
        self.sales_item_2 = SalesOrderItem(sales_order=self.sales_order_2,
                                           item=self.item_2,
                                           net_price=0,
                                           net_value=Decimal('2673'),
                                           issue_date=datetime.date(2015, 12, 14),
                                           delivery_date=datetime.date(2015, 12, 14),
                                           description='Laundry soap, Carton, 25 bars, 800 grams')
示例#2
0
    def setUp(self):
        self.downloaded_programme = {'GetProgrammeStructureList_JSONResult':
                                         '[{"BUSINESS_AREA_CODE":"4380",' \
                                         '"BUSINESS_AREA_NAME":"Uganda",' \
                                         '"COUNTRY_PROGRAMME_WBS":"4380/A0/04",' \
                                         '"COUNTRY_PROGRAMME_NAME":"UGANDA COUNTRY PROGRAM (2010 - 2015) EXT",' \
                                         '"CP_START_DATE":"\\/Date(1262322000000)\\/",' \
                                         '"CP_END_DATE":"\\/Date(1451538000000)\\/",' \
                                         '"OUTCOME_WBS":"4380/A0/04/105",' \
                                         '"OUTCOME_ID":105,' \
                                         '"OUTCOME_DESCRIPTION":"YI105 - PCR 1 KEEP CHILDREN AND MOTHERS",' \
                                         '"OUTPUT_WBS":"4380/A0/04/105/004",' \
                                         '"OUTPUT_ID":4,' \
                                         '"OUTPUT_DESCRIPTION":"IR 1.4 NUTRITION",' \
                                         '"ACTIVITY_WBS":"4380/A0/04/105/004/090",' \
                                         '"ACTIVITY_ID":90,' \
                                         '"ACTIVITY_DESCRIPTION":"1.4.90 STAFF, TRAVEL AND RELATED COSTS",' \
                                         '"SIC_CODE":"04-06-01",' \
                                         '"SIC_NAME":"Nutrition # General",' \
                                         '"GIC_CODE":"013",' \
                                         '"GIC_NAME":"Operating costs # staff",' \
                                         '"HUMANITARIAN_TAG":"No",' \
                                         '"ACTIVITY_FOCUS_CODE":"6",' \
                                         '"ACTIVITY_FOCUS_NAME":"6 Management/Operations"},' \
                                         '' \
                                         '{"BUSINESS_AREA_CODE":"4380",' \
                                         '"BUSINESS_AREA_NAME":"Uganda",' \
                                         '"COUNTRY_PROGRAMME_WBS":"4380/A0/05",' \
                                         '"COUNTRY_PROGRAMME_NAME":"UGANDA CONTRY PROGRAMME (2016 - 2020)",' \
                                         '"CP_START_DATE":"\\/Date(1451624400000)\\/",' \
                                         '"CP_END_DATE":"\\/Date(1609390800000)\\/",' \
                                         '"OUTCOME_WBS":"4380/A0/05/113",' \
                                         '"OUTCOME_ID":113,' \
                                         '"OUTCOME_DESCRIPTION":"3: CHILD PROTECTION",' \
                                         '"OUTPUT_WBS":"4380/A0/05/113/003",' \
                                         '"OUTPUT_ID":3,' \
                                         '"OUTPUT_DESCRIPTION":"OUTPUT 3.3 BIRTH REGISTRATION",' \
                                         '"ACTIVITY_WBS":"4380/A0/05/113/003/001",' \
                                         '"ACTIVITY_ID":1,' \
                                         '"ACTIVITY_DESCRIPTION":"3.3.90 STAFF COSTS",' \
                                         '"SIC_CODE":"06-05-01",' \
                                         '"SIC_NAME":"Birth and civil registration",' \
                                         '"GIC_CODE":"013",' \
                                         '"GIC_NAME":"Operating costs # staff",' \
                                         '"HUMANITARIAN_TAG":"No",' \
                                         '"ACTIVITY_FOCUS_CODE":"6",' \
                                         '"ACTIVITY_FOCUS_NAME":"6 Management/Operations"}]'}

        self.expected_programme_1 = Programme(
            wbs_element_ex='4380/A0/04/105',
            name='YI105 - PCR 1 KEEP CHILDREN AND MOTHERS')
        self.expected_programme_2 = Programme(wbs_element_ex='4380/A0/05/113',
                                              name='3: CHILD PROTECTION')

        self.synchronizer = ProgrammeSynchronizer()
示例#3
0
    def assert_programmes_were_created(self):
        programme_one = Programme(name='YI107 - PCR 3 KEEP CHILDREN SAFE',
                                  wbs_element_ex='4380/A0/04/107')
        programme_two = Programme(
            name='YI105 - PCR 1 KEEP CHILDREN AND MOTHERS',
            wbs_element_ex='4380/A0/04/105')
        programme_three = Programme(name='Y108 - PCR 4 CROSS SECTORAL',
                                    wbs_element_ex='4380/A0/04/108')

        self.assert_programmes_are_equal(programme_one,
                                         Programme.objects.all()[0])
        self.assert_programmes_are_equal(programme_two,
                                         Programme.objects.all()[1])
        self.assert_programmes_are_equal(programme_three,
                                         Programme.objects.all()[2])
示例#4
0
    def setUp(self):
        self.downloaded_programme = downloaded_programme
        self.expected_programme = Programme(
            wbs_element_ex='4380/A0/04/105',
            name='YI105 - PCR 1 KEEP CHILDREN AND MOTHERS')

        self.synchronizer = ProgrammeSynchronizer()
示例#5
0
    def _prepare_sales_and_purchase_order(self):
        Consignee.objects.create(customer_id='L626010000')
        Consignee.objects.create(customer_id='L626010384')
        self.programme_1 = Programme(wbs_element_ex='0060/A0/07/883')
        self.programme_1.save()
        self.programme_2 = Programme(wbs_element_ex='4380/A0/04/105')
        self.programme_2.save()
        self.sales_order_1 = SalesOrder(programme=self.programme_1,
                                        order_number=20173918,
                                        date=datetime.date(2015, 12, 3))
        self.sales_order_1.save()
        self.sales_order_2 = SalesOrder(programme=self.programme_2,
                                        order_number=20174363,
                                        date=datetime.date(2015, 12, 14))
        self.sales_order_2.save()

        self.purchase_order_1 = PurchaseOrder(order_number=45143984,
                                              sales_order=self.sales_order_1,
                                              date=datetime.date(2015, 11, 30),
                                              po_type='NB')
        self.purchase_order_1.save()
        self.purchase_order_2 = PurchaseOrder(order_number=45144863,
                                              sales_order=self.sales_order_2,
                                              date=datetime.date(2015, 12, 14),
                                              po_type='ZLC')
        self.purchase_order_2.save()

        self.item_1 = Item(description='Scale,electronic,mother/child,150kgx100g',
                           material_code='S0141021')
        self.item_1.save()
        self.item_2 = Item(description='Laundry soap, Carton, 25 bars, 800 grams',
                           material_code='SL009100')
        self.item_2.save()
        self.purchase_order_item_1 = PurchaseOrderItem(purchase_order=self.purchase_order_1,
                                                       item=self.item_1,
                                                       item_number=10,
                                                       sales_order_item=None,
                                                       quantity=100.00,
                                                       value=Decimal('51322.65'))
        self.purchase_order_item_1.save()
        self.purchase_order_item_2 = PurchaseOrderItem(purchase_order=self.purchase_order_2,
                                                       item=self.item_2,
                                                       item_number=20,
                                                       sales_order_item=None,
                                                       quantity=80.00,
                                                       value=Decimal('2673'))
        self.purchase_order_item_2.save()
示例#6
0
    def setUp(self):
        self.downloaded_sales_orders = downloaded_sales_orders
        self.converted_sales_orders = converted_sales_orders

        Programme.objects.create(wbs_element_ex='0060/A0/07/883')

        self.expected_programme = Programme(wbs_element_ex='0060/A0/07/883')
        self.expected_sales_order = SalesOrder(programme=self.expected_programme,
                                               order_number=20173918,
                                               date=datetime.date(2015, 12, 6))
        self.expected_item = Item(description='Scale,electronic,mother/child,150kgx100g',
                                  material_code='S0141021')
        self.expected_sales_order_item = SalesOrderItem(sales_order=self.expected_sales_order,
                                                        item=self.expected_item,
                                                        net_price=0,
                                                        net_value=Decimal('51322.6500'),
                                                        issue_date=datetime.date(2015, 12, 6),
                                                        delivery_date=datetime.date(2015, 12, 6),
                                                        description='Scale,electronic,mother/child,150kgx100g')
        start_date = '01122015'
        end_date = datetime.date.today().strftime('%d%m%Y')
        self.synchronizer = SalesOrderSynchronizer(start_date=start_date)
        base_url = 'https://devapis.unicef.org/BIService/BIWebService.svc/GetSalesOrderInfo_JSON/'
        self.expected_url = base_url + start_date + '/' + end_date
示例#7
0
    def test_should_have_all_expected_fields(self):
        fields_in_item = Programme()._meta._name_map

        for field in ['name', 'focal_person_id']:
            self.assertIn(field, fields_in_item)
示例#8
0
 def test_should_know_the_string_representation_for_a_programme_returns_the_name(
         self):
     dummy_name = "Test Name"
     programme = Programme(name=dummy_name)
     self.assertEqual(dummy_name, str(programme))
示例#9
0
    def setUp(self):
        self.downloaded_sales_orders = [{
            "SALES_ORDER_NO": u"0020173918",
            "DOCUMENT_TYPE": "ZCOM",
            "DOCUMENT_DATE": u"/Date(1449118800000)/",
            "CREATE_DATE": u"/Date(1449118800000)/",
            "UPDATE_DATE": u"/Date(1449378000000)/",
            "BUDGET_YEAR": 2015,
            "SOLD_TO_PARTY": "Z00601",
            "SOLD_TO_PARTY_DESCRIPTION": "UNICEF-AFGHANISTAN-KABUL",
            "SHIP_TO_PARTY": "006",
            "SHIP_TO_PARTY_DESCRIPTION": "Afghanistan",
            "SO_ITEM_NO": 80,
            "REQUISITION_NO": "0030344383",
            "REQUISITION_ITEM_NO": 80,
            "PURCHASING_GROUP_NAME_SHORT": "NUTRITION",
            "WBS_REFERENCE": "0060A007883001002",
            "GRANT_REF": "Unknown",
            "GRANT_EXPIRY_DATE": None,
            "DONOR_NAME": "UNICEF-AFGHANISTAN-KABUL",
            "MATERIAL_CODE": "S0141021",
            "MATERIAL_DESC": "Scale,electronic,mother/child,150kgx100g",
            "SO_ITEM_DESC": "Scale,electronic,mother/child,150kgx100g",
            "NET_VALUE": 51322.65
        }, {
            "SALES_ORDER_NO": u"0020173918",
            "DOCUMENT_TYPE": "ZCOM",
            "DOCUMENT_DATE": u"/Date(1449118800000)/",
            "CREATE_DATE": u"/Date(1449118800000)/",
            "UPDATE_DATE": u"/Date(1449378000000)/",
            "BUDGET_YEAR": 2015,
            "SOLD_TO_PARTY": "Z00601",
            "SOLD_TO_PARTY_DESCRIPTION": "UNICEF-AFGHANISTAN-KABUL",
            "SHIP_TO_PARTY": "006",
            "SHIP_TO_PARTY_DESCRIPTION": "Afghanistan",
            "SO_ITEM_NO": 90,
            "REQUISITION_NO": "0030344383",
            "REQUISITION_ITEM_NO": 90,
            "PURCHASING_GROUP_NAME_SHORT": "NUTRITION",
            "WBS_REFERENCE": "0060A007883001002",
            "GRANT_REF": "Unknown",
            "GRANT_EXPIRY_DATE": None,
            "DONOR_NAME": "UNICEF-AFGHANISTAN-KABUL",
            "MATERIAL_CODE": "S0145620",
            "MATERIAL_DESC": "MUAC,Child 11.5 Red/PAC-50",
            "SO_ITEM_DESC": "MUAC,Child 11.5 Red/PAC-50",
            "NET_VALUE": 3655.16
        }, {
            "SALES_ORDER_NO": u"0020174363",
            "DOCUMENT_TYPE": "ZCOM",
            "DOCUMENT_DATE": u"/Date(1450069200000)/",
            "CREATE_DATE": u"/Date(1450069200000)/",
            "UPDATE_DATE": u"/Date(1450069200000)/",
            "BUDGET_YEAR": 2015,
            "SOLD_TO_PARTY": "Z43801",
            "SOLD_TO_PARTY_DESCRIPTION": "UNICEF-UGANDA-KAMPALA",
            "SHIP_TO_PARTY": "438",
            "SHIP_TO_PARTY_DESCRIPTION": "Uganda",
            "SO_ITEM_NO": 10,
            "REQUISITION_NO": "0030344855",
            "REQUISITION_ITEM_NO": 10,
            "PURCHASING_GROUP_NAME_SHORT": "Kampala, Uganda",
            "WBS_REFERENCE": "4380A004105007042",
            "GRANT_REF": "SM150377",
            "GRANT_EXPIRY_DATE": u"/Date(1451538000000)/",
            "DONOR_NAME": "UNICEF-UGANDA-KAMPALA",
            "MATERIAL_CODE": "SL009100",
            "MATERIAL_DESC": "Laundry soap, Carton, 25 bars, 800 grams",
            "SO_ITEM_DESC": "Laundry soap, Carton, 25 bars, 800 grams",
            "NET_VALUE": 2673
        }]

        self.converted_sales_orders = [{
            "SALES_ORDER_NO":
            20173918,
            "DOCUMENT_TYPE":
            "ZCOM",
            "DOCUMENT_DATE":
            datetime.datetime(2015, 12, 3, 8, 0),
            "CREATE_DATE":
            datetime.datetime(2015, 12, 3, 8, 0),
            "UPDATE_DATE":
            datetime.datetime(2015, 12, 6, 8, 0),
            "BUDGET_YEAR":
            2015,
            "SOLD_TO_PARTY":
            "Z00601",
            "SOLD_TO_PARTY_DESCRIPTION":
            "UNICEF-AFGHANISTAN-KABUL",
            "SHIP_TO_PARTY":
            "006",
            "SHIP_TO_PARTY_DESCRIPTION":
            "Afghanistan",
            "SO_ITEM_NO":
            80,
            "REQUISITION_NO":
            "0030344383",
            "REQUISITION_ITEM_NO":
            80,
            "PURCHASING_GROUP_NAME_SHORT":
            "NUTRITION",
            "WBS_REFERENCE":
            "0060/A0/07/883",
            "GRANT_REF":
            "Unknown",
            "GRANT_EXPIRY_DATE":
            None,
            "DONOR_NAME":
            "UNICEF-AFGHANISTAN-KABUL",
            "MATERIAL_CODE":
            "S0141021",
            "MATERIAL_DESC":
            "Scale,electronic,mother/child,150kgx100g",
            "SO_ITEM_DESC":
            "Scale,electronic,mother/child,150kgx100g",
            "NET_VALUE":
            51322.65
        }, {
            "SALES_ORDER_NO":
            20173918,
            "DOCUMENT_TYPE":
            "ZCOM",
            "DOCUMENT_DATE":
            datetime.datetime(2015, 12, 3, 8, 0),
            "CREATE_DATE":
            datetime.datetime(2015, 12, 3, 8, 0),
            "UPDATE_DATE":
            datetime.datetime(2015, 12, 6, 8, 0),
            "BUDGET_YEAR":
            2015,
            "SOLD_TO_PARTY":
            "Z00601",
            "SOLD_TO_PARTY_DESCRIPTION":
            "UNICEF-AFGHANISTAN-KABUL",
            "SHIP_TO_PARTY":
            "006",
            "SHIP_TO_PARTY_DESCRIPTION":
            "Afghanistan",
            "SO_ITEM_NO":
            90,
            "REQUISITION_NO":
            "0030344383",
            "REQUISITION_ITEM_NO":
            90,
            "PURCHASING_GROUP_NAME_SHORT":
            "NUTRITION",
            "WBS_REFERENCE":
            "0060/A0/07/883",
            "GRANT_REF":
            "Unknown",
            "GRANT_EXPIRY_DATE":
            None,
            "DONOR_NAME":
            "UNICEF-AFGHANISTAN-KABUL",
            "MATERIAL_CODE":
            "S0145620",
            "MATERIAL_DESC":
            "MUAC,Child 11.5 Red/PAC-50",
            "SO_ITEM_DESC":
            "MUAC,Child 11.5 Red/PAC-50",
            "NET_VALUE":
            3655.16
        }, {
            "SALES_ORDER_NO":
            20174363,
            "DOCUMENT_TYPE":
            "ZCOM",
            "DOCUMENT_DATE":
            datetime.datetime(2015, 12, 14, 8, 0),
            "CREATE_DATE":
            datetime.datetime(2015, 12, 14, 8, 0),
            "UPDATE_DATE":
            datetime.datetime(2015, 12, 14, 8, 0),
            "BUDGET_YEAR":
            2015,
            "SOLD_TO_PARTY":
            "Z43801",
            "SOLD_TO_PARTY_DESCRIPTION":
            "UNICEF-UGANDA-KAMPALA",
            "SHIP_TO_PARTY":
            "438",
            "SHIP_TO_PARTY_DESCRIPTION":
            "Uganda",
            "SO_ITEM_NO":
            10,
            "REQUISITION_NO":
            "0030344855",
            "REQUISITION_ITEM_NO":
            10,
            "PURCHASING_GROUP_NAME_SHORT":
            "Kampala, Uganda",
            "WBS_REFERENCE":
            "4380/A0/04/105",
            "GRANT_REF":
            "SM150377",
            "GRANT_EXPIRY_DATE":
            datetime.datetime(2015, 12, 31, 8, 0),
            "DONOR_NAME":
            "UNICEF-UGANDA-KAMPALA",
            "MATERIAL_CODE":
            "SL009100",
            "MATERIAL_DESC":
            "Laundry soap, Carton, 25 bars, 800 grams",
            "SO_ITEM_DESC":
            "Laundry soap, Carton, 25 bars, 800 grams",
            "NET_VALUE":
            2673
        }]

        Programme.objects.create(wbs_element_ex='0060/A0/07/883')
        Programme.objects.create(wbs_element_ex='4380/A0/04/105')

        self.expected_programme_1 = Programme(wbs_element_ex='0060/A0/07/883')
        self.expected_programme_2 = Programme(wbs_element_ex='4380/A0/04/105')
        self.expected_sales_order_1 = SalesOrder(
            programme=self.expected_programme_1,
            order_number=20173918,
            date=datetime.date(2015, 12, 6))
        self.expected_sales_order_2 = SalesOrder(
            programme=self.expected_programme_2,
            order_number=20174363,
            date=datetime.date(2015, 12, 14))
        self.expected_item_1 = Item(
            description='Scale,electronic,mother/child,150kgx100g',
            material_code='S0141021')
        self.expected_item_2 = Item(description='MUAC,Child 11.5 Red/PAC-50',
                                    material_code='S0145620')
        self.expected_item_3 = Item(
            description='Laundry soap, Carton, 25 bars, 800 grams',
            material_code='SL009100')
        self.expected_sales_order_item_1 = SalesOrderItem(
            sales_order=self.expected_sales_order_1,
            item=self.expected_item_1,
            net_price=0,
            net_value=Decimal('51322.6500'),
            issue_date=datetime.date(2015, 12, 6),
            delivery_date=datetime.date(2015, 12, 6),
            description='Scale,electronic,mother/child,150kgx100g')
        self.expected_sales_order_item_2 = SalesOrderItem(
            sales_order=self.expected_sales_order_1,
            item=self.expected_item_2,
            net_price=0,
            net_value=Decimal('3655.16'),
            issue_date=datetime.date(2015, 12, 6),
            delivery_date=datetime.date(2015, 12, 6),
            description='MUAC,Child 11.5 Red/PAC-50')
        self.expected_sales_order_item_3 = SalesOrderItem(
            sales_order=self.expected_sales_order_2,
            item=self.expected_item_3,
            net_price=0,
            net_value=Decimal('2673'),
            issue_date=datetime.date(2015, 12, 14),
            delivery_date=datetime.date(2015, 12, 14),
            description='Laundry soap, Carton, 25 bars, 800 grams')
        start_date = '01122015'
        end_date = datetime.date.today().strftime('%d%m%Y')
        self.synchronizer = SalesOrderSynchronizer(start_date=start_date)
        base_url = 'https://devapis.unicef.org/BIService/BIWebService.svc/GetSalesOrderInfo_JSON/'
        self.expected_url = base_url + start_date + '/' + end_date