	// ===============================================================
	// Load Parent Information Flags
	// ===============================================================	
	function HTTP_PARENT_LOAD()
	{
	};
	

	// ===============================================================
	// EditHandler Flags
	// ===============================================================	
	
	function HTTP_LOAD(CALLBACK_FUNCTION)
	{
		// Escape if new item
		// ...........................................
		if(JSRC_FLAG.IS_NULL_BIGINT(PROPERTY_REC_POSRESERVE_ID, 1, 1))
		{
			return;
		}
		
	};


	// ===============================================================
	// Trims empty spaces and perform convertion for numeric fields.
	// ===============================================================
	function FIX_INPUT()
	{
		// Fix String Fields
		// ...........................................
		
		
		// Fix Numeric Fields (if field type is not number.)
		// ...........................................


		// Fix Password Fields
		// ...........................................
	};

		
	// ===============================================================
	// Request Save
	// ===============================================================
	function HTTP_SAVE(CALLBACK_METHOD)
	{
		// Sanitize User Inputs
		// _______________________________________________________________________
		// FIX_INPUT();

		// Foreign key check
		// _______________________________________________________________________
		if
		(
			JSOC_ELEMENT.VAR_VALUE("STOCK_FLOW_CMB") < 0 ||
			JSVC_NUM.VAR_NVALL(JSOC_ELEMENT.VAR_VALUE("STOCK_FLOW_CMB")) < 0
		)
		{
			JSOC_DIALOG.VAR_MESSAGE_BOX
			(
				'Stock Flow is required.', 
				'Information',
				'OK', 'WARNING',
				function(MESSAGE_RESPONSE)
				{
					CALLBACK_METHOD(false);
				}
			);
			return;
		}
		
		// Save item [Prepare]
		// _______________________________________________________________________
		var SAVE_MAP_ARRAY = [];
		var BUNDLE_MAP_ARRAY = [];

		var ROW_INDEX = 1;

		while(PRODUCT_BRANCH_DGV.ROW.COUNT() >= ROW_INDEX)
		{	
			if(JSVC_NUM.VAR_NVALL(PRODUCT_BRANCH_DGV.CELL.VALUE("STOCK_QUANTITY", ROW_INDEX - 1)) > 0)
			{
				SAVE_MAP_ARRAY = JSCUS_SQL._RECORD._STOCK_CARD.CUS_PREPARE_MAPPED_ARRAY_FOR_SAVE();

				JSVC_MAP_ARRAY.VAR_SET(SAVE_MAP_ARRAY, "PARAM_REC_STOCKCARD_ACC_GROUP_ID", JSVC_NUM.VAR_NVALL(JSCUS_SQL._RECORD._POSDEVICE._LOGIN.REC_POSDEVICE_ACC_GROUP_ID));
				JSVC_MAP_ARRAY.VAR_SET(SAVE_MAP_ARRAY, "PARAM_REC_STOCKCARD_CAT_STORAGE_ID", JSVC_NUM.VAR_NVALL(PROPERTY_REC_STORAGE_ID));
				JSVC_MAP_ARRAY.VAR_SET(SAVE_MAP_ARRAY, "PARAM_REC_STOCKCARD_CAT_PRODUCT_ID", JSVC_NUM.VAR_NVALL(PRODUCT_BRANCH_DGV.CELL.VALUE("CAT_PRODBRANCH_CAT_PRODUCT_ID", ROW_INDEX - 1))); 
				JSVC_MAP_ARRAY.VAR_SET(SAVE_MAP_ARRAY, "PARAM_REC_STOCKCARD_CAT_STOCKFLOW_ID", JSVC_NUM.VAR_NVALL(JSOC_ELEMENT.VAR_VALUE("STOCK_FLOW_CMB")));
				JSVC_MAP_ARRAY.VAR_SET(SAVE_MAP_ARRAY, "PARAM_REC_STOCKCARD_QUANTITY", JSVC_NUM.VAR_NVALL(PRODUCT_BRANCH_DGV.CELL.VALUE("STOCK_QUANTITY", ROW_INDEX - 1)));
				JSVC_MAP_ARRAY.VAR_SET(SAVE_MAP_ARRAY, "PARAM_REC_STOCKCARD_REMARKS", PRODUCT_BRANCH_DGV.CELL.VALUE("STOCK_REMARKS", ROW_INDEX - 1));
				JSVC_MAP_ARRAY.VAR_SET(SAVE_MAP_ARRAY, "PARAM_REC_STOCKCARD_STATUS", 2);

				BUNDLE_MAP_ARRAY = JSCUS_SQL._RECORD._STOCK_CARD.CUS_ADD_MAPPED_ARRAY_FOR_SAVE(BUNDLE_MAP_ARRAY, SAVE_MAP_ARRAY);
			}

			ROW_INDEX++;
		}
		
		// Declare Post Request Handler
		// _______________________________________________________________________
		var RESPONSE_HANDLER = 			
			function(IS_SUCCESS, HTTP_RESPONSE)
			{
				// Disable Dialogs
				// ...........................................
				CUS_SEND_DIALOG_TRY_DISMISS();
				
				// Handle Error
				// ...........................................
				if(IS_SUCCESS === false)
				{
					METHOD_UNABLE_TO_SEND_REQUEST(CALLBACK_METHOD);	
					return;
				}
				
				// Catch JSON Error
				// ...........................................
				else if(JSRC_JSON.REF_IS_JSTRING(HTTP_RESPONSE) == false)
				{
					METHOD_SERVER_ISSUE(CALLBACK_METHOD, HTTP_RESPONSE);
					return;			
				}
					
				// Read Response
				// ...........................................
				else
				{
					// Load Response
					var JSON_OBJECT = JSRC_JSON.REF_CREATE(HTTP_RESPONSE);
					if(JSRC_JSON.REF_IS_SUCCESS(JSON_OBJECT) === false)
					{
						METHOD_REQUEST_FAILURE(CALLBACK_METHOD, JSON_OBJECT);
						return;
					}
					// Post Save Action
					else
					{
						CALLBACK_METHOD(true);		
					}
				}
			};
			
			
		// Save Item [Send Request]
		// _______________________________________________________________________
		JSOC_DIALOG.VAR_LOADING_SPINNER(true);
		JSCUS_SQL._RECORD._STOCK_CARD.CUS_SAVE
		(
			BUNDLE_MAP_ARRAY,
			RESPONSE_HANDLER
		);
		
	};
	
	// ===============================================================
	// Request Delete
	// ===============================================================
	// function HTTP_DELETE(CALLBACK_METHOD, ROW_INDEX)
	// {
	// 	// Escape if Disabled
	// 	// _______________________________________________________________________
	// 	if(JSVC_VAR.VAR_ISSET(DELETE_BBI) && DELETE_BBI.Enabled == false)
	// 	{
	// 		CALLBACK_METHOD(false);
	// 		return;
	// 	}

	// 	// Escape if nothing selected
	// 	// _______________________________________________________________________
	// 	if(ROW_INDEX < 0)
	// 	{
	// 		JSVC_ERROR.VAR_ARGUMENT_EXCEPTION_NOTHING_SELECTED(true);
	// 		CALLBACK_METHOD(false);
	// 		return;
	// 	}
		
	// 	// Initialize
	// 	// _______________________________________________________________________
	// 	var DELETE_ITEM_DESCRIPTION = POS_RESERVE_DGV.CELL.VALUE('REC_POSRESERVE_CODE', ROW_INDEX);
		
		
		
	// 	// Declare Post Request Handler
	// 	// _______________________________________________________________________
	// 	var RESPONSE_HANDLER = function
	// 	(
	// 		IS_SUCCESS, 
	// 		HTTP_RESPONSE
	// 	)
	// 	{
	// 		// Disable Dialogs
	// 		// ...........................................
	// 		CUS_SEND_DIALOG_TRY_DISMISS();
				
				
	// 		// Handle Error
	// 		// ...........................................
	// 		if(IS_SUCCESS === false)
	// 		{
	// 			METHOD_UNABLE_TO_SEND_REQUEST(CALLBACK_METHOD);
	// 			return;
	// 		}
			
	// 		// Catch JSON Error
	// 		// ...........................................
	// 		else if(JSRC_JSON.REF_IS_JSTRING(HTTP_RESPONSE) == false)
	// 		{
	// 			METHOD_SERVER_ISSUE(CALLBACK_METHOD, HTTP_RESPONSE);
	// 			return;			
	// 		}
			
			
	// 		// Read Response
	// 		// ...........................................
	// 		else
	// 		{
	// 			// Load Response
	// 			var JSON_OBJECT = JSRC_JSON.REF_CREATE(HTTP_RESPONSE);
	// 			if(JSRC_JSON.REF_IS_SUCCESS(JSON_OBJECT) === false)
	// 			{
	// 				METHOD_REQUEST_FAILURE(CALLBACK_METHOD, JSON_OBJECT);
	// 				return;
	// 			}
				
	// 			// Post Delete Action
	// 			else
	// 			{
	// 				POS_RESERVE_DGV.ROW.REMOVE_AT(ROW_INDEX);
	// 				POS_RESERVE_DGV.COLUMN.ROW_COUNT_PRINT('ROW_COUNT');
	// 				JSVC_INFO.VAR_RECORD_DELETED
	// 				(
	// 					DELETE_ITEM_DESCRIPTION, 
	// 					function()
	// 					{
	// 						CALLBACK_METHOD(true);
	// 					}
	// 				);		
	// 			}
	// 		}
	// 	};
		
		
	// 	// Request User Verification for Delete
	// 	// _______________________________________________________________________
	// 	JSVC_INFO.VAR_VERIFY_DELETE
	// 	(
	// 		DELETE_ITEM_DESCRIPTION,
	// 		function(VERIFY_RESULT) 
	// 		{
	// 			// Abort if rejected by user.
	// 			// ...........................................
	// 			if(VERIFY_RESULT != JSOC_DIALOG.MSGBOX_YES)
	// 			{

	// 				CALLBACK_METHOD(false);
	// 				return;
	// 			}
				
				
	// 			//Delete Item
	// 			// ...........................................
	// 			JSOC_DIALOG.VAR_LOADING_SPINNER(true);
	// 			JSCUS_SQL._RECORD._POS_RESERVE.CUS_DELETE
	// 			(
	// 				POS_RESERVE_DGV.CELL.VALUE('REC_POSRESERVE_ID', ROW_INDEX),
	// 				RESPONSE_HANDLER
	// 			)
	// 		}
	// 	);
	// };
	
	
	// ===============================================================
	// Request Void
	// ===============================================================
	// function HTTP_VOID(CALLBACK_METHOD, ROW_INDEX)
	// {
		
	// 	// Escape if Disabled
	// 	// _______________________________________________________________________
	// 	if
	// 	(
	// 		JSVC_VAR.VAR_ISSET(POS_RESERVE_DGV.CELL.ELEMENT('REC_POSRESERVE_STATUS', ROW_INDEX)) && 
	// 		POS_RESERVE_DGV.CELL.ELEMENT('REC_POSRESERVE_STATUS', ROW_INDEX).Enabled == false
	// 	)
	// 	{
	// 		CALLBACK_METHOD(false);
	// 		return;
	// 	}

	// 	// Escape if nothing selected
	// 	// _______________________________________________________________________
	// 	if(ROW_INDEX < 0)
	// 	{
	// 		JSVC_ERROR.VAR_ARGUMENT_EXCEPTION_NOTHING_SELECTED(true);
	// 		CALLBACK_METHOD(false);
	// 		return;
	// 	}
		
	// 	// Abort if already Voided (Status = 3)
	// 	// _______________________________________________________________________
	// 	if(POS_RESERVE_DGV.CELL.VALUE('REC_POSRESERVE_STATUS', ROW_INDEX) == 3)
	// 	{
	// 		JSOC_DIALOG.VAR_MESSAGE_BOX
	// 		(
	// 			'This item is already Voided', 
	// 			'Information',
	// 			'OK', 'INFO',
	// 			null
	// 		);		
	// 		return;
	// 	}		
		
	// 	// Notify User to Void	
	// 	// _______________________________________________________________________
	// 	JSOC_DIALOG.VAR_MESSAGE_BOX
	// 	(
	// 		'Do you want to void the selected item?', 
	// 		'Information',
	// 		'YESNO', 'QUESTION',
	// 		function(VERIFY_RESULT)
	// 		{
	// 			if(VERIFY_RESULT == JSOC_DIALOG.MSGBOX_YES)
	// 			{
	// 				PROPERTY_REC_VOUCHER_ID = POS_RESERVE_DGV.CELL.VALUE('5457', ROW_INDEX);
	// 				PROPERTY_EDIT_ROW_INDEX = ROW_INDEX;
	// 				HTTP_LOAD
	// 				(
	// 					function()
	// 					{
	// 						JSOC_CMB.VAR_SELECTED_VALUE(REC_POSRESERVE_STATUS_CMB, 3);
	// 						JSOC_DIALOG.VAR_MODAL("POS_RESERVE_MODAL", true);
	// 						EDIT_HANDLER.REF_IS_MODIFIED = true;				
	// 					}
	// 				);
	// 			}
	// 		}
	// 	);
		
	// };