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. (null) entry in command string: null chmod 0644

    在WIndows操作系统中本地运行spark程序,报以下错误: ....(null) entry in command string: null chmod 0644 ..(后面是目的目录) 解决方法 ...

  2. MIMO雷达中波形复用/分离的方法------TDMA\FDMA\DDMA\CDMA

    最先接触到MIMO雷达的波形复用/分离的方法还是工作中负责的TI1843项目中了解的,主要还是时分多址波形(TDMA),当时刚接触时对这些很疑惑,再加上后面看到了频分多址波形(FDMA).码分多址波形 ...

  3. KRPANO开发拍摄拼图视频常用软件分享

    KRPano开发拍摄拼图视频常用软件分享,包含了KRPano开发,拼图,视频等软件. 包括如下软件: 全景照片拼接,全景照片查看,全景视频拼接,全景视频查看,全景视频插件,全景漫游制作,KRPano资 ...

  4. 一次性全讲透GaussDB(DWS)锁的问题

    本文分享自华为云社区<GaussDB(DWS)锁问题全解>,作者: yd_211043076. 一.gaussdb有哪些锁 1.常规锁:常规锁主要用于业务访问数据库对象的加锁,保护并发操作 ...

  5. 「Tricks」整体DP

    不太了解这个东西的具体定义是什么,总之应该是一个用数据结构维护 DP 状态的某几个维度的 trick 吧. 事实上你可以把这篇 post 理解为三个题的解集. 先直接来看 noi2020 - Dest ...

  6. 基于TOTP算法的Github两步验证2FA(双因子)机制Python3.10实现

    从今年(2023)三月份开始,Github开始强制用户开启两步验证2FA(双因子)登录验证,毫无疑问,是出于安全层面的考虑,毕竟Github账号一旦被盗,所有代码仓库都会毁于一旦,关于双因子登录的必要 ...

  7. 【Unity3D】UI Toolkit样式选择器

    1 前言 ​ UI Toolkit简介 中介绍了样式属性,UI Toolkit容器 和 UI Toolkit元素 中介绍了容器和元素,本文将介绍样式选择器(Selector),主要包含样式类选择器(C ...

  8. LocalDateTime、LocalDate、Date、String相互转化大全及其注意事项

    一.前言 大家在开发过程中必不可少的和日期打交道,对接别的系统时,时间日期格式不一致,每次都要转化! 每次写完就忘记了,小编专门来整理一篇来详细说一下他们四个的转换的方法,方便后面使用!! 二.Loc ...

  9. kubernetes组件介绍-service概念

    kubernetes组件介绍 MESOS APACHE 分布式资源管理框架 2019-5 Twitter > Kuberneets Dcocker Swarm 2019-07 阿里云宣布 Doc ...

  10. Terraform 系列-使用Dynamic Blocks对Blocks进行迭代

    系列文章 Terraform 系列文章 Grafana 系列文章 概述 Terraform 系列文章 介绍了使用 Grafana Terraform Provider, 基于 Terraform 的 ...