Background

  1. 用户在估价单(Estimate)点击「项目」字段旁边+按钮新建项目(Project),在项目的自定义字段中自动填入估价单ID
  2. 用户在项目记录存在切换自定义表格行为

Analysis

  1. 查看页面跳转时请求 URL 是否会带有估价单 internal ID,结论:不会带上估价单 internal ID
  2. 进一步查看页面跳转时请求头信息中是否带有估价单 internal id,结论:请求头referer字段存在估价单 internal id
  3. 用户在切换自定义表格后,页面会刷新,本次刷新请求的请求头中不存在估价单 internal id

Solution

  1. 在项目的 User Event 脚本的 beforeLoad() 方法中,获取请求头中的估价单 internal ID,并填入项目的自定义字段
  2. 用户在切换自定义表格前,在项目的 Client 脚本中使用sessionStorage存储第1步中的估价单 internal ID
  3. 在切换自定义表格刷新时在项目自定义字段中填入sessionStorage存储的估价单 ID

Code Example

// User Event脚本
function beforeLoad(context) {
log.debug('context.type', context.type);
if (context.type == 'create') {
log.debug('context.request', context.request);
var ref = context.request.headers.referer;
var isFromEstimate = /estimate/g.test(ref);
if (isFromEstimate) {
var idReg = /(\d)+/g;
var matchRes = ref.match(idReg) || [];
var estimateId = matchRes[matchRes.length - 1];
log.debug('estimateId', estimateId);
if (estimateId) {
context.newRecord.setValue('custentity_project_from', estimateId);
}
}
}
} // Client脚本
var ESTIMATE_SESSION_ITEM_NAME = 'estimate_id';
function pageInit(context) {
if (context.mode == 'create') {
var estimateId = context.currentRecord.getValue('custentity_project_from') || sessionStorage.getItem(ESTIMATE_SESSION_ITEM_NAME);
log.debug('estimateId', estimateId);
if (estimateId) {
sessionStorage.setItem(ESTIMATE_SESSION_ITEM_NAME, estimateId);
context.currentRecord.setValue('custentity_project_from', estimateId);
}
}
}

NetSuite 开发日记 —— 估价单(Estimate)新建项目(Project)自动填入项目字段的更多相关文章

  1. Ubuntu系统下使用Jenkins进行项目的自动构建还是项目回滚方法

    上面虽然实现了项目的自动部署,但是有时部署失败的时候我们需要回滚到指定版本的构建,这样才能更灵活的进行项目的构建部署.我们可以选择“参数化的构建过程”进行传递不同的参数来选择是进行新的构建还是回滚 如 ...

  2. LayIM.AspNetCore Middleware 开发日记(二)预备知识介绍

    前言 开发一个AspNetCore的中间件需要理解RequestDelegate.另外,还需要理解.NET Core中的依赖注入.还有一个就是内嵌资源的访问.例如:EmbeddedFileProvid ...

  3. Maven实现项目构建直接部署Web项目到Tomcat

    Maven实现项目构建直接部署Web项目到Tomcat配置如下: 1.Tomcat的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加manager权限的用户. <ro ...

  4. Mac下Intellij IDea发布JavaWeb项目 详解一 (1、新建JavaEE Project并进行相应设置 2、配置tomcat)

    IDEA中 javaWeb项目的创建和tomcat配置(完整) 1.先新建JavaEE Project并进行相应设置 2.在配置tomcat Step1 新建JavaEE Project并进行相应设置 ...

  5. cocos2d-x3.0 macOS下配置Android开发环境以及使用cocos2d-console来新建执行project

    下面是子龙山人录制的关于cocos2d-x3.0的视频教程,macOS下配置Android开发环境.使用cocos2d-console来新建执行project.怎样执行cocos2d-x 3.0win ...

  6. 【温故知新】Java web 开发(一) 新建项目

    简述本文写作目的:本文主要用于回忆基础 java web 项目的搭建,在不使用 Spring 等框架的前提下,单纯使用 jsp 和 servlet 完成. 1. 新建 maven 项目,不使用 arc ...

  7. Django 小实例S1 简易学生选课管理系统 2 新建项目(project)并进行设置

    Django 小实例S1 简易学生选课管理系统 第2节--新建项目(project)并进行设置 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 0 ...

  8. 嵌入式Linux驱动开发日记

    嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M ...

  9. JetBrains WebStorm打开多个项目project的方法

    JetBrains WebStorm打开多个项目project的方法File-->Settings-->Directories点击右侧 + Add content root,选择目录后即可 ...

  10. android开发学习---基础知识学习、如何导入已有项目和开发一个电话拨号器

    一.基础知识点学习  1.Android体系结构 如图所示,android 架构分为三层: (1)最底层是linux内核,主要是各种硬件的驱动,如相机驱动(Camera Driver),闪存驱动(Fl ...

随机推荐

  1. 构建iOS交叉编译环境

    要进行高级的iOS编程,我们需要很多工具链来帮我们完成这一目的 构建iOS交叉编译环境: 1.新建一个iphone交叉编译虚拟机 2. 为我们的虚拟机添加第二个网卡,设为host-only来达到能与宿 ...

  2. Row Major

    Smiling & Weeping ----昨天, 别人在我身旁大声说出你的名字, 这对于我, 像从敞开的窗口扔进了一朵玫瑰花. 思路:不客气地说,这是一道令人费解的题目,要求构造一个字符串, ...

  3. Android应用中对于微信分享的实例及问题

    源码地址 如何分享 分享无相应 分享结果如何接收响应 微信 分享回调 (提示几点关键问题:   debug_key 一定要获得对应的签名码 然后和weixin官网的appid对应     ) 几点注意 ...

  4. [SWPUCTF 2021 新生赛]sql

    看到网站上写着参数是wllm,就用wllm=1试了一下,发现是SQL注入 查找字段数时,提示请勿非法操作 说明空格出现过滤,可以用/**/绕过 http://1.14.71.254:28347/?wl ...

  5. 数据链路层传输协议(点到点):停等协议、GBN、SR协议

    数据链路层的传输协议:停等协议.GBN.SR 停止等待协议(单窗口的滑动窗口协议) 滑动窗口协议:GBN.SR GBN协议 GBN发送方需响应的三件事 1. 上层调用(网络层) 上层要发送数据时,发送 ...

  6. CSP2023 模拟赛总结合集

    9.9 ZZFLS 感觉 ucup 剩下的题完全不可做了啊!先对比赛时间来写总结对队友道歉(鞠躬.jpg 开题策略很失败.开场 30min 得的分数是一整场考试的分数. 开题,发现 T1 是水题,30 ...

  7. umich cv-6-1 循环神经网络基本知识

    这节课中介绍了循环神经网络的第一部分,主要介绍了循环神经网络的基本概念,vanilla循环网络架构,RNN的一些应用,vanilla架构的问题,更先进的rnn架构比如GRU和LSTM 循环神经网络基本 ...

  8. java学习内容-2

    目录 java编程基础 (一)变量的数据类型 (二)类型转换 (三)运算符 (四)数组 (五)构造函数 (六)static (七)final (八)继承1 (九)覆盖(override) (十)sup ...

  9. HTML DOM之二:事件

    对事件作出反应 当事件发生时,可以执行 JavaScript,比如当用户点击一个 HTML 元素时. 如需在用户点击某个元素时执行代码,请把 JavaScript 代码添加到 HTML 事件属性中: ...

  10. 高精度减法(C语言实现)

    高精度减法(C语言实现) 介绍 众所周知,整数在C和C++中以int ,long,long long三种不同大小的数据存储,数据大小最大可达2^64,但是在实际使用中,我们仍不可避免的会遇到爆long ...