0 ? billingQuantity($form_product['product_reorder_level']) : ''; $form_reorder_qty = $form_edit && floatval($form_product['product_reorder_qty']) > 0 ? billingQuantity($form_product['product_reorder_qty']) : ''; $form_price = $form_edit ? number_format(floatval($form_product['product_price']), 2, '.', '') : ''; $form_cost = $form_edit && floatval($form_product['product_cost']) > 0 ? number_format(floatval($form_product['product_cost']), 2, '.', '') : ''; $form_currency = $form_edit ? (string) $form_product['product_currency_code'] : (string) $session_company_currency; $form_asset_type = $form_value('product_asset_type'); $form_warranty = $form_edit && intval($form_product['product_warranty_months']) > 0 ? intval($form_product['product_warranty_months']) : ''; $form_taxes = billingTaxes(); $form_vendors = productVendors(); if ($form_vendor_id && !isset($form_vendors[$form_vendor_id]) && $form_value('vendor_name') !== '') { $form_vendors[$form_vendor_id] = $form_value('vendor_name') . ' (archived)'; } ?>
$type) { ?> data-product-type>
>
Taxed, its lines take the client's own rate when it has one
Add a cost to see your margin - only agents see it.
Picked on a quote, it fills in Billed. On a recurring invoice, per user or per device takes the quantity from the client's count.
data-product-track>
Invoicing it takes it off the shelf, and it can't be sold past what is there. Add stock as it comes in.
Ordered as needed - invoicing it doesn't touch stock.
Agents are told when it gets down to this, and it is listed under Reorder with the vendor and part number.
months
When it is sold, the invoice offers to add each one to the client's assets with its serial number, this make and model, and the warranty counted from the invoice date.
Pick an asset type for hardware the client keeps - a laptop, a switch, a firewall - and selling it offers to add it to their assets.