Netsuite Sales orders suddenly have an additional step (complete) when done through CSV import - netsuite

I am updating my company's system so that it supports dropshipping items. Ever since I switched to this type of item it asks me to complete the order after I approved it. what is it that I am missing so that I can skip this step altogether, is it even possible to skip the step, or to complete multiple orders at the same time (like how you can approve multiple orders)?
It bears mentioning the Company operates in Mexico.
the steps I take are as follow:
I create and save a sales order, that is, I put in the client, the document and reference number, and the item, as well as a couple of custom fields
the next screen asks me to approve the order, I do it and it creates the matching purchase order
then instead of being able to invoice, I first have to "complete" which takes me to an order fulfillment form
I save that and the order can be invoiced.
Ideally, after approval, I would just be able to invoice

Generally a sales order is not invoicable until it's been fulfilled.
You can override that at a whole account level by going to
Setup -> Accounting -> Accounting Preferences
Order Management tab
scroll to Invoicing
check 'Invoice in Advance of Fulfillment'
Be aware this is a system level setting and if you used to be able to invoice before fulfillment someone else in your company may have unchecked this setting in the recent past.
Alternatively at the individual item level you can use the 'Can be fulfilled/received' checkbox to allow invoicing without fulfilling. Note that 'Can be fulfilled/received' may not be changed after an item has been ordered.
Normally (US/Canada) an order should not be invoiced until it is shipped. Customer Deposits on Sales Orders are the preferred way to handle pre-payment for GAAP etc reasons.

Related

How to Required Field in Suitescript for UI and CSV upload

Here's the scenario:
If Transaction type is under Order to Cash process (example: sales order or customer invoice, etc.) and Account Type is Revenue or COGS, it will require Product code and region code when adding item line in the sublist.
The Account type will base from the setup of the item.
The rule should apply for both UI in CSV upload across Order to Cash process
At a minimum, you will need a user event script that runs on the sales order, invoice, and any other record you need validation on. On the script deployment record, select CSV Import and User Interface in the Context Filtering tab.
For better user experience, create a client script that calls the same validation when the user saves the record.

Netsuite Invoice and Item Fulfillment

After surfing the web for more than 3 months, most of the problems that will face NetSuite users are related to Item Fulfillment. I want to know what is the relation between the Invoice and Item Fulfillment.
Invoice will not be created until we fulfill the order, so, there must be a relation between Invoice & IF.
But unfortunately, I cannot get at least Item Fulfillment Order #.
Our Customers are asking to include the Number in the Invoice, but, there is no relation between the 2 records unless one field which is (created from) and this field is getting the Sales Order Number and it is useless to us, since we may issue from one sales order many Item Fulfillment Transactions.
Could anyone suggest any help or hint on how to reach Item Fulfillment # from Invoice Record?
Thanks a lot
There is no system link between an Invoice and an Item Fulfillment.
Sales Orders are linked to one or more Item Fulfillments, and one or more Invoices, but as far as NetSuite is concerned there is nothing connecting any specific fulfillment to any specific invoice. In fact you could have products from multiple fulfillments that are invoiced together, or vice versa, a single fulfillment with multiple invoices.
If you want to store a link between the two documents you would need to customize this yourself using scripting and a custom field.
functionally it is possible only if the policy goes by One SO-One IF-One Inv.
Else you may need to look for scripting.

On which context inventory gets changed in Netsuite

I have created a custom checkbox and I have to mark it to true whenever any thing is changed on the record. My problem is I do not have to use lastmodified date because lastmodified is not working as all the items are coming in search. Whenever an item is shipped, it's inventory is changed but i would like to know on which context it changes. It is possible to do with workflow. How?
Inventory change is via different record types in NetSuite, and will not be via item.
I think you will need to write User Event Script or workflow on following record types to detect all Inventory changes:
1) Item Fulfillment
2) Item Receipt
3) Item Transfer
4) Inventory Adjustment
Apart from these there are other mechanism to make an impact on inventory, I am not sure if NetSuite allows user event script or workflows on these:
1) Inventory worksheet
2) Physical Count
For the case of Item being shipped from a Sales Order an Item Fulfillment is created, so, you can deploye your workdlow or user event on Item Fulfillment in that case.
Edit: Transfer Order isn't applicable as #bknights suggested. Inventory alterations would be actually made by Item Fulfillment/Receipt records in case of Transfer Orders.

Kentico - Adding multiple discounts

I'm using Kentico version 8.2, and am trying to allow a user to enter multiple coupons. In the ECommerceContext.CurrentShoppingCart object you have a ShoppingCartCouponCode that you can set. This then adds this coupon to the Discounts collection on that object.
If I change the ShoppingCartCouponCode to something else, then the Discount collection gets recreated with a single item of the new discount again, and loses the old discount.
If I store a copy of the discount collection, then apply the new coupon entered, and then append the copied collection to the new generated Discount collection then that works for only a couple of discounts. I am concerned that doing it this way will cause issues elsewhere.
So has anyone implemented this functionality before and how did/would you go about it?
EDIT: Although it seems like Product Coupons should allow you to do this, they don't work quite the way you would think. When a Product Coupon is applied to the cart, the ShoppingCartDiscountCouponID field for that cart's record in COM_ShoppingCart is updated to include a foreign key reference to the ID of discount coupon in COM_DiscountCoupon. So there can definitely be only one Product Coupon applied to the cart at any one time.
So instead of being a discount on a particular product, they seem to be more like flags that allow you to apply discounts to the entire cart if a particular product is in the cart and the correct coupon code is entered.
However, that doesn't mean we can't do some customization to achieve this affect ourselves. Our first step will be to change the ShoppingCartContent control in CMSModules > Ecommerce > Controls > ShoppingCart to allow multiple coupon codes to be entered. That's the easy part.
The second part is to change how discounts and carts are associated. This could require modifying Kentico's system tables, so do so at your own risk. You'll basically want to decouple foreign key reference from the COM_ShoppignCart table and create a many-to-many relationship between carts and discounts. Personally, I would leave the system tables and API alone and just create another custom table that mapped CartIDs to DiscountIDs (you will probably have to do the same with Orders, too since cart data is applied to order data when an order is created).
The last part is changing how discounts are actually calculated.
Earlier I suggested creating a custom DiscountCouponInfoProvider. Turns out, what you actually want to do is create a custom ShoppingCartInfoProvider and override one of the following methods:
CalculateOrderDiscount()
CalculateItemsDiscount()
I apologize if this isn't descriptive enough, but this will be a significant modification to how Kentico handles Product Coupons, so I don't have a lot of time to get into specifics. However, I would estimate that it would take a least a few weeks to accomplish.
old answer
Hmm, you could create discounts that represent combinations of two or more discounts and apply those if a user selects the right combination.
Or, what I would prefer if I had the time to build it, would be to create a custom DiscountCouponInfoProvider that changes how discounts are applied.M

Non-Mandatory Location Field on Cash Sales in NetSuite

I am trying to disable the Location field so that it is not mandatory in NetSuite for Cash Sales. I customed the form and unchecked the Mandatory box and it still shows up. When I did this for Sales Orders I also had to update the Accounting Preferences to not require a Location.
Is it possible to perform what I am asking? Do I simply need to disable locations site wide (as opposed to making them non-mandatory on the cash sales form)?
Actually Locations are required on some transactions if Multi-location Inventory feature is enabled.
Though, you can make location non-mandatory using beforeLoad User event Script and using the code in there form.getField('location').setMandatory(false)
But, if you do that, you will get an error as location is required in this case:
Multi-location Inventory Error (MLI_LOCATION_REQUIRED): this
transaction or its items must have locations

Resources