Beispiel #1
0
class EditPriceBreakForm(HelperForm):
    """ Form for creating / editing a supplier price break """

    quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5)

    cost = RoundingDecimalFormField(max_digits=10, decimal_places=5)

    class Meta:
        model = SupplierPriceBreak
        fields = [
            'part',
            'quantity',
            'cost',
            'currency',
        ]
Beispiel #2
0
class EditBomItemForm(HelperForm):
    """ Form for editing a BomItem object """

    quantity = RoundingDecimalFormField(max_digits=10,
                                        decimal_places=5,
                                        label=_('Quantity'))

    sub_part = PartModelChoiceField(queryset=Part.objects.all(),
                                    label=_('Sub part'))

    class Meta:
        model = BomItem
        fields = [
            'part',
            'sub_part',
            'quantity',
            'reference',
            'overage',
            'note',
            'inherited',
            'optional',
        ]

        # Prevent editing of the part associated with this BomItem
        widgets = {'part': forms.HiddenInput()}
Beispiel #3
0
class SerializeStockForm(HelperForm):
    """ Form for serializing a StockItem. """

    destination = TreeNodeChoiceField(queryset=StockLocation.objects.all(), label='Destination', required=True, help_text='Destination for serialized stock (by default, will remain in current location)')
    
    serial_numbers = forms.CharField(label='Serial numbers', required=True, help_text='Unique serial numbers (must match quantity)')
    
    note = forms.CharField(label='Notes', required=False, help_text='Add transaction note (optional)')

    quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5)

    def __init__(self, *args, **kwargs):

        # Extract the stock item
        item = kwargs.pop('item', None)

        if item:
            self.field_placeholder['serial_numbers'] = item.part.getSerialNumberString(item.quantity)

        super().__init__(*args, **kwargs)

    class Meta:
        model = StockItem

        fields = [
            'quantity',
            'serial_numbers',
            'destination',
            'note',
        ]
Beispiel #4
0
class EditPartSalePriceBreakForm(HelperForm):
    """
    Form for creating / editing a sale price for a part
    """

    quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5)

    cost = RoundingDecimalFormField(max_digits=10, decimal_places=5)

    class Meta:
        model = PartSellPriceBreak
        fields = [
            'part',
            'quantity',
            'cost',
            'currency',
        ]
Beispiel #5
0
class EditSalesOrderAllocationForm(HelperForm):

    quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5)

    class Meta:
        model = SalesOrderAllocation

        fields = ['line', 'item', 'quantity']
Beispiel #6
0
class EditSalesOrderLineItemForm(HelperForm):
    """ Form for editing a SalesOrderLineItem object """

    quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5)

    class Meta:
        model = SalesOrderLineItem
        fields = ['order', 'part', 'quantity', 'reference', 'notes']
Beispiel #7
0
class EditBomItemForm(HelperForm):
    """ Form for editing a BomItem object """

    quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5)

    class Meta:
        model = BomItem
        fields = [
            'part', 'sub_part', 'quantity', 'reference', 'overage', 'note'
        ]

        # Prevent editing of the part associated with this BomItem
        widgets = {'part': forms.HiddenInput()}
Beispiel #8
0
class EditSalesOrderAllocationForm(HelperForm):
    """
    Form for editing a SalesOrderAllocation item
    """

    quantity = RoundingDecimalFormField(max_digits=10,
                                        decimal_places=5,
                                        label=_('Quantity'))

    class Meta:
        model = SalesOrderAllocation

        fields = ['line', 'item', 'quantity']
Beispiel #9
0
class InstallStockForm(HelperForm):
    """
    Form for manually installing a stock item into another stock item
    """

    part = forms.ModelChoiceField(
        queryset=Part.objects.all(),
        widget=forms.HiddenInput()
    )

    stock_item = forms.ModelChoiceField(
        required=True,
        queryset=StockItem.objects.filter(StockItem.IN_STOCK_FILTER),
        help_text=_('Stock item to install')
    )

    quantity_to_install = RoundingDecimalFormField(
        max_digits=10, decimal_places=5,
        initial=1,
        label=_('Quantity'),
        help_text=_('Stock quantity to assign'),
        validators=[
            MinValueValidator(0.001)
        ]
    )

    notes = forms.CharField(
        required=False,
        help_text=_('Notes')
    )

    class Meta:
        model = StockItem
        fields = [
            'part',
            'stock_item',
            'quantity_to_install',
            'notes',
        ]

    def clean(self):

        data = super().clean()

        stock_item = data.get('stock_item', None)
        quantity = data.get('quantity_to_install', None)

        if stock_item and quantity and quantity > stock_item.quantity:
            raise ValidationError({'quantity_to_install': _('Must not exceed available quantity')})

        return data
Beispiel #10
0
class EditPartInternalPriceBreakForm(HelperForm):
    """
    Form for creating / editing a internal price for a part
    """

    quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5, label=_('Quantity'))

    class Meta:
        model = PartInternalPriceBreak
        fields = [
            'part',
            'quantity',
            'price',
        ]
Beispiel #11
0
class EditPartSalePriceBreakForm(HelperForm):
    """Form for creating / editing a sale price for a part."""

    quantity = RoundingDecimalFormField(max_digits=10,
                                        decimal_places=5,
                                        label=_('Quantity'))

    class Meta:
        """Metaclass defines fields for this form"""
        model = PartSellPriceBreak
        fields = [
            'part',
            'quantity',
            'price',
        ]
Beispiel #12
0
class CreateSalesOrderAllocationForm(HelperForm):
    """
    Form for creating a SalesOrderAllocation item.
    """

    quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5)

    class Meta:
        model = SalesOrderAllocation

        fields = [
            'line',
            'item',
            'quantity',
        ]
Beispiel #13
0
class EditPurchaseOrderLineItemForm(HelperForm):
    """ Form for editing a PurchaseOrderLineItem object """

    quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5, label=_('Quantity'))

    class Meta:
        model = PurchaseOrderLineItem
        fields = [
            'order',
            'part',
            'quantity',
            'reference',
            'purchase_price',
            'destination',
            'notes',
        ]
Beispiel #14
0
class EditBuildForm(HelperForm):
    """ Form for editing a Build object.
    """

    field_prefix = {
        'reference': 'BO',
        'link': 'fa-link',
        'batch': 'fa-layer-group',
        'serial-numbers': 'fa-hashtag',
        'location': 'fa-map-marker-alt',
        'target_date': 'fa-calendar-alt',
    }

    field_placeholder = {
        'reference': _('Build Order reference'),
        'target_date': _('Order target date'),
    }

    target_date = DatePickerFormField(
        label=_('Target Date'),
        help_text=
        _('Target date for build completion. Build will be overdue after this date.'
          ))

    quantity = RoundingDecimalFormField(
        max_digits=10,
        decimal_places=5,
        label=_('Quantity'),
        help_text=_('Number of items to build'))

    class Meta:
        model = Build
        fields = [
            'reference',
            'title',
            'part',
            'quantity',
            'batch',
            'target_date',
            'take_from',
            'destination',
            'parent',
            'sales_order',
            'link',
            'issued_by',
            'responsible',
        ]
Beispiel #15
0
class EditPriceBreakForm(HelperForm):
    """ Form for creating / editing a supplier price break """

    quantity = RoundingDecimalFormField(
        max_digits=10,
        decimal_places=5,
        label=_('Quantity'),
        help_text=_('Price break quantity'),
    )

    class Meta:
        model = SupplierPriceBreak
        fields = [
            'part',
            'quantity',
            'price',
        ]
Beispiel #16
0
class EditBuildItemForm(HelperForm):
    """
    Form for creating (or editing) a BuildItem object.
    """

    quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5, help_text=_('Select quantity of stock to allocate'))

    part_id = forms.IntegerField(required=False, widget=forms.HiddenInput())

    class Meta:
        model = BuildItem
        fields = [
            'build',
            'stock_item',
            'quantity',
            'install_into',
        ]