Exemplo n.º 1
0
 def test_connector(self):
     import jobboss.models as jb
     jb.AutoNumber.objects.create(type='SalesOrder',
                                  system_generated=True,
                                  last_nbr=1)
     jb.AutoNumber.objects.create(type='Job',
                                  system_generated=True,
                                  last_nbr=1)
     from job import process_order
     with open('core-python/tests/unit/mock_data/order.json') as data_file:
         mock_order_json = json.load(data_file)
     client = PaperlessClient()
     client.get_resource = MagicMock(return_value=mock_order_json)
     order = Order.get(1)
     process_order(order)
     self.assertEqual(len(order.order_items),
                      jb.Job.objects.filter(job=F('top_lvl_job')).count())
     self.assertEqual(
         sum([
             len([comp for comp in oi.components if not comp.is_hardware])
             for oi in order.order_items
         ]), jb.Job.objects.count())
     op_count = 0
     for oi in order.order_items:
         for comp in oi.components:
             op_count += len(comp.shop_operations)
     addon_count = sum(len(oi.ordered_add_ons) for oi in order.order_items)
     self.assertEqual(op_count + addon_count,
                      jb.JobOperation.objects.count())
Exemplo n.º 2
0
 def test_order_null_fields(self):
     self.client.get_resource = MagicMock(
         return_value=self.mock_minimal_order_json)
     o = Order.get(1)
     self.assertEqual(o.billing_info, None)
     self.assertEqual(o.shipping_info, None)
     self.assertEqual(o.payment_details.payment_type, None)
     self.assertEqual(o.shipping_option, None)
Exemplo n.º 3
0
 def test_date_fmt(self):
     self.client.get_resource = MagicMock(return_value=self.mock_order_json)
     o = Order.get(1)
     oi = o.order_items[0]
     self.assertEqual(2020, oi.ships_on_dt.year)
     self.assertEqual(12, oi.ships_on_dt.month)
     self.assertEqual(28, oi.ships_on_dt.day)
     self.assertEqual(2020, o.created_dt.year)
     self.assertEqual(12, o.created_dt.month)
     self.assertEqual(8, o.created_dt.day)
Exemplo n.º 4
0
 def test_shipping_info(self):
     self.client.get_resource = MagicMock(return_value=self.mock_order_json)
     o = Order.get(1)
     shipping_info = o.shipping_info
     self.assertEqual(shipping_info.address1, "1 FISKE TER")
     self.assertEqual(shipping_info.address2, "")
     self.assertEqual(shipping_info.business_name, "Outside Firm")
     self.assertEqual(shipping_info.city, "BOSTON")
     self.assertEqual(shipping_info.country, "USA")
     self.assertEqual(shipping_info.attention, "Cus Tomer")
     self.assertEqual(shipping_info.phone, "5555555555")
     self.assertEqual(shipping_info.phone_ext, "")
     self.assertEqual(shipping_info.postal_code, "02134-4503")
     self.assertEqual(shipping_info.state, "MA")
Exemplo n.º 5
0
 def test_customer(self):
     self.client.get_resource = MagicMock(
         return_value=self.mock_minimal_order_json)
     o = Order.get(1)
     cu = o.customer
     co = cu.company
     self.assertIsNone(cu.id)
     self.assertEqual(cu.first_name, "Test")
     self.assertEqual(cu.last_name, "Customer")
     self.assertEqual(cu.email,
                      "*****@*****.**")
     self.assertIsNone(cu.notes)
     self.assertIsNone(co.id)
     self.assertEqual(co.business_name, "Outside Firm")
     self.assertEqual(co.erp_code, "OUTFIRM")
     self.assertEqual(cu.phone, "")
     self.assertEqual(cu.phone_ext, "")
Exemplo n.º 6
0
 def test_contact(self):
     self.client.get_resource = MagicMock(
         return_value=self.mock_minimal_order_json)
     o = Order.get(1)
     c = o.contact
     a = c.account
     self.assertEqual(c.id, 3545)
     self.assertEqual(c.first_name, "Test")
     self.assertEqual(c.last_name, "Customer")
     self.assertEqual(c.email,
                      "*****@*****.**")
     self.assertIsNone(c.notes)
     self.assertEqual(a.id, 1986)
     self.assertIsNone(a.notes)
     self.assertEqual(a.name, "Outside Firm"),
     self.assertEqual(a.erp_code, "OUTFIRM")
     self.assertEqual(a.payment_terms, "Net 30")
     self.assertEqual(a.payment_terms_period, 30)
     self.assertEqual(c.phone, "")
     self.assertEqual(c.phone_ext, "")
Exemplo n.º 7
0
 def test_assemblies(self):
     self.client.get_resource = MagicMock(return_value=self.mock_order_json)
     o = Order.get(1)
     oi = o.order_items[0]
     assm = list(oi.iterate_assembly())
     self.assertEqual(8, len(assm))
     self.assertTrue(assm[0].component.is_root_component)
     self.assertEqual(0, assm[0].level)
     expected_order = [
         114384,
         114390,
         114389,
         114391,
         114388,
         114387,
         114386,
         114385,
     ]
     self.assertEqual(expected_order, [c.component.id for c in assm])
     self.assertEqual(2, assm[4].level)
     self.assertEqual(4, assm[4].level_count)
Exemplo n.º 8
0
 def test_hardware(self):
     self.client.get_resource = MagicMock(return_value=self.mock_order_json)
     o = Order.get(1)
     oi = o.order_items[0]
     found_hardware = False
     total_q = 0
     oc: OrderComponent
     for oc in oi.components:
         if oc.part_number == 'AC-M6-2':
             self.assertTrue(oc.is_hardware)
             # test purchased component
             pc = oc
             self.assertEqual('AC-M6-2',
                              pc.purchased_component.oem_part_number)
             self.assertIsNone(pc.purchased_component.internal_part_number)
             self.assertIsNone(pc.purchased_component.description)
             self.assertEqual(Decimal('0.9310'),
                              pc.purchased_component.piece_price.raw_amount)
             self.assertEqual(Decimal('0.93'),
                              pc.purchased_component.piece_price.dollars)
             self.assertEqual(pc.purchased_component.get_property('brand'),
                              "Penn")
             self.assertEqual(
                 pc.purchased_component.get_property('lead_time'), 4)
             self.assertEqual(
                 pc.purchased_component.get_property('in_stock'), True)
             self.assertIsNone(
                 pc.purchased_component.get_property("bad_name"))
             found_hardware = True
             for parent_id in oc.parent_ids:
                 parent = oi.get_component(parent_id)
                 self.assertEqual('assembled', parent.type)
                 child: ChildComponent
                 for child in parent.children:
                     if child.child_id == oc.id:
                         total_q += child.quantity
         else:
             self.assertFalse(oc.is_hardware)
     self.assertTrue(found_hardware)
     self.assertEqual(1, total_q)
Exemplo n.º 9
0
if __name__ == '__main__':
    test_mode = False
    try:
        if sys.argv[1] == 'testmode':
            test_mode = True
            order_num = None
        else:
            order_num = int(sys.argv[1])
    except (IndexError, ValueError):
        order_num = None
    if order_num is not None:
        PaperlessClient(
            access_token=common.PAPERLESS_CONFIG.token,
            group_slug=common.PAPERLESS_CONFIG.slug
        )
        order = Order.get(order_num)
        process_order(order)
    elif test_mode:
        print('Testing JobBOSS Connection')
        print('Host:', common.JOBBOSS_CONFIG.host)
        print('Database:', common.JOBBOSS_CONFIG.name)
        print('Username:'******'Job count: {} OK!'.format(c))
    else:
        if common.PAPERLESS_CONFIG.active:
            logger.info('Running connector!')
            main()
        else:
            logger.debug('Inactive')
Exemplo n.º 10
0
    parser.add_argument('--create_db_snapshot', action='store_true')
    parser.add_argument('--compare_db_snapshots', action='store_true')
    parser.add_argument('--snapshot_file_path', default=None, type=str,
                        help='The file path for the snapshot pickle file. If you are creating a new snapshot, you '
                             'may specify the path with this argument. If you are comparing two existing snapshots, '
                             'this is the path of the "new" snapshot and this must be supplied.')
    parser.add_argument('--old_snapshot_file_path', default=None, type=str,
                        help='When comparing two snapshots, this is the file path of the "old" snapshot.')
    args = parser.parse_args()

    if args.order_num is not None:
        PaperlessClient(
            access_token=common.PAPERLESS_CONFIG.token,
            group_slug=common.PAPERLESS_CONFIG.slug
        )
        order = Order.get(args.order_num)
        process_order(order)
    elif args.test:
        print('Testing JobBOSS Connection')
        print('Host:', common.JOBBOSS_CONFIG.host)
        print('Database:', common.JOBBOSS_CONFIG.name)
        print('Username:'******'Job count: {} OK!'.format(c))
    elif args.create_db_snapshot:
        if args.snapshot_file_path is None:
            now = datetime.now().strftime('%Y.%m.%d.%H.%M.%S')
            database_snapshot_file_path = f'database_snapshot_{now}.pickle'
        else:
            database_snapshot_file_path = args.snapshot_file_path
Exemplo n.º 11
0
    def test_get_order(self):
        self.client.get_resource = MagicMock(return_value=self.mock_order_json)
        o = Order.get(1)
        self.assertEqual(o.number, 179)
        self.assertEqual('credit_card', o.payment_details.payment_type)
        self.assertEqual('pending', o.status)
        self.assertEqual(339, o.quote_number)
        self.assertEqual(len(o.order_items), 3)
        # test salesperson
        sales_person = o.sales_person
        self.assertEqual(sales_person.first_name, 'Heathrow Chester')
        # test estimator
        estimator = o.estimator
        self.assertEqual(estimator.first_name, 'Heathrow Chester')
        # test assembly order item
        assmb_oi = o.order_items[0]
        self.assertEqual(len(assmb_oi.components), 8)
        assmb_root_component = assmb_oi.root_component
        self.assertEqual(len(assmb_root_component.child_ids), 3)
        self.assertEqual(assmb_root_component.deliver_quantity, 5)
        self.assertIsNone(assmb_root_component.description)
        self.assertFalse(assmb_root_component.export_controlled)
        self.assertEqual(assmb_root_component.finishes, [])
        self.assertEqual(assmb_root_component.innate_quantity, 1)
        self.assertTrue(assmb_root_component.is_root_component)
        self.assertEqual(assmb_root_component.make_quantity, 5)
        self.assertEqual(assmb_root_component.material.family, 'Aluminum')
        self.assertEqual(len(assmb_root_component.material_operations), 0)
        self.assertEqual(len(assmb_root_component.parent_ids), 0)
        self.assertEqual(assmb_root_component.part_name,
                         'small-sub-assembly.STEP')
        self.assertIsNone(assmb_root_component.part_number)
        self.assertEqual(assmb_root_component.part_uuid,
                         'ddab27ae-ff7b-4db2-be24-41002be6cb58')
        self.assertEqual(assmb_root_component.process.name, 'CNC Machining')
        self.assertIsNone(assmb_root_component.revision)
        self.assertEqual(len(assmb_root_component.shop_operations), 1)
        self.assertEqual(len(assmb_root_component.supporting_files), 1)
        self.assertEqual(assmb_root_component.type, 'assembled')

        op = assmb_root_component.shop_operations[0]
        self.assertEqual('304-#4', op.get_variable('Material Selection'))
        self.assertEqual(150, op.get_variable('Lot Charge'))

        # test single component order item
        standard_oi = o.order_items[1]
        self.assertEqual(len(standard_oi.components), 1)
        self.assertEqual(standard_oi.add_on_fees.dollars, Decimal('50'))
        root_component = standard_oi.root_component
        self.assertEqual(len(root_component.material_operations), 2)
        self.assertEqual(len(root_component.shop_operations), 8)
        finish_op = root_component.shop_operations[6]
        self.assertEqual(finish_op.name, 'Chromate')
        self.assertEqual(finish_op.operation_definition_name, 'Chromate')
        self.assertEqual(finish_op.cost.dollars, 150.0)
        self.assertIsNone(finish_op.setup_time)
        self.assertIsNone(finish_op.get_variable('bad name'))

        # ensure quantities are in proper order
        op_quantities = [qty.quantity for qty in finish_op.quantities]
        self.assertEqual([1, 5, 10, 25], op_quantities)

        qty_specific_op = root_component.shop_operations[7]
        self.assertEqual(
            qty_specific_op.get_variable_obj('Basic Num').value, 2)
        self.assertEqual(
            qty_specific_op.get_variable_obj('Basic Num').row, None)
        self.assertEqual(
            qty_specific_op.get_variable_obj('Basic Num').options, None)
        self.assertEqual(
            qty_specific_op.get_variable_obj('Basic Str').value, 'a')
        self.assertEqual(
            qty_specific_op.get_variable_obj('Basic Str').row, None)
        self.assertEqual(
            qty_specific_op.get_variable_obj('Basic Str').options, None)
        self.assertEqual(
            qty_specific_op.get_variable_obj('Drop Down Num').value, '2')
        self.assertEqual(
            qty_specific_op.get_variable_obj('Drop Down Num').row, None)
        self.assertEqual(
            qty_specific_op.get_variable_obj('Drop Down Num').options,
            ['1', '2', '3'])
        self.assertEqual(
            qty_specific_op.get_variable_obj('Material Selection').value,
            '6061-T6')
        self.assertEqual(
            qty_specific_op.get_variable_obj('Material Selection').row,
            {
                'diameter': 1.0,
                'length': 24.0,
                'material': '6061-T6',
                'requires_prep': False,
                'row_number': 0,
            },
        )
        self.assertEqual(
            qty_specific_op.get_variable_obj('Material Selection').options,
            None)

        add_on = standard_oi.ordered_add_ons[0]
        self.assertEqual(add_on.get_variable('Basic Num').value, 2)
        self.assertEqual(add_on.get_variable('Basic Num').row, None)
        self.assertEqual(add_on.get_variable('Basic Num').options, None)
        self.assertEqual(
            qty_specific_op.get_variable_obj('Basic Str').value, 'a')
        self.assertEqual(
            qty_specific_op.get_variable_obj('Basic Str').row, None)
        self.assertEqual(
            qty_specific_op.get_variable_obj('Basic Str').options, None)
        self.assertEqual(
            qty_specific_op.get_variable_obj('Drop Down Num').value, '2')
        self.assertEqual(
            qty_specific_op.get_variable_obj('Drop Down Num').row, None)
        self.assertEqual(
            qty_specific_op.get_variable_obj('Drop Down Num').options,
            ['1', '2', '3'])
        self.assertEqual(
            qty_specific_op.get_variable_obj('Material Selection').value,
            '6061-T6')
        self.assertEqual(
            qty_specific_op.get_variable_obj('Material Selection').row,
            {
                'diameter': 1.0,
                'length': 24.0,
                'material': '6061-T6',
                'requires_prep': False,
                'row_number': 0,
            },
        )
        self.assertEqual(
            qty_specific_op.get_variable_obj('Material Selection').options,
            None)

        # test add ons
        other_oi = o.order_items[0]
        self.assertEqual(other_oi.base_price.dollars, Decimal('2757.80'))
        add_on = other_oi.ordered_add_ons[0]
        self.assertEqual(add_on.quantity, 5)
        # test manual line item
        manual_oi = o.order_items[2]
        self.assertEqual('automatic', manual_oi.quote_item_type)
        self.assertEqual('', manual_oi.description)