コード例 #1
0
ファイル: calcs.py プロジェクト: imcallister/savorifie
def create_nc2_shippingcharge(wh_flf):
    
    if wh_flf.fulfillment.ship_type.label == 'IFS_BEST':
        if ShippingCharge.objects.filter(external_id=wh_flf.tracking_number).count() == 0:
            # i.e. doesn't already exist
            chg = {}
            chg['shipper_id'] = inventory_api.shipper('IFS360', {})['id']
            chg['account'] = 'N/A'
            chg['tracking_number'] = wh_flf.tracking_number
            chg['external_id'] = wh_flf.tracking_number
            chg['ship_date'] = wh_flf.ship_date
            chg['charge'] = wh_flf.shipping_cost
            chg['fulfillment_id'] = wh_flf.fulfillment.id
            chg['order_related'] = True
            chg['comment'] = ''
            ShippingCharge(**chg).save()

    flf_str = 'FLF%s' % str(wh_flf.fulfillment.id)
    if ShippingCharge.objects.filter(external_id=flf_str).count() == 0:
        # create a fulfill level shipping charge
        chg = {}
        chg['shipper_id'] = inventory_api.shipper('IFS360', {})['id']
        chg['account'] = 'N/A'
        chg['tracking_number'] = wh_flf.tracking_number
        chg['external_id'] = flf_str
        chg['ship_date'] = wh_flf.ship_date
        chg['charge'] = NC2_PER_FULFILL
        chg['fulfillment_id'] = wh_flf.fulfillment.id
        chg['order_related'] = True
        chg['comment'] = ''
        ShippingCharge(**chg).save()

    if ShippingCharge.objects.filter(external_id=wh_flf.warehouse_pack_id).count() == 0:
        # create a box level shipping charge
        chg = {}
        chg['shipper_id'] = inventory_api.shipper('IFS360', {})['id']
        chg['account'] = 'N/A'
        chg['tracking_number'] = wh_flf.tracking_number
        chg['external_id'] = wh_flf.warehouse_pack_id
        chg['ship_date'] = wh_flf.ship_date
        chg['charge'] = NC2_PER_BOX
        chg['fulfillment_id'] = wh_flf.fulfillment.id
        chg['order_related'] = True
        chg['comment'] = ''
        ShippingCharge(**chg).save()

    return
コード例 #2
0
ファイル: UPS.py プロジェクト: imcallister/savorifie
def process_ups(file_name):
    incoming_name = os.path.join(INCOMING_ROOT, file_name)
    ship_charges, errors = UPSCSVModel.import_data(data=open(incoming_name, 'rU'),
                                                   skip_rows=6)
    shipper_id = inventory_api.shipper('UPS', {})['id']

    # group the data by unique tracking numbers
    ship_charges = sorted(ship_charges, key=lambda x: x['tracking_number'])
    gpd_ship_charges = groupby(ship_charges, key=lambda x: x['tracking_number'])
    aggd_ship_charges = [agg_tracknum(list(v)) for k, v in gpd_ship_charges]

    new_recs_ctr = 0
    exist_recs_ctr = 0
    errors_cnt = len(errors)

    for rec in aggd_ship_charges:
        rec['shipper_id'] = shipper_id
        rec['external_id'] = rec['tracking_number']
        rec_obj = ShippingCharge.objects \
                                .filter(external_id=rec['external_id']) \
                                .first()

        if rec_obj:
            # if warehose fulfill object already exists ... skip to next one
            exist_recs_ctr += 1
        else:
            whflf_obj = WarehouseFulfill.objects \
                                        .filter(tracking_number=rec['tracking_number']) \
                                        .first()
            if whflf_obj:
                flf = whflf_obj.fulfillment
                if flf:
                    rec['fulfillment_id'] = flf.id

            new_recs_ctr += 1
            rec_obj = ShippingCharge(**rec)
            rec_obj.save()

    summary_msg = 'Loaded UPS file: %d new records, \
                                    %d duplicate records, \
                                    %d bad rows' \
                                   % (new_recs_ctr, exist_recs_ctr, errors_cnt)
    return summary_msg, errors