[FR 1823612 ] Product Info Screen Improvements
Notice that I modified the Adempiere Look and Feel of swingx taskpane components to match Adempiere's theme.
This commit is contained in:
parent
7beb420b5d
commit
96813340f9
|
@ -312,6 +312,9 @@ public abstract class Info extends CDialog
|
|||
private CPanel southPanel = new CPanel();
|
||||
private BorderLayout southLayout = new BorderLayout();
|
||||
ConfirmPanel confirmPanel = new ConfirmPanel(true, true, true, true, true, true, true);
|
||||
//Begin - [FR 1823612 ] Product Info Screen Improvements
|
||||
protected CPanel addonPanel = new CPanel();
|
||||
//End - [FR 1823612 ] Product Info Screen Improvements
|
||||
protected StatusBar statusBar = new StatusBar();
|
||||
protected CPanel parameterPanel = new CPanel();
|
||||
private JScrollPane scrollPane = new JScrollPane();
|
||||
|
@ -327,6 +330,9 @@ public abstract class Info extends CDialog
|
|||
{
|
||||
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
southPanel.setLayout(southLayout);
|
||||
//Begin - [FR 1823612 ] Product Info Screen Improvements
|
||||
southPanel.add(addonPanel, BorderLayout.NORTH);
|
||||
//End - [FR 1823612 ] Product Info Screen Improvements
|
||||
southPanel.add(confirmPanel, BorderLayout.CENTER);
|
||||
southPanel.add(statusBar, BorderLayout.SOUTH);
|
||||
getContentPane().add(southPanel, BorderLayout.SOUTH);
|
||||
|
@ -436,7 +442,9 @@ public abstract class Info extends CDialog
|
|||
|
||||
// Window Sizing
|
||||
parameterPanel.setPreferredSize(new Dimension (INFO_WIDTH, parameterPanel.getPreferredSize().height));
|
||||
scrollPane.setPreferredSize(new Dimension(INFO_WIDTH, 400));
|
||||
//Begin - [FR 1823612 ] Product Info Screen Improvements
|
||||
scrollPane.setPreferredSize(new Dimension(INFO_WIDTH, 300));
|
||||
//End - [FR 1823612 ] Product Info Screen Improvements
|
||||
} // prepareTable
|
||||
|
||||
|
||||
|
|
|
@ -22,14 +22,28 @@ import java.math.*;
|
|||
import java.sql.*;
|
||||
import java.util.*;
|
||||
import java.util.logging.*;
|
||||
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTabbedPane;
|
||||
import javax.swing.JTextArea;
|
||||
import javax.swing.plaf.ColorUIResource;
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
//
|
||||
import org.adempiere.plaf.AdempierePLAF;
|
||||
import org.adempiere.plaf.AdempiereTaskPaneUI;
|
||||
import org.compiere.apps.*;
|
||||
import org.compiere.grid.ed.*;
|
||||
import org.compiere.minigrid.*;
|
||||
import org.compiere.model.*;
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.util.*;
|
||||
import org.jdesktop.swingx.JXTable;
|
||||
import org.jdesktop.swingx.JXTaskPane;
|
||||
import org.jdesktop.swingx.JXTaskPaneContainer;
|
||||
import org.jdesktop.swingx.action.AbstractActionExt;
|
||||
|
||||
import com.sun.jmx.mbeanserver.MetaData;
|
||||
|
||||
/**
|
||||
* Search Product and return selection
|
||||
|
@ -72,6 +86,10 @@ public final class InfoProduct extends Info implements ActionListener
|
|||
p_loadedOK = true;
|
||||
// Focus
|
||||
fieldValue.requestFocus();
|
||||
|
||||
//Begin - fer_luck @ centuryon
|
||||
mWindowNo = WindowNo;
|
||||
//End - fer_luck @ centuryon
|
||||
|
||||
AEnv.positionCenterWindow(frame, this);
|
||||
} // InfoProduct
|
||||
|
@ -104,6 +122,19 @@ public final class InfoProduct extends Info implements ActionListener
|
|||
private VComboBox pickWarehouse = new VComboBox();
|
||||
private CLabel labelVendor = new CLabel();
|
||||
private CTextField fieldVendor = new CTextField(10);
|
||||
|
||||
//Begin - fer_luck @ centuryon
|
||||
private CTextPane fieldDescription = new CTextPane();
|
||||
JXTaskPane warehouseStockPanel = new JXTaskPane();
|
||||
CPanel tablePanel = new CPanel();
|
||||
MiniTable warehouseTbl = new MiniTable();
|
||||
String m_sqlWarehouse;
|
||||
MiniTable substituteTbl = new MiniTable();
|
||||
String m_sqlSubstitute;
|
||||
MiniTable relatedTbl = new MiniTable();
|
||||
String m_sqlRelated;
|
||||
int mWindowNo = 0;
|
||||
//End - fer_luck @ centuryon
|
||||
|
||||
/** Search Button */
|
||||
private CButton m_InfoPAttributeButton = new CButton(Env.getImageIcon("PAttribute16.gif"));
|
||||
|
@ -158,7 +189,7 @@ public final class InfoProduct extends Info implements ActionListener
|
|||
parameterPanel.add(fieldValue, null);
|
||||
parameterPanel.add(labelUPC, null);
|
||||
parameterPanel.add(fieldUPC, null);
|
||||
parameterPanel.add(labelWarehouse, new ALayoutConstraint(0,6));
|
||||
parameterPanel.add(labelWarehouse, null);
|
||||
parameterPanel.add(pickWarehouse, null);
|
||||
parameterPanel.add(m_InfoPAttributeButton);
|
||||
// Line 2
|
||||
|
@ -168,7 +199,9 @@ public final class InfoProduct extends Info implements ActionListener
|
|||
parameterPanel.add(fieldSKU, null);
|
||||
parameterPanel.add(labelVendor, null);
|
||||
parameterPanel.add(fieldVendor, null);
|
||||
parameterPanel.add(labelPriceList, null);
|
||||
|
||||
// Line 3
|
||||
parameterPanel.add(labelPriceList, new ALayoutConstraint(2,0));
|
||||
parameterPanel.add(pickPriceList, null);
|
||||
|
||||
// Product Attribute Instance
|
||||
|
@ -176,8 +209,201 @@ public final class InfoProduct extends Info implements ActionListener
|
|||
confirmPanel.addButton(m_PAttributeButton);
|
||||
m_PAttributeButton.addActionListener(this);
|
||||
m_PAttributeButton.setEnabled(false);
|
||||
|
||||
//Begin - fer_luck @ centuryon
|
||||
//add taskpane
|
||||
fieldDescription.setBackground(AdempierePLAF.getInfoBackground());
|
||||
fieldDescription.setEditable(false);
|
||||
fieldDescription.setPreferredSize(new Dimension(INFO_WIDTH - 100, 40));
|
||||
|
||||
warehouseStockPanel.setTitle(Msg.translate(Env.getCtx(), "WarehouseStock"));
|
||||
warehouseStockPanel.setUI(new AdempiereTaskPaneUI());
|
||||
warehouseStockPanel.getContentPane().setBackground(new ColorUIResource(251,248,241));
|
||||
warehouseStockPanel.getContentPane().setForeground(new ColorUIResource(251,0,0));
|
||||
|
||||
ColumnInfo[] s_layoutWarehouse = new ColumnInfo[]{
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "Warehouse"), "Warehouse", String.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyAvailable"), "QtyAvailable", Double.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyOnHand"), "QtyOnHand", Double.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyReserved"), "QtyReserved", Double.class)};
|
||||
/** From Clause */
|
||||
String s_sqlFrom = " M_Product_Stock_V ";
|
||||
/** Where Clause */
|
||||
String s_sqlWhere = "Value = ?";
|
||||
m_sqlWarehouse = warehouseTbl.prepareTable(s_layoutWarehouse, s_sqlFrom, s_sqlWhere, false, "M_Product_Stock_V");
|
||||
warehouseTbl.setRowSelectionAllowed(true);
|
||||
warehouseTbl.setMultiSelection(false);
|
||||
warehouseTbl.addMouseListener(this);
|
||||
warehouseTbl.getSelectionModel().addListSelectionListener(this);
|
||||
warehouseTbl.autoSize();
|
||||
warehouseTbl.setPreferredScrollableViewportSize(new Dimension(INFO_WIDTH - 10, 40));
|
||||
warehouseTbl.setPreferredSize(new Dimension(INFO_WIDTH - 10, 40));
|
||||
|
||||
ColumnInfo[] s_layoutSubstitute = new ColumnInfo[]{
|
||||
new ColumnInfo(
|
||||
Msg.translate(Env.getCtx(), "Value"),
|
||||
"(Select Value from M_Product p where p.M_Product_ID=M_Product_SubstituteRelated_V.M_Product_ID)",
|
||||
String.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyAvailable"), "QtyAvailable", Double.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyOnHand"), "QtyOnHand", Double.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyReserved"), "QtyReserved", Double.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "PriceStd"), "PriceStd", Double.class)};
|
||||
s_sqlFrom = "M_Product_SubstituteRelated_V";
|
||||
s_sqlWhere = "M_Product_ID = ? AND M_PriceList_Version_ID = ? and RowType = 'S'";
|
||||
m_sqlSubstitute = substituteTbl.prepareTable(s_layoutSubstitute, s_sqlFrom, s_sqlWhere, false, "M_Product_SubstituteRelated_V");
|
||||
substituteTbl.setRowSelectionAllowed(false);
|
||||
substituteTbl.setMultiSelection(false);
|
||||
substituteTbl.addMouseListener(this);
|
||||
substituteTbl.getSelectionModel().addListSelectionListener(this);
|
||||
substituteTbl.autoSize();
|
||||
substituteTbl.setPreferredScrollableViewportSize(new Dimension(INFO_WIDTH - 10, 40));
|
||||
substituteTbl.setPreferredSize(new Dimension(INFO_WIDTH - 10, 40));
|
||||
|
||||
ColumnInfo[] s_layoutRelated = new ColumnInfo[]{
|
||||
new ColumnInfo(
|
||||
Msg.translate(Env.getCtx(), "Value"),
|
||||
"(Select Value from M_Product p where p.M_Product_ID=M_Product_SubstituteRelated_V.M_Product_ID)",
|
||||
String.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyAvailable"), "QtyAvailable", Double.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyOnHand"), "QtyOnHand", Double.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyReserved"), "QtyReserved", Double.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "PriceStd"), "PriceStd", Double.class)};
|
||||
s_sqlFrom = "M_Product_SubstituteRelated_V";
|
||||
s_sqlWhere = "M_Product_ID = ? AND M_PriceList_Version_ID = ? and RowType = 'R'";
|
||||
m_sqlRelated = relatedTbl.prepareTable(s_layoutRelated, s_sqlFrom, s_sqlWhere, false, "M_Product_SubstituteRelated_V");
|
||||
relatedTbl.setRowSelectionAllowed(false);
|
||||
relatedTbl.setMultiSelection(false);
|
||||
relatedTbl.addMouseListener(this);
|
||||
relatedTbl.getSelectionModel().addListSelectionListener(this);
|
||||
relatedTbl.autoSize();
|
||||
relatedTbl.setPreferredScrollableViewportSize(new Dimension(INFO_WIDTH - 10, 40));
|
||||
relatedTbl.setPreferredSize(new Dimension(INFO_WIDTH - 10, 40));
|
||||
|
||||
CTabbedPane jTab = new CTabbedPane();
|
||||
jTab.addTab(Msg.translate(Env.getCtx(), "Warehouse"), new JScrollPane(warehouseTbl));
|
||||
jTab.setPreferredSize(new Dimension(INFO_WIDTH, 110));
|
||||
jTab.addTab(Msg.translate(Env.getCtx(), "Description"), fieldDescription);
|
||||
jTab.addTab(Msg.translate(Env.getCtx(), "Substitute_ID"), new JScrollPane(substituteTbl));
|
||||
jTab.addTab(Msg.translate(Env.getCtx(), "RelatedProduct_ID"), new JScrollPane(relatedTbl));
|
||||
tablePanel.setPreferredSize(new Dimension(INFO_WIDTH, 110));
|
||||
tablePanel.add(jTab);
|
||||
|
||||
warehouseStockPanel.setExpanded(false);
|
||||
warehouseStockPanel.add(tablePanel);
|
||||
this.addonPanel.add(warehouseStockPanel);
|
||||
|
||||
this.p_table.addKeyListener(new KeyAdapter() {
|
||||
public void keyReleased(KeyEvent ke){
|
||||
int row = ((MiniTable)ke.getSource()).getSelectedRow();
|
||||
refresh(
|
||||
((MiniTable)ke.getSource()).getValueAt(row,2),
|
||||
new BigDecimal(pickWarehouse.getValue().toString()).intValue(),
|
||||
new BigDecimal(pickPriceList.getValue().toString()).intValue()
|
||||
);
|
||||
warehouseStockPanel.setExpanded(true);
|
||||
}
|
||||
});
|
||||
|
||||
this.p_table.addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked(MouseEvent me) {
|
||||
int row = ((MiniTable)me.getSource()).getSelectedRow();
|
||||
refresh(
|
||||
((MiniTable)me.getSource()).getValueAt(row,2),
|
||||
new BigDecimal(pickWarehouse.getValue().toString()).intValue(),
|
||||
new BigDecimal(pickPriceList.getValue().toString()).intValue()
|
||||
);
|
||||
warehouseStockPanel.setExpanded(true);
|
||||
}
|
||||
});
|
||||
//End - fer_luck @ centuryon
|
||||
} // statInit
|
||||
|
||||
//Begin - fer_luck @ centuryon
|
||||
/**
|
||||
* Refresh Query
|
||||
*/
|
||||
private void refresh(Object obj, int M_Warehouse_ID, int M_PriceList_Version_ID)
|
||||
{
|
||||
int M_Product_ID = 0;
|
||||
String sql = m_sqlWarehouse;
|
||||
//Add description to the query
|
||||
sql = sql.replace(" FROM", ", DocumentNote FROM");
|
||||
log.finest(sql);
|
||||
PreparedStatement pstmt = null;
|
||||
try
|
||||
{
|
||||
pstmt = DB.prepareStatement(sql, null);
|
||||
pstmt.setString(1, (String)obj);
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
fieldDescription.setText("");
|
||||
warehouseTbl.loadTable(rs);
|
||||
rs = pstmt.executeQuery();
|
||||
if(rs.next())
|
||||
if(rs.getString("DocumentNote") != null)
|
||||
fieldDescription.setText(rs.getString("DocumentNote"));
|
||||
rs.close();
|
||||
pstmt.close();
|
||||
pstmt = null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
log.log(Level.SEVERE, sql, e);
|
||||
}
|
||||
|
||||
try {
|
||||
sql = "SELECT M_Product_ID FROM M_Product WHERE Value = ?";
|
||||
pstmt = DB.prepareStatement(sql, null);
|
||||
pstmt.setString(1, (String)obj);
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
if(rs.next())
|
||||
M_Product_ID = rs.getInt(1);
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
|
||||
sql = m_sqlSubstitute;
|
||||
log.finest(sql);
|
||||
try {
|
||||
pstmt = DB.prepareStatement(sql, null);
|
||||
pstmt.setInt(1, M_Product_ID);
|
||||
pstmt.setInt(2, M_PriceList_Version_ID);
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
substituteTbl.loadTable(rs);
|
||||
rs.close();
|
||||
pstmt.close();
|
||||
pstmt = null;
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
|
||||
sql = m_sqlRelated;
|
||||
log.finest(sql);
|
||||
try {
|
||||
pstmt = DB.prepareStatement(sql, null);
|
||||
pstmt.setInt(1, M_Product_ID);
|
||||
pstmt.setInt(2, M_PriceList_Version_ID);
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
relatedTbl.loadTable(rs);
|
||||
rs.close();
|
||||
pstmt.close();
|
||||
pstmt = null;
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (pstmt != null)
|
||||
pstmt.close();
|
||||
pstmt = null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
pstmt = null;
|
||||
}
|
||||
} // refresh
|
||||
//End - fer_luck @ centuryon
|
||||
|
||||
/**
|
||||
* Dynamic Init
|
||||
*
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package org.adempiere.plaf;
|
||||
|
||||
import org.jdesktop.swingx.plaf.basic.BasicLookAndFeelAddons;
|
||||
|
||||
public class AdempiereLookAndFeelAddons extends BasicLookAndFeelAddons {
|
||||
public void initialize() {
|
||||
super.initialize();
|
||||
loadDefaults(getDefaults());
|
||||
}
|
||||
|
||||
public void uninitialize() {
|
||||
super.uninitialize();
|
||||
unloadDefaults(getDefaults());
|
||||
}
|
||||
|
||||
private Object[] getDefaults() {
|
||||
Object[] defaults =
|
||||
new Object[] {
|
||||
// "DirectoryChooserUI",
|
||||
// "org.jdesktop.jdnc.swing.plaf.windows.WindowsDirectoryChooserUI",
|
||||
};
|
||||
return defaults;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,113 @@
|
|||
package org.adempiere.plaf;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.GradientPaint;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Insets;
|
||||
import java.awt.Paint;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.RenderingHints;
|
||||
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.LookAndFeel;
|
||||
import javax.swing.border.Border;
|
||||
import javax.swing.plaf.ColorUIResource;
|
||||
import javax.swing.plaf.ComponentUI;
|
||||
|
||||
import org.jdesktop.swingx.JXTaskPane;
|
||||
import org.jdesktop.swingx.plaf.basic.BasicTaskPaneUI;
|
||||
|
||||
public class AdempiereTaskPaneUI extends BasicTaskPaneUI {
|
||||
public static ComponentUI createUI(JComponent c) {
|
||||
return new AdempiereTaskPaneUI();
|
||||
}
|
||||
|
||||
protected Border createPaneBorder() {
|
||||
return new AdempierePaneBorder();
|
||||
}
|
||||
|
||||
/**
|
||||
* Overriden to paint the background of the component but keeping the
|
||||
* rounded corners.
|
||||
*/
|
||||
public void update(Graphics g, JComponent c) {
|
||||
if (c.isOpaque()) {
|
||||
g.setColor(new ColorUIResource(251, 248, 241));
|
||||
g.fillRect(0, 0, c.getWidth(), c.getHeight());
|
||||
g.setColor(new ColorUIResource(251, 248, 241));
|
||||
g.fillRect(0, ROUND_HEIGHT, c.getWidth(), c.getHeight()
|
||||
- ROUND_HEIGHT);
|
||||
}
|
||||
paint(g, c);
|
||||
}
|
||||
|
||||
/**
|
||||
* The border of the taskpane group paints the "text", the "icon", the
|
||||
* "expanded" status and the "special" type.
|
||||
*
|
||||
*/
|
||||
class AdempierePaneBorder extends PaneBorder {
|
||||
|
||||
protected void paintTitleBackground(JXTaskPane group, Graphics g) {
|
||||
if (group.isSpecial()) {
|
||||
g.setColor(new ColorUIResource(251, 248, 241));
|
||||
g.fillRoundRect(0, 0, group.getWidth(), ROUND_HEIGHT * 2,
|
||||
ROUND_HEIGHT, ROUND_HEIGHT);
|
||||
g.fillRect(0, ROUND_HEIGHT, group.getWidth(), TITLE_HEIGHT
|
||||
- ROUND_HEIGHT);
|
||||
} else {
|
||||
Paint oldPaint = ((Graphics2D) g).getPaint();
|
||||
GradientPaint gradient = new GradientPaint(0f, 0f, // group.getWidth()
|
||||
// / 2,
|
||||
new ColorUIResource(241, 239, 222), 0f, // group.getWidth(),
|
||||
TITLE_HEIGHT, new ColorUIResource(251, 248, 241));
|
||||
|
||||
((Graphics2D) g).setRenderingHint(
|
||||
RenderingHints.KEY_COLOR_RENDERING,
|
||||
RenderingHints.VALUE_COLOR_RENDER_QUALITY);
|
||||
((Graphics2D) g).setRenderingHint(
|
||||
RenderingHints.KEY_INTERPOLATION,
|
||||
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
|
||||
((Graphics2D) g).setRenderingHint(RenderingHints.KEY_RENDERING,
|
||||
RenderingHints.VALUE_RENDER_QUALITY);
|
||||
((Graphics2D) g).setPaint(gradient);
|
||||
|
||||
g.fillRoundRect(0, 0, group.getWidth(), ROUND_HEIGHT * 2,
|
||||
ROUND_HEIGHT, ROUND_HEIGHT);
|
||||
g.fillRect(0, ROUND_HEIGHT, group.getWidth(), TITLE_HEIGHT
|
||||
- ROUND_HEIGHT);
|
||||
((Graphics2D) g).setPaint(oldPaint);
|
||||
}
|
||||
|
||||
Rectangle oldRect = g.getClipBounds();
|
||||
g.setClip(0, 0, group.getWidth(), TITLE_HEIGHT);
|
||||
g.setColor(borderColor);
|
||||
g.drawRoundRect(0, 0, group.getWidth() - 1, TITLE_HEIGHT
|
||||
+ ROUND_HEIGHT, ROUND_HEIGHT, ROUND_HEIGHT);
|
||||
g.drawLine(0, TITLE_HEIGHT - 1, group.getWidth(), TITLE_HEIGHT - 1);
|
||||
g.setClip(oldRect);
|
||||
}
|
||||
|
||||
protected void paintExpandedControls(JXTaskPane group, Graphics g,
|
||||
int x, int y, int width, int height) {
|
||||
((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||
RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
|
||||
paintOvalAroundControls(group, g, x, y, width, height);
|
||||
g.setColor(getPaintColor(group));
|
||||
paintChevronControls(group, g, x, y, width, height);
|
||||
|
||||
((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||
RenderingHints.VALUE_ANTIALIAS_OFF);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isMouseOverBorder() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
-- [ 1823612 ] Product Info Screen Improvements
|
||||
-- Author: fer_luck
|
||||
-- Contributor: Kartsten Thiemann
|
||||
-- Dictionary Additions
|
||||
-- Feature Request: http://sourceforge.net/tracker/index.php?func=detail&aid=1823612&group_id=176962&atid=879335
|
||||
--******************************************************--
|
||||
-- NOTE: Don't forget to run the three processes: --
|
||||
-- 1 - Add missing translations in the language screen --
|
||||
-- 2 - Synchronize terminology --
|
||||
-- 3 - Check sequences --
|
||||
--******************************************************--
|
||||
|
||||
-- new message
|
||||
INSERT INTO ad_message(ad_message_id, ad_client_id, ad_org_id, isactive, created, createdby, updated, updatedby, value, msgtext, msgtip, msgtype, entitytype)
|
||||
VALUES(53001, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), 100, to_date('2007-07-26','RRRR-MM-DD'), 100, 'WarehouseStock', 'Item Availability in other Warehouses', NULL, 'M', 'D');
|
||||
|
||||
--add view to ad_table
|
||||
INSERT INTO ad_table (ad_table_id, ad_client_id, ad_org_id, isactive, created, createdby, updated, updatedby, name, description, help, tablename, isview, accesslevel, entitytype, ad_window_id, ad_val_rule_id, loadseq, issecurityenabled, isdeleteable, ishighvolume, importtable, ischangelog, replicationtype, po_window_id, copycolumnsfromtable)
|
||||
VALUES(53011, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), 100, to_date('2007-07-26','RRRR-MM-DD'), 100, 'Product Stock at Warehouses', NULL, NULL, 'M_Product_Stock_V', 'Y', '1', 'D', NULL, NULL, NULL, 'N', 'Y', 'N', 'N', 'N', 'L', NULL, NULL);
|
||||
|
||||
--add columns to view in ad_column
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53003, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'Description', 'Optional short description of the record', 'A description is limited to 255 characters.', 0, 'D', 'Description', 53011, 10, NULL, NULL, 255, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 275, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53004, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'Product', 'Product, Service, Item', 'Identifies an item which is either purchased or sold in this organization.', 0, 'U', 'M_Product_ID', 53011, 30, NULL, NULL, 10, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', 0, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 454, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53005, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'Name', 'Alphanumeric identifier of the entity', 'The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.', 1, 'D', 'Name', 53011, 10, NULL, NULL, 60, NULL, 'N', 'N', 'Y', 'Y', NULL, 'Y', 1, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 469, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53006, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'Available Quantity', 'Available Quantity (On Hand - Reserved)', 'Quantity available to promise = On Hand minus Reserved Quantity', 1, 'D', 'QtyAvailable', 53011, 29, NULL, NULL, 22, NULL, 'N', 'N', 'N', 'N', NULL, 'N', 0, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 2238, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53007, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'On Hand Quantity', 'On Hand Quantity', 'The On Hand Quantity indicates the quantity of a product that is on hand in a warehouse.', 1, 'D', 'QtyOnHand', 53011, 29, NULL, NULL, 22, NULL, 'N', 'N', 'Y', 'N', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 530, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53008, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'Reserved Quantity', 'Reserved Quantity', 'The Reserved Quantity indicates the quantity of a product that is currently reserved.', 1, 'D', 'QtyReserved', 53011, 29, NULL, NULL, 22, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 532, NULL, 'N', 'N', NULL, NULL);
|
||||
|
||||
--add view to ad_table
|
||||
INSERT INTO ad_table (ad_table_id, ad_client_id, ad_org_id, isactive, created, createdby, updated, updatedby, name, description, help, tablename, isview, accesslevel, entitytype, ad_window_id, ad_val_rule_id, loadseq, issecurityenabled, isdeleteable, ishighvolume, importtable, ischangelog, replicationtype, po_window_id, copycolumnsfromtable)
|
||||
VALUES(53015, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), 100, to_date('2007-07-26','RRRR-MM-DD'), 100, 'Product Substitute with Stock Info', NULL, NULL, 'M_Product_SubstituteRelated_V', 'Y', '1', 'D', NULL, NULL, NULL, 'N', 'Y', 'N', 'N', 'N', 'L', NULL, NULL);
|
||||
|
||||
--add columns to view in ad_column
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53023, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'Description', 'Optional short description of the record', 'A description is limited to 255 characters.', 0, 'D', 'Description', 53015, 10, NULL, NULL, 255, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 275, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53024, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'Product', 'Product, Service, Item', 'Identifies an item which is either purchased or sold in this organization.', 0, 'U', 'M_Product_ID', 53015, 30, NULL, NULL, 10, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', 0, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 454, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53025, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'Standard Price', 'Standard Price', 'The Standard Price indicates the standard or normal price for a product on this price list', 1, 'D', 'PriceStd', 53015, 37, NULL, NULL, 60, NULL, 'N', 'N', 'Y', 'Y', NULL, 'Y', 1, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 957, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53026, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'Available Quantity', 'Available Quantity (On Hand - Reserved)', 'Quantity available to promise = On Hand minus Reserved Quantity', 1, 'D', 'QtyAvailable', 53015, 29, NULL, NULL, 22, NULL, 'N', 'N', 'N', 'N', NULL, 'N', 0, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 2238, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53028, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'Reserved Quantity', 'Reserved Quantity', 'The Reserved Quantity indicates the quantity of a product that is currently reserved.', 1, 'D', 'QtyReserved', 53015, 29, NULL, NULL, 22, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 532, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53027, 0, 0, 'Y', to_date('2007-07-26','RRRR-MM-DD'), to_date('2007-07-26','RRRR-MM-DD'), 0, 0, 'On Hand Quantity', 'On Hand Quantity', 'The On Hand Quantity indicates the quantity of a product that is on hand in a warehouse.', 1, 'D', 'QtyOnHand', 53015, 29, NULL, NULL, 22, NULL, 'N', 'N', 'Y', 'N', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 530, NULL, 'N', 'N', NULL, NULL);
|
||||
|
||||
--create views
|
||||
CREATE OR REPLACE VIEW m_product_stock_v
|
||||
AS
|
||||
SELECT
|
||||
mp.value, mp.help, (ms.qtyonhand - ms.qtyreserved) AS qtyavailable, ms.qtyonhand,
|
||||
ms.qtyreserved, mp.description, mw.name as warehouse, mw.m_warehouse_id, mw.ad_client_id,
|
||||
mw.ad_org_id, mp.documentnote
|
||||
FROM m_storage ms
|
||||
JOIN m_product mp ON ms.m_product_id = mp.m_product_id
|
||||
JOIN m_locator ml ON ms.m_locator_id = ml.m_locator_id
|
||||
JOIN m_warehouse mw ON ml.m_warehouse_id = mw.m_warehouse_id
|
||||
ORDER BY mw.name;
|
||||
|
||||
CREATE OR REPLACE VIEW M_Product_SubstituteRelated_V AS
|
||||
SELECT s.ad_client_id, s.ad_org_id, s.m_product_id, s.substitute_id, s.description, 'S' as rowtype, (ms.qtyonhand - ms.qtyreserved) AS qtyavailable, ms.qtyonhand, ms.qtyreserved, mpr.pricestd, mpr.m_pricelist_version_id, mw.m_warehouse_id
|
||||
FROM m_substitute s
|
||||
JOIN m_storage ms ON ms.m_product_id = s.substitute_id
|
||||
JOIN m_product mp ON ms.m_product_id = mp.m_product_id
|
||||
JOIN m_locator ml ON ms.m_locator_id = ml.m_locator_id
|
||||
JOIN m_warehouse mw ON ml.m_warehouse_id = mw.m_warehouse_id
|
||||
JOIN m_productprice mpr ON ms.m_product_id = mpr.m_product_id
|
||||
UNION
|
||||
SELECT r.ad_client_id, r.ad_org_id, r.m_product_id, r.relatedproduct_id, r.description, 'R' as rowtype, (ms.qtyonhand - ms.qtyreserved) AS qtyavailable, ms.qtyonhand, ms.qtyreserved, mpr.pricestd, mpr.m_pricelist_version_id, mw.m_warehouse_id
|
||||
FROM m_relatedproduct r
|
||||
JOIN m_storage ms ON ms.m_product_id = r.relatedproduct_id
|
||||
JOIN m_product mp ON ms.m_product_id = mp.m_product_id
|
||||
JOIN m_locator ml ON ms.m_locator_id = ml.m_locator_id
|
||||
JOIN m_warehouse mw ON ml.m_warehouse_id = mw.m_warehouse_id
|
||||
JOIN m_productprice mpr ON ms.m_product_id = mpr.m_product_id;
|
||||
|
||||
COMMIT;
|
|
@ -0,0 +1,83 @@
|
|||
-- [ 1823612 ] Product Info Screen Improvements
|
||||
-- Author: fer_luck
|
||||
-- Dictionary Additions
|
||||
-- Feature Request: http://sourceforge.net/tracker/index.php?func=detail&aid=1823612&group_id=176962&atid=879335
|
||||
--******************************************************--
|
||||
-- NOTE: Don't forget to run the three processes: --
|
||||
-- 1 - Add missing translations in the language screen --
|
||||
-- 2 - Synchronize terminology --
|
||||
-- 3 - Check sequences --
|
||||
--******************************************************--
|
||||
|
||||
-- new message
|
||||
BEGIN;
|
||||
INSERT INTO ad_message(ad_message_id, ad_client_id, ad_org_id, isactive, created, createdby, updated, updatedby, value, msgtext, msgtip, msgtype, entitytype)
|
||||
VALUES(53001, 0, 0, 'Y', '2007-07-18 00:00:00.0', 100, '2007-07-18 00:00:00.0', 100, 'WarehouseStock', 'Item Availability in other Warehouses', NULL, 'M', 'D');
|
||||
|
||||
--add view to ad_table
|
||||
INSERT INTO ad_table (ad_table_id, ad_client_id, ad_org_id, isactive, created, createdby, updated, updatedby, name, description, help, tablename, isview, accesslevel, entitytype, ad_window_id, ad_val_rule_id, loadseq, issecurityenabled, isdeleteable, ishighvolume, importtable, ischangelog, replicationtype, po_window_id, copycolumnsfromtable)
|
||||
VALUES(53011, 0, 0, 'Y', '2007-07-26 00:00:00.0', 100, '2007-07-26 00:00:00.0', 100, 'Product Stock at Warehouses', NULL, NULL, 'M_Product_Stock_V', 'Y', '1', 'D', NULL, NULL, NULL, 'N', 'Y', 'N', 'N', 'N', 'L', NULL, NULL);
|
||||
|
||||
--add columns to view in ad_column
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53003, 0, 0, 'Y', '2007-07-26 01:20:59.0', '2007-07-26 01:20:59.0', 0, 0, 'Description', 'Optional short description of the record', 'A description is limited to 255 characters.', 0, 'D', 'Description', 53011, 10, NULL, NULL, 255, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 275, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53004, 0, 0, 'Y', '2007-07-26 10:52:11.0', '2007-07-26 10:52:11.0', 0, 0, 'Product', 'Product, Service, Item', 'Identifies an item which is either purchased or sold in this organization.', 0, 'U', 'M_Product_ID', 53011, 30, NULL, NULL, 10, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', 0, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 454, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53005, 0, 0, 'Y', '2007-07-26 15:01:05.0', '2007-07-26 00:00:00.0', 0, 0, 'Name', 'Alphanumeric identifier of the entity', 'The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.', 1, 'D', 'Name', 53011, 10, NULL, NULL, 60, NULL, 'N', 'N', 'Y', 'Y', NULL, 'Y', 1, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 469, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53006, 0, 0, 'Y', '2007-07-26 11:29:06.0', '2007-07-26 00:00:00.0', 0, 0, 'Available Quantity', 'Available Quantity (On Hand - Reserved)', 'Quantity available to promise = On Hand minus Reserved Quantity', 1, 'D', 'QtyAvailable', 53011, 29, NULL, NULL, 22, NULL, 'N', 'N', 'N', 'N', NULL, 'N', 0, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 2238, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53007, 0, 0, 'Y', '2007-07-26 00:00:00.0', '2007-07-26 00:00:00.0', 0, 0, 'On Hand Quantity', 'On Hand Quantity', 'The On Hand Quantity indicates the quantity of a product that is on hand in a warehouse.', 1, 'D', 'QtyOnHand', 53011, 29, NULL, NULL, 22, NULL, 'N', 'N', 'Y', 'N', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 530, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53008, 0, 0, 'Y', '2007-07-26 18:21:48.0', '2007-07-26 00:00:00.0', 0, 0, 'Reserved Quantity', 'Reserved Quantity', 'The Reserved Quantity indicates the quantity of a product that is currently reserved.', 1, 'D', 'QtyReserved', 53011, 29, NULL, NULL, 22, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 532, NULL, 'N', 'N', NULL, NULL);
|
||||
|
||||
--add view to ad_table
|
||||
INSERT INTO ad_table (ad_table_id, ad_client_id, ad_org_id, isactive, created, createdby, updated, updatedby, name, description, help, tablename, isview, accesslevel, entitytype, ad_window_id, ad_val_rule_id, loadseq, issecurityenabled, isdeleteable, ishighvolume, importtable, ischangelog, replicationtype, po_window_id, copycolumnsfromtable)
|
||||
VALUES(53015, 0, 0, 'Y', '2007-07-26 00:00:00.0', 100, '2007-07-26 00:00:00.0', 100, 'Product Substitute with Stock Info', NULL, NULL, 'M_Product_SubstituteRelated_V', 'Y', '1', 'D', NULL, NULL, NULL, 'N', 'Y', 'N', 'N', 'N', 'L', NULL, NULL);
|
||||
|
||||
--add columns to view in ad_column
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53023, 0, 0, 'Y', '2007-07-26 01:20:59.0', '2007-07-26 01:20:59.0', 0, 0, 'Description', 'Optional short description of the record', 'A description is limited to 255 characters.', 0, 'D', 'Description', 53015, 10, NULL, NULL, 255, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 275, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53024, 0, 0, 'Y', '2007-07-26 10:52:11.0', '2007-07-26 10:52:11.0', 0, 0, 'Product', 'Product, Service, Item', 'Identifies an item which is either purchased or sold in this organization.', 0, 'U', 'M_Product_ID', 53015, 30, NULL, NULL, 10, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', 0, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 454, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53025, 0, 0, 'Y', '2007-07-26 15:01:05.0', '2007-07-26 00:00:00.0', 0, 0, 'Standard Price', 'Standard Price', 'The Standard Price indicates the standard or normal price for a product on this price list', 1, 'D', 'PriceStd', 53015, 37, NULL, NULL, 60, NULL, 'N', 'N', 'Y', 'Y', NULL, 'Y', 1, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 957, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53026, 0, 0, 'Y', '2007-07-26 11:29:06.0', '2007-07-26 00:00:00.0', 0, 0, 'Available Quantity', 'Available Quantity (On Hand - Reserved)', 'Quantity available to promise = On Hand minus Reserved Quantity', 1, 'D', 'QtyAvailable', 53015, 29, NULL, NULL, 22, NULL, 'N', 'N', 'N', 'N', NULL, 'N', 0, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 2238, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53028, 0, 0, 'Y', '2007-07-26 18:21:48.0', '2007-07-26 00:00:00.0', 0, 0, 'Reserved Quantity', 'Reserved Quantity', 'The Reserved Quantity indicates the quantity of a product that is currently reserved.', 1, 'D', 'QtyReserved', 53015, 29, NULL, NULL, 22, NULL, 'N', 'N', 'N', 'Y', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 532, NULL, 'N', 'N', NULL, NULL);
|
||||
INSERT INTO ad_column(ad_column_id, ad_client_id, ad_org_id, isactive, created, updated, createdby, updatedby, name, description, help, version, entitytype, columnname, ad_table_id, ad_reference_id, ad_reference_value_id, ad_val_rule_id, fieldlength, defaultvalue, iskey, isparent, ismandatory, isupdateable, readonlylogic, isidentifier, seqno, istranslated, isencrypted, callout, vformat, valuemin, valuemax, isselectioncolumn, ad_element_id, ad_process_id, issyncdatabase, isalwaysupdateable, columnsql, mandatorylogic)
|
||||
VALUES(53027, 0, 0, 'Y', '2007-07-26 00:00:00.0', '2007-07-26 00:00:00.0', 0, 0, 'On Hand Quantity', 'On Hand Quantity', 'The On Hand Quantity indicates the quantity of a product that is on hand in a warehouse.', 1, 'D', 'QtyOnHand', 53015, 29, NULL, NULL, 22, NULL, 'N', 'N', 'Y', 'N', NULL, 'N', NULL, 'N', 'N', NULL, NULL, NULL, NULL, 'N', 530, NULL, 'N', 'N', NULL, NULL);
|
||||
|
||||
--create views
|
||||
CREATE OR REPLACE VIEW m_product_stock_v
|
||||
AS
|
||||
SELECT
|
||||
mp.value, mp.help, (ms.qtyonhand - ms.qtyreserved) AS qtyavailable, ms.qtyonhand,
|
||||
ms.qtyreserved, mp.description, mw.name as warehouse, mw.m_warehouse_id, mw.ad_client_id,
|
||||
mw.ad_org_id, mp.documentnote
|
||||
FROM m_storage ms
|
||||
JOIN m_product mp ON ms.m_product_id = mp.m_product_id
|
||||
JOIN m_locator ml ON ms.m_locator_id = ml.m_locator_id
|
||||
JOIN m_warehouse mw ON ml.m_warehouse_id = mw.m_warehouse_id
|
||||
ORDER BY mw.name;
|
||||
|
||||
CREATE OR REPLACE VIEW M_Product_SubstituteRelated_V AS
|
||||
SELECT s.ad_client_id, s.ad_org_id, s.m_product_id, s.substitute_id, s.description, 'S' as rowtype, (ms.qtyonhand - ms.qtyreserved) AS qtyavailable, ms.qtyonhand, ms.qtyreserved, mpr.pricestd, mpr.m_pricelist_version_id, mw.m_warehouse_id
|
||||
FROM m_substitute s
|
||||
JOIN m_storage ms ON ms.m_product_id = s.substitute_id
|
||||
JOIN m_product mp ON ms.m_product_id = mp.m_product_id
|
||||
JOIN m_locator ml ON ms.m_locator_id = ml.m_locator_id
|
||||
JOIN m_warehouse mw ON ml.m_warehouse_id = mw.m_warehouse_id
|
||||
JOIN m_productprice mpr ON ms.m_product_id = mpr.m_product_id
|
||||
UNION
|
||||
SELECT r.ad_client_id, r.ad_org_id, r.m_product_id, r.relatedproduct_id, r.description, 'R' as rowtype, (ms.qtyonhand - ms.qtyreserved) AS qtyavailable, ms.qtyonhand, ms.qtyreserved, mpr.pricestd, mpr.m_pricelist_version_id, mw.m_warehouse_id
|
||||
FROM m_relatedproduct r
|
||||
JOIN m_storage ms ON ms.m_product_id = r.relatedproduct_id
|
||||
JOIN m_product mp ON ms.m_product_id = mp.m_product_id
|
||||
JOIN m_locator ml ON ms.m_locator_id = ml.m_locator_id
|
||||
JOIN m_warehouse mw ON ml.m_warehouse_id = mw.m_warehouse_id
|
||||
JOIN m_productprice mpr ON ms.m_product_id = mpr.m_product_id;
|
||||
|
||||
COMMIT;
|
Loading…
Reference in New Issue