DELIMITER //
DROP PROCEDURE if EXISTs `proc_deal_inv22_back`;//
DELIMITER ;

DELIMITER //
CREATE PROCEDURE `proc_deal_inv22_back`(IN ids VARCHAR(60),IN p_var_serial VARCHAR(60),IN var_source VARCHAR(60),OUT int_result INT)
begin
	#生产退料  
	declare counts integer default 0;
	declare count2 INTEGER DEFAULT 0;
	DECLARE new_int_no INTEGER DEFAULT 0;
	DECLARE new_str_no VARCHAR(60) DEFAULT '';
	set int_result = 0;
	
	UPDATE inv31,inv22 
	SET i31_flag_inv = 'in',
	i31_id_loc = i22_id_loc,
	i31_id_wh = i22_id_wh,
	i31_var_cata = ''
	WHERE i22_id = ids
	AND i31_id = i22_var_serial;
	
	SELECT count(1) INTO count2 FROM sap_busi_no WHERE type = 'ini_id';
	
	IF count2 = 0 THEN
		INSERT INTO sap_busi_no(type,int_no) values('ini_id',1);
		SET new_str_no = LPAD('1',10,'0');
	ELSE
		SELECT int_no INTO new_int_no FROM sap_busi_no WHERE type = 'ini_id' ORDER BY id DESC LIMIT 1;
		SET new_int_no = new_int_no + 1;
		SET new_str_no = LPAD(new_int_no,10,'0');
		UPDATE sap_busi_no SET int_no = new_int_no WHERE type = 'ini_id';
	END IF;
	
	UPDATE inv22 SET i22_id_flow = new_str_no WHERE i22_id = ids;
	
	select count(1) into counts from inv21 where i21_var_serial = p_var_serial;
	IF counts = 0 THEN
		INSERT INTO inv21(i21_id,i21_flag_state,i21_date_create,i21_id_source,i21_var_bill_ori,
		i21_var_busi_no,i21_id_item,i21_var_item,i21_code_item,i21_var_serial,
		i21_var_batch,i21_dec_tag,i21_dec_tare,i21_dec_in,i21_dec_end,
		i21_dec_move,i21_dec_out,i21_dec_in_qty,i21_dec_end_qty,i21_dec_move_qty,
		i21_dec_out_qty,i21_id_unit,i21_date_prod,i21_date_expire,i21_id_sup,
		i21_id_wh,i21_id_loc,i21_id_container,i21_int_bag_count,i21_flag_half,
		i21_flag_checked,i21_flag_occu,i21_flag_closed,i21_id_terminal,i21_flag_tag,
		i21_id_pack,i21_var_batch_prod,i21_id_supp,i21_var_supp,i21_id_customer,
		i21_id_creater,i21_date_recheck,i21_var_source_item)			
		SELECT uuid_short(),'正常',i22_date_create,ids,'',
		'',i22_id_item,i22_var_item,i22_code_item,i22_var_serial,
		i22_var_batch,i22_dec_tag,i22_dec_tare,i22_dec_weight,i22_dec_weight,
		0,0,round(i22_dec_weight/i22_dec_tag,2),round(i22_dec_weight/i22_dec_tag,2),0,
		0,i22_id_unit,i22_date_prod,i22_date_expire,IFNULL(i22_id_sup,''),
		i22_id_wh,i22_id_loc,i22_id_container,i22_int_bag_count,'Y',
		i31_flag_checked,'N','N',i22_id_terminal,i22_flag_tag,
		i22_id_pack,i22_var_batch_prod,IFNULL(i22_id_supp,''),i22_var_supp,i22_id_customer,
		i22_id_creater,i31_date_recheck,i31_var_source_item
		FROM inv22,inv31
		WHERE inv22.i22_id = ids
		AND i22_var_serial = i31_id
		AND i22_dec_weight > 0;
	ELSE
		UPDATE inv21,inv22
		SET 
		i21_id_wh = i22_id_wh,
		i21_id_loc = i22_id_loc
		WHERE i22_id = ids
		AND i21_var_serial = i22_var_serial;
	END IF;
end//
DELIMITER ;