Issue material to job from REST

I’m trying to issue material to a job through REST. I’m getting an error message:

{“HttpStatus”:400,“ReasonPhrase”:“REST API Exception”,“ErrorMessage”:"You cannot issue parts of UOM Class SHEET that require UOM Class ",“ErrorType”:“Ice.Common.BusinessObjectException”,“ErrorDetails”:[{“Message”:"You cannot issue parts of UOM Class SHEET that require UOM Class ",“Type”:“Error”,“Program”:“Erp.Services.BO.IssueReturn.dll”,“Method”:“validatePartNum”,“ColumnNumber”:29,“LineNumber”:14191}],“CorrelationId”:“c960efa8-e79d-477a-b7cc-5b3e8f228c22”}

My code is:

        url = f"{self.base_url}/api/v2/odata/{company}/Erp.BO.IssueReturnSvc/GetNewIssueReturn"
        entity:dict = {
            'pcTranType': 'STK-MTL',
            'pcMtlQueueRowID': "00000000-0000-0000-0000-000000000000",
            'pCallProcess': 'IssueMaterial',
            'ds': {}
        }
        
        print(f"Making POST request to: {url}")
        post_response = self.session.post(url, json=entity, auth=self.auth, verify=False)
        
        if post_response.status_code != 200:
            raise HTTPException(
                status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
                detail=f"Failed to get new issue return - {post_response.status_code} {post_response.reason} {post_response.content}",
                headers={"WWW-Authenticate": "Basic"}
            )
            
        data = post_response.json()
        
        trans_row:dict = data['parameters']['ds']['IssueReturn'][0]
        trans_row.update({
            'RowMod': 'A',
            'UM': 'SQIN',
            'DimConvFactor': 1.0,
            'Company': company,
            'PartNum': mtl_part_num,
            'TranQty': qty,
            'FromWarehouseCode': from_warehouse,
            'FromBinNum': from_bin,
            'ToJobNum': job_num,
            'ToAssemblySeq': asm_seq,
            'ToJobSeq': mtl_seq,
            "TranType": "STK-MTL"
        })
        
        data = {
            'plNegQtyAction': True,
            'ds': {
                'IssueReturn': [
                    trans_row
                ]
            }
        }
        
        url = f"{self.base_url}/api/v2/odata/{company}/Erp.BO.IssueReturnSvc/PerformMaterialMovement"
        print(f"Making POST request to: {url}")

        post_response = self.session.post(url, json=data, auth=self.auth, verify=False)
        
        if post_response.status_code != 200:
            raise HTTPException(
                status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
                detail=f"Failed to issue material - {post_response.status_code} {post_response.reason} {post_response.content}",
                headers={"WWW-Authenticate": "Basic"},
            )
        else:
            print(f'Material issued successfully - ({post_response.status_code} {post_response.reason} {post_response.content})')
            data = post_response.json()
            print(json.dumps(data))
        
        return None

The part (#100013) has a UIM code of SQIN and a UOM class of SHEET.

Anyone have a clue what’s going on here?

I have got it working by setting these fields:

        trans_row.update({
            'ProcessID': 'IssueMaterial',
            'Company': company,
            'PartNum': mtl_part_num,
            'TranQty': qty,
            'FromWarehouseCode': from_warehouse,
            'FromBinNum': from_bin,
            'ToJobNum': job_num,
            'ToWarehouseCode': from_warehouse,
            'ToBinNum': '00-00-00',
            'ToAssemblySeq': asm_seq,
            'ToJobSeq': mtl_seq,
            "TranType": "STK-MTL",
            'DimConvFactor': 1.0,
            'DimCode': 'SQIN',
            'UM': 'SQIN',
            'OnHandUM': 'SQIN',
            'PartSalesUM': 'SQIN',
            'PartIUM': 'SQIN',
            'RequirementUOM': 'SQIN',
            'RowMod': 'U'
        })
2 Likes