<!-- /********************************************************************************* * The contents of this file are subject to the SugarCRM Public License Version 1.1.2 * ("License"); You may not use this file except in compliance with the * License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * The Original Code is: SugarCRM Open Source * The Initial Developer of the Original Code is SugarCRM, Inc. * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.; * All Rights Reserved. * Contributor(s): ______________________________________. ********************************************************************************/ /********************************************************************************* * {APP.LBL_CURRENCY_SYM}Header: /cvsroot/sugarcrm/sugarcrm/modules/Accounts/EditView.html,v 1.16 2004/07/16 00:42:57 sugarclint Exp {APP.LBL_CURRENCY_SYM} ********************************************************************************/ --> <!-- BEGIN: main --> <form name="EditView" method="get" action="index.php"> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td vAlign="middle" align="left"><IMG src="{IMAGE_PATH}purchase_order.gif" border="0"></td> <td class="moduleTitle" vAlign="middle" align="left" noWrap width="100%" height="20">{MOD.LBL_PO} {NAME}</td> <td nowrap class='bodySmall' align='right'>[ <A href='http://www.vtiger.com/products/crm/document.html' target='_blank'>{APP.LNK_HELP}</A> ]</td> </tr> <tr><td colspan="3" class="hline"><img height='1' src='include/images/blank.gif'></td></tr></table> <br> <table width="100%" cellpadding="0" cellspacing="0" border="0"><tr> <td> <div align="center"> <link rel="stylesheet" type="text/css" media="all" href="jscalendar/calendar-win2k-cold-1.css"> <script type="text/javascript" src="jscalendar/calendar.js"></script> <script type="text/javascript" src="jscalendar/lang/calendar-{CALENDAR_LANG}.js"></script> <script type="text/javascript" src="jscalendar/calendar-setup.js"></script> <input type="hidden" name="module" value="Orders"> <input type="hidden" name="record" value="{ID}"> <input type="hidden" name="mode" value="{MODE}"> <input type="hidden" name="action"> <input type="hidden" name="return_module" value="{RETURN_MODULE}"> <input type="hidden" name="return_id" value="{RETURN_ID}"> <input type="hidden" name="return_action" value="{RETURN_ACTION}"> <input type="hidden" name="totalProductCount"> <input title="{APP.LBL_SAVE_BUTTON_TITLE}" accessKey="{APP.LBL_SAVE_BUTTON_KEY}" class="button" onclick="this.form.action.value='Save';settotalnoofrows();return validate() " type="submit" name="button" value=" {APP.LBL_SAVE_BUTTON_LABEL} " > <input title="{APP.LBL_CANCEL_BUTTON_TITLE}" accessKey="{APP.LBL_CANCEL_BUTTON_KEY}" class="button" onclick="window.history.back()" type="button" name="button" value=" {APP.LBL_CANCEL_BUTTON_LABEL} "> </div> </td> </tr> </table> <div align="right"><font class="required">{APP.LBL_REQUIRED_SYMBOL}</font>{APP.NTC_REQUIRED}</div> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="formOuterBorder"> <tr> <td> {BLOCK1_HEADER} <table width="100%" border="0" cellspacing="1" cellpadding="0"> {BLOCK1} </table> </td></tr></table> <BR> {CUSTOMFIELD} <table width="100%" border="0" cellspacing="0" cellpadding="0" class="formOuterBorder"> <tr><td> {BLOCK2_HEADER} <table width="100%" border="0" cellspacing="1" cellpadding="0"> {BLOCK2} </table> </td></tr></table> <BR> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="formOuterBorder"> <tr><td class="formBorder"><div style="padding:2 0 2 0"><strong>{APP.LBL_PRODUCT_DETAILS}</strong></div> <div id="productList"> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="formBorder"> <tr class="moduleListTitle" height="20" id="tablehead"> <td width="20%" style="padding:3px;"><font color="red">*</font>{APP.LBL_PRODUCT}</td> <td WIDTH='1' class='blackLine'><IMG SRC='{IMAGE_PATH}blank.gif'></td> <td width="12%" style="padding:3px;"><font color="red">*</font>{APP.LBL_QTY}</td> <td WIDTH='1' class='blackLine'><IMG SRC='{IMAGE_PATH}blank.gif'></td> <td width="15%" style="padding:3px;">{APP.LBL_UNIT_PRICE}</td> <td WIDTH='1' class='blackLine'><IMG SRC='{IMAGE_PATH}blank.gif'></td> <td width="16%" style="padding:3px;"><font color="red">*</font>{APP.LBL_LIST_PRICE}</td> <td WIDTH='1' class='blackLine'><IMG SRC='{IMAGE_PATH}blank.gif'></td> <td width="20%" style="padding:3px;"><div align="center">{APP.LBL_TOTAL}</div></td> <td WIDTH='1' class='blackLine'><IMG SRC='{IMAGE_PATH}blank.gif'></td> <td width="15" style="padding:3px;"></td> </tr> <tr id="tableheadline"> <td colspan="12" height="1" class="blackLine"><IMG SRC="{IMAGE_PATH}blank.gif"></td> </tr> {ROW1} {ASSOCIATEDPRODUCTS} <tr id="tableheadline"> <td colspan="11" height="1" class="blackLine"><IMG SRC="{IMAGE_PATH}blank.gif"></td> </tr> </table> </div> <table width="100%" border="0" cellspacing="2" cellpadding="2" bgcolor="#FFFFFF"> <tr> <td width="150"><input type="button" class="button" value="{APP.LBL_ADD_PRODUCT}" onClick="addRow()"></td> <td><div align="right"><b>{APP.LBL_SUB_TOTAL}:</b></div></td> <td width="150" style="padding-right:35"><div id="subTotal" align="right" style="border:1px solid #000;padding:2px"> {SUBTOTAL}</div></td> </tr> <tr> <td> </td> <td><div align="right"><b>{APP.LBL_TAX}:</b></div></td> <td width="150" style="padding-right:35"><div align="right"><input type="text" id="txtTax" name="txtTax" value="{TAXVALUE}" onblur="calcGrandTotal()" style="width:100%"></div></td> </tr> <tr> <td> </td> <td><div align="right"><b>{APP.LBL_ADJUSTMENT}:</b></div></td> <td width="150" style="padding-right:35"><div align="right"><input type="text" id="txtAdjustment" name="txtAdjustment" value="{ADJUSTMENTVALUE}" onblur="calcGrandTotal()" style="width:100%"></div></td> </tr> <tr> <td> </td> <td><div align="right"><b>{APP.LBL_GRAND_TOTAL}:</b></div></td> <td width="150" style="padding-right:35"><div id="grandTotal" align="right" style="border:1px solid #000;padding:2px"> {GRANDTOTAL}</div></td> </tr> </table> <input type="hidden" name="hdnSubTotal" id="hdnSubTotal" value="{SUBTOTAL}"> <input type="hidden" name="hdnGrandTotal" id="hdnGrandTotal" value="{GRANDTOTAL}"> </td></tr></table><br> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="formOuterBorder"> <tr> <td> {BLOCK6_HEADER} <table width="100%" border="0" cellspacing="1" cellpadding="0"> {BLOCK6} </table></td> </tr> </table> <br> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="formOuterBorder"> <tr> <td> {BLOCK3_HEADER} <table width="100%" border="0" cellspacing="1" cellpadding="0"> {BLOCK3} </table></td> </tr> </table> <br> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><div align="center"> <input title="{APP.LBL_SAVE_BUTTON_TITLE}" accessKey="{APP.LBL_SAVE_BUTTON_KEY}" class="button" onclick="this.form.action.value='Save';settotalnoofrows();return validate()" type="submit" name="button" value=" {APP.LBL_SAVE_BUTTON_LABEL} " > <input title="{APP.LBL_CANCEL_BUTTON_TITLE}" accessKey="{APP.LBL_CANCEL_BUTTON_KEY}" class="button" onclick="window.history.back()" type="button" name="button" value=" {APP.LBL_CANCEL_BUTTON_LABEL} "> </div></td> </tr> </table> </form> <script type="text/javascript" language="JavaScript"> var prodList=getObj("productList") var rowCnt={ROWCOUNT}; //var rowCnt=1; var listTableStart="<table width='100%' border='0' cellspacing='0' cellpadding='0' class='formBorder'>" function settotalnoofrows() { document.EditView.totalProductCount.value = rowCnt; } function productPickList(currObj) { var trObj=currObj.parentNode.parentNode var rowId=parseInt(trObj.id.substr(trObj.id.indexOf("w")+1,trObj.id.length)) window.open("index.php?module=Products&action=Popup&html=Popup_picker&form=HelpDeskEditView&recordid={RETURN_ID}&return_module={RETURN_MODULE}&popuptype=inventory_prod_po&curr_row="+rowId,"productWin","width=600,height=400,resizable=1,scrollbars=1,top=150,left=200") //window.open("index.php?module=Products&action=Popup&html=Popup_picker&form=HelpDeskEditView&popuptype=inventory_prod&curr_row="+rowId,"productWin","width=600,height=400,resizable=1,scrollbars=1,top=150,left=200"); } function priceBookPickList(currObj) { var trObj=currObj.parentNode.parentNode var rowId=parseInt(trObj.id.substr(trObj.id.indexOf("w")+1,trObj.id.length)) window.open("index.php?module=Products&action=PriceBookPopup&html=Popup_picker&form=EditView&popuptype=inventory_pb&fldname=txtListPrice"+rowId+"&productid="+getObj("hdnProductId"+rowId).value,"priceBookWin","width=600,height=400,resizable=1,scrollbars=1,top=150,left=200"); } function getProdListBody() { if (browser_ie) { var prodListBody=getObj("productList").children[0].children[0] } else if (browser_nn4 || browser_nn6) { if (getObj("productList").childNodes.item(0).tagName=="TABLE") { var prodListBody=getObj("productList").childNodes.item(0).childNodes.item(0) } else { var prodListBody=getObj("productList").childNodes.item(1).childNodes.item(1) } } return prodListBody; } function addRow() { //adding new row rowCnt++; if (rowCnt%2==0) var newRow="<tr id=row"+rowCnt+" class='evenListRow'>" else var newRow="<tr id=row"+rowCnt+" class='oddListRow'>" newRow+="<td style='padding:3px;'><input id='txtProduct"+rowCnt+"' name='txtProduct"+rowCnt+"' type='text' readonly> <img src='{IMAGE_PATH}search.gif' onclick='productPickList(this)' align='absmiddle' style='cursor:hand;cursor:pointer'></td>" newRow+="<td WIDTH='1' class='blackLine'><IMG SRC='{IMAGE_PATH}blank.gif'></td>" newRow+="<td style='padding:3px;'><input type=text id='txtQty"+rowCnt+"' name='txtQty"+rowCnt+"' size='7' value='1' onBlur='calcTotal(this)'></td>" newRow+="<td WIDTH='1' class='blackLine'><IMG SRC='{IMAGE_PATH}blank.gif'></td>" newRow+="<td style='padding:3px;'><div id='unitPrice"+rowCnt+"'></div></td>" newRow+="<td WIDTH='1' class='blackLine'><IMG SRC='{IMAGE_PATH}blank.gif'></td>" newRow+="<td style='padding:3px;'><input type=text id='txtListPrice"+rowCnt+"' name='txtListPrice"+rowCnt+"' size='12' value='0.00' onBlur='calcTotal(this)'> <img src='{IMAGE_PATH}pricebook.gif' onclick='priceBookPickList(this)' align='absmiddle' style='cursor:hand;cursor:pointer'></td>" newRow+="<td WIDTH='1' class='blackLine'><IMG SRC='{IMAGE_PATH}blank.gif'></td>" newRow+="<td style='padding:3px;'><div id='total"+rowCnt+"' align='right'></div></td>" newRow+="<td WIDTH='1' class='blackLine'><IMG SRC='{IMAGE_PATH}blank.gif'></td>" newRow+="<td style='padding:3px;' align='center' width='50'><a id='delRow"+rowCnt+"' href='javascript:;' onclick='delRow(this.id)'>Del</a>" newRow+="<input type=hidden id='hdnProductId"+rowCnt+"' name='hdnProductId"+rowCnt+"'>" newRow+="<input type=hidden id='hdnRowStatus"+rowCnt+"' name='hdnRowStatus"+rowCnt+"'>" newRow+="<input type=hidden id='hdnTotal"+rowCnt+"' name='hdnTotal"+rowCnt+"'></td></tr>" var prodListBody=getProdListBody() if (browser_nn4 || browser_nn6) { var product=new Array(rowCnt-1) var qty=new Array(rowCnt-1) var listPrice=new Array(rowCnt-1) var productId=new Array(rowCnt-1) var total=new Array(rowCnt-1) var rowStatus=new Array(rowCnt-1) //alert(rowCnt) for (var i=1,k=0;i<=rowCnt-1;i++,k++) { product[k]=getObj("txtProduct"+i).value qty[k]=getObj("txtQty"+i).value listPrice[k]=getObj("txtListPrice"+i).value total[k]=getObj("hdnTotal"+i).value productId[k]=getObj("hdnProductId"+i).value rowStatus[k]=getObj("hdnRowStatus"+i).value } } prodList.innerHTML=listTableStart+prodListBody.innerHTML+newRow+"</table>" if (browser_nn4 || browser_nn6) { for (var i=1,k=0;i<=rowCnt-1;i++,k++) { getObj("txtProduct"+i).value=product[k] getObj("txtQty"+i).value=qty[k] getObj("txtListPrice"+i).value=listPrice[k] getObj("hdnTotal"+i).value=total[k] getObj("hdnProductId"+i).value=productId[k] getObj("hdnRowStatus"+i).value=rowStatus[k] } } } function delRow(rowId) { var rowId=parseInt(rowId.substr(rowId.indexOf("w")+1,rowId.length)) //removing the corresponding row var prodListBody=getProdListBody() prodListBody.removeChild(getObj("row"+rowId)) //assigning new innerHTML after deleting a row var newInnerHTML="<tr class='moduleListTitle' height='20' id='tablehead'>"+getObj("tablehead").innerHTML+"</tr>" newInnerHTML+="<tr id='tableheadline'>"+getObj("tableheadline").innerHTML+"</tr>"; var rowArray=new Array(rowCnt-1); if (browser_nn4 || browser_nn6) { var product=new Array(rowCnt-1) var qty=new Array(rowCnt-1) var listPrice=new Array(rowCnt-1) var productId=new Array(rowCnt-1) var total=new Array(rowCnt-1) var rowStatus=new Array(rowCnt-1) } for (var i=1,k=0;i<=rowId-1;i++,k++) { if (i%2==0) var rowClass="evenListRow" else var rowClass="oddListRow" rowArray[k]="<tr id='row"+i+"' class='"+rowClass+"'>"+getObj("row"+i).innerHTML+"</tr>" newInnerHTML+=rowArray[k] if (browser_nn4 || browser_nn6) { product[k]=getObj("txtProduct"+i).value qty[k]=getObj("txtQty"+i).value listPrice[k]=getObj("txtListPrice"+i).value total[k]=getObj("hdnTotal"+i).value productId[k]=getObj("hdnProductId"+i).value rowStatus[k]=getObj("hdnRowStatus"+i).value } } for (var i=rowId+1;i<=rowCnt;i++,k++) { rowArray[k]=getObj("row"+i).innerHTML var temp=rowArray[k] temp=temp.replace("row"+i,"row"+(i-1)) temp=temp.replace("txtProduct"+i,"txtProduct"+(i-1)) temp=temp.replace("txtProduct"+i,"txtProduct"+(i-1)) temp=temp.replace("qtyInStock"+i,"qtyInStock"+(i-1)) temp=temp.replace("txtQty"+i,"txtQty"+(i-1)) temp=temp.replace("txtQty"+i,"txtQty"+(i-1)) temp=temp.replace("unitPrice"+i,"unitPrice"+(i-1)) temp=temp.replace("txtListPrice"+i,"txtListPrice"+(i-1)) temp=temp.replace("txtListPrice"+i,"txtListPrice"+(i-1)) temp=temp.replace("total"+i,"total"+(i-1)) temp=temp.replace("delRow"+i,"delRow"+(i-1)) temp=temp.replace("hdnProductId"+i,"hdnProductId"+(i-1)) temp=temp.replace("hdnProductId"+i,"hdnProductId"+(i-1)) temp=temp.replace("hdnRowStatus"+i,"hdnRowStatus"+(i-1)) temp=temp.replace("hdnRowStatus"+i,"hdnRowStatus"+(i-1)) temp=temp.replace("hdnTotal"+i,"hdnTotal"+(i-1)) temp=temp.replace("hdnTotal"+i,"hdnTotal"+(i-1)) if ((i-1)%2==0) var rowClass="evenListRow" else var rowClass="oddListRow" rowArray[k]="<tr id='row"+(i-1)+"' class='"+rowClass+"'>"+temp+"</tr>" newInnerHTML+=rowArray[k] if (browser_nn4 || browser_nn6) { product[k]=getObj("txtProduct"+i).value qty[k]=getObj("txtQty"+i).value listPrice[k]=getObj("txtListPrice"+i).value total[k]=getObj("hdnTotal"+i).value productId[k]=getObj("hdnProductId"+i).value rowStatus[k]=getObj("hdnRowStatus"+i).value } } var prodListBody=getProdListBody() prodList.innerHTML=listTableStart+newInnerHTML+"</table>" rowCnt-- for (var i=1,k=0;i<=rowCnt;i++,k++) { if (browser_nn4 || browser_nn6) { getObj("txtProduct"+i).value=product[k] getObj("txtQty"+i).value=qty[k] getObj("txtListPrice"+i).value=listPrice[k] getObj("hdnTotal"+i).value=total[k] getObj("hdnProductId"+i).value=productId[k] getObj("hdnRowStatus"+i).value=rowStatus[k] } } calcGrandTotal() } function calcTotal(currObj) { var trObj=currObj.parentNode.parentNode var rowId=parseInt(trObj.id.substr(trObj.id.indexOf("w")+1,trObj.id.length)) var total=eval(getObj("txtQty"+rowId).value*getObj("txtListPrice"+rowId).value) getObj("total"+rowId).innerHTML=getObj("hdnTotal"+rowId).value=roundValue(total.toString()) calcGrandTotal() } function calcGrandTotal() { var subTotal=0,grandTotal=0; for (var i=1;i<=rowCnt;i++) { if (getObj("hdnTotal"+i).value=="") getObj("hdnTotal"+i).value=0 if (!isNaN(getObj("hdnTotal"+i).value)) subTotal+=parseFloat(getObj("hdnTotal"+i).value) } grandTotal=subTotal+parseFloat(getObj("txtTax").value)+parseFloat(getObj("txtAdjustment").value) getObj("subTotal").innerHTML=getObj("hdnSubTotal").value=roundValue(subTotal.toString()) getObj("grandTotal").innerHTML=getObj("hdnGrandTotal").value=roundValue(grandTotal.toString()) } function roundValue(val) { if (val.indexOf(".")<0) { val+=".00" } else { var dec=val.substring(val.indexOf(".")+1,val.length) if (dec.length>2) val=val.substring(0,val.indexOf("."))+"."+dec.substring(0,2) else if (dec.length==1) val=val+"0" } return val; } </script> <script type="text/javascript" language="Javascript"> function copyAddressRight(form) { form.ship_street.value = form.bill_street.value; form.ship_city.value = form.bill_city.value; form.ship_state.value = form.bill_state.value; form.ship_code.value = form.bill_code.value; form.ship_country.value = form.bill_country.value; return true; } function copyAddressLeft(form) { form.bill_street.value = form.ship_street.value; form.bill_city.value = form.ship_city.value; form.bill_state.value = form.ship_state.value; form.bill_code.value = form.ship_code.value; form.bill_country.value = form.ship_country.value; return true; } </script> <script> var fieldname = new Array({VALIDATION_DATA_FIELDNAME}) var fieldlabel = new Array({VALIDATION_DATA_FIELDLABEL}) var fielddatatype = new Array({VALIDATION_DATA_FIELDDATATYPE}) </script> <script> function validate() { if(!formValidate()) return false if(rowCnt == 0) { alert('No product is selected. Select atleast one Product'); return false; } for (var i=1;i<=rowCnt;i++) { if (!emptyCheck("txtProduct"+i,"Product","text")) return false if (!emptyCheck("txtQty"+i,"Qty","text")) return false if (!numValidate("txtQty"+i,"Qty","any")) return false if (!numConstComp("txtQty"+i,"Qty","GE","1")) return false if (!emptyCheck("txtListPrice"+i,"List Price","text")) return false if (!numValidate("txtListPrice"+i,"List Price","any")) return false } if (getObj("txtTax").value.replace(/^\s+/g, '').replace(/\s+$/g, '').length>0) if (!numValidate("txtTax","Tax","any")) return false if (getObj("txtAdjustment").value.replace(/^\s+/g, '').replace(/\s+$/g, '').length>0) if (!numValidate("txtAdjustment","Adjustment","any")) return false return true } </script> {JAVASCRIPT} <!-- END: main -->