Ejemplo n.º 1
0
def create_purchase_order(request, supplier_id):
    """Creates a purchase order and assigns all RequestedItems to PurchaseItems
    that are associated with the new purchase order"""
    supplier = get_object_or_404(Supplier, pk=supplier_id)
    po = PurchaseOrder(supplier=supplier)
    po.save()
    ritem_list = supplier.get_requested_items()

    for ritem in ritem_list:
        ritem.satatus = RequestedItem.StatusEnums.STATUS_IN_ORDER
        sizi = ritem.size_info
        coli = ritem.colour_info
        styi = ritem.style_info
        cost = Decimal(0.00)

        sale_infos = SaleInfo.objects.filter(supplier=supplier, gallery_item=ritem.gallery_item)
        if sale_infos.exists():
            if sale_infos.count() == 0:
                raise BaseException("Unable to locate matching sale information")
            elif sale_infos.count() == 1:
                si = list(sale_infos[:1])[0]
                cost = si.supplier_cost
            else:
                for si in sale_infos:
                    if si.is_match(sizi, coli, styi):
                        print "si is %s" % type(si)
                        print "Selected this bad boy! %s: %s" % (si, si.supplier_cost)
                        cost = si.supplier_cost
                        break

        pitem = PurchaseItem(size_info=ritem.size_info, colour_info=ritem.colour_info,
                             style_info=ritem.style_info, purchase_order=po, requested_item=ritem,
                             sale_cost=ritem.gallery_item.unit_cost, purchase_cost=cost)
        pitem.save()
    return redirect('/admin/inventory/purchaseorder/%s' % po.id)
Ejemplo n.º 2
0
 def view_purchase_orders_link(self, obj):
     """Gets the queryset of purchase orders that this club member has paid for"""
     link = ''
     if obj.purchaseorder_set.count():
         info = (PurchaseOrder.get_admin_list_url(), obj.pk, 'View purchase orders')
         link = '<a href="%s?&purchaser__profilepicture_ptr__exact=%s">%s</a>' % info
     return link
Ejemplo n.º 3
0
def save_purchase_order(request):
    params = json.loads(request.body)
    dct = {'rows': {}}
    object_values = {
        'order_no': empty_to_none(params.get('order_no')),
        'fiscal_year': request.setting.fiscal_year,
        'date': params.get('date'),
        'party_id': params.get('party'),
        'due_days': params.get('due_days')
    }
    if params.get('id'):
        obj = PurchaseOrder.objects.get(id=params.get('id'))
    else:
        obj = PurchaseOrder()
    try:
        obj = save_model(obj, object_values)
    except Exception as e:
        if hasattr(e, 'messages'):
            dct['error_message'] = '; '.join(e.messages)
        elif str(e) != '':
            dct['error_message'] = str(e)
        else:
            dct['error_message'] = 'Error in form data!'
    dct['id'] = obj.id
    model = PurchaseOrderRow
    for index, row in enumerate(params.get('table_view').get('rows')):
        if invalid(row, ['quantity', 'unit', 'rate', 'item_id']):
            continue
        if row.get('budget_title_no') == '':
            row['budget_title_no'] = None
        values = {
            'sn': index + 1,
            'item_id': row.get('item_id'),
            'specification': row.get('specification'),
            'rate': row.get('rate'),
            'quantity': row.get('quantity'),
            'unit': row.get('unit'),
            'vattable': row.get('vattable'),
            'budget_title_no': row.get('budget_title_no'),
            'remarks': row.get('remarks'),
            'purchase_order': obj
        }
        submodel, created = model.objects.get_or_create(id=row.get('id'),
                                                        defaults=values)
        # set_transactions(submodel, request.POST.get('date'),
        #                  ['dr', bank_account, row.get('amount')],
        #                  ['cr', benefactor, row.get('amount')],
        # )
        if not created:
            submodel = save_model(submodel, values)
        dct['rows'][index] = submodel.id
    delete_rows(params.get('table_view').get('deleted_rows'), model)
    return JsonResponse(dct)
Ejemplo n.º 4
0
def purchase_order(request, id=None):
    if id:
        obj = get_object_or_404(PurchaseOrder, id=id)
        scenario = 'Update'
    else:
        obj = PurchaseOrder(date=BSUtil().today())
        scenario = 'Create'
    form = PurchaseOrderForm(instance=obj)
    object_data = PurchaseOrderSerializer(obj).data
    return render(request, 'purchase_order.html', {
        'form': form,
        'data': object_data,
        'scenario': scenario
    })