# HG changeset patch
# User Silambarasan Sekar <silambarasan@qualiantech.com>
# Date 1478517646 -19800
#      Mon Nov 07 16:50:46 2016 +0530
# Node ID 3ee753a82a04023000c7e44cad07e9b287595780
# Parent  2cb39d0f889052fdd99b3d1c39db32819604ed99
Added Payment Methods not refundable Logic

diff -r 2cb39d0f8890 -r 3ee753a82a04 src-db/database/model/tables/OBPOS_APP_PAYMENT_TYPE.xml
--- a/src-db/database/model/tables/OBPOS_APP_PAYMENT_TYPE.xml	Wed Nov 23 18:54:45 2016 +0100
+++ b/src-db/database/model/tables/OBPOS_APP_PAYMENT_TYPE.xml	Mon Nov 07 16:50:46 2016 +0530
@@ -185,6 +185,10 @@
         <default/>
         <onCreateDefault/>
       </column>
+      <column name="REFUNDPAYMENT" primaryKey="false" required="true" type="CHAR" size="1" autoIncrement="false">
+        <default><![CDATA[Y]]></default>
+        <onCreateDefault/>
+      </column>
       <foreign-key foreignTable="AD_CLIENT" name="OBPOS_APPPAYTYPE_AD_CLIENT">
         <reference local="AD_CLIENT_ID" foreign="AD_CLIENT_ID"/>
       </foreign-key>
diff -r 2cb39d0f8890 -r 3ee753a82a04 src-db/database/sourcedata/AD_COLUMN.xml
--- a/src-db/database/sourcedata/AD_COLUMN.xml	Wed Nov 23 18:54:45 2016 +0100
+++ b/src-db/database/sourcedata/AD_COLUMN.xml	Mon Nov 07 16:50:46 2016 +0530
@@ -1822,7 +1822,7 @@
 <!--168C4F65A5E2454FBC49AD025E0AECB9-->  <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
 <!--168C4F65A5E2454FBC49AD025E0AECB9-->  <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
 <!--168C4F65A5E2454FBC49AD025E0AECB9-->  <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
-<!--168C4F65A5E2454FBC49AD025E0AECB9-->  <POSITION><![CDATA[39]]></POSITION>
+<!--168C4F65A5E2454FBC49AD025E0AECB9-->  <POSITION><![CDATA[40]]></POSITION>
 <!--168C4F65A5E2454FBC49AD025E0AECB9-->  <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
 <!--168C4F65A5E2454FBC49AD025E0AECB9-->  <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
 <!--168C4F65A5E2454FBC49AD025E0AECB9-->  <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
@@ -3037,7 +3037,7 @@
 <!--24CA9F6F48DA4453911DDCA77DA7DE2B-->  <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
 <!--24CA9F6F48DA4453911DDCA77DA7DE2B-->  <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
 <!--24CA9F6F48DA4453911DDCA77DA7DE2B-->  <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
-<!--24CA9F6F48DA4453911DDCA77DA7DE2B-->  <POSITION><![CDATA[38]]></POSITION>
+<!--24CA9F6F48DA4453911DDCA77DA7DE2B-->  <POSITION><![CDATA[39]]></POSITION>
 <!--24CA9F6F48DA4453911DDCA77DA7DE2B-->  <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
 <!--24CA9F6F48DA4453911DDCA77DA7DE2B-->  <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
 <!--24CA9F6F48DA4453911DDCA77DA7DE2B-->  <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
@@ -5379,7 +5379,7 @@
 <!--53B711DC0E4243AA8482EB131AC367DE-->  <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
 <!--53B711DC0E4243AA8482EB131AC367DE-->  <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
 <!--53B711DC0E4243AA8482EB131AC367DE-->  <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
-<!--53B711DC0E4243AA8482EB131AC367DE-->  <POSITION><![CDATA[40]]></POSITION>
+<!--53B711DC0E4243AA8482EB131AC367DE-->  <POSITION><![CDATA[41]]></POSITION>
 <!--53B711DC0E4243AA8482EB131AC367DE-->  <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
 <!--53B711DC0E4243AA8482EB131AC367DE-->  <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
 <!--53B711DC0E4243AA8482EB131AC367DE-->  <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
@@ -6575,7 +6575,7 @@
 <!--6E57665F77324B6097F953BD4ED9F392-->  <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
 <!--6E57665F77324B6097F953BD4ED9F392-->  <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
 <!--6E57665F77324B6097F953BD4ED9F392-->  <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
-<!--6E57665F77324B6097F953BD4ED9F392-->  <POSITION><![CDATA[41]]></POSITION>
+<!--6E57665F77324B6097F953BD4ED9F392-->  <POSITION><![CDATA[42]]></POSITION>
 <!--6E57665F77324B6097F953BD4ED9F392-->  <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
 <!--6E57665F77324B6097F953BD4ED9F392-->  <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
 <!--6E57665F77324B6097F953BD4ED9F392-->  <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
@@ -6776,6 +6776,45 @@
 <!--7049558C53FA467CA95B85002146375F-->  <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
 <!--7049558C53FA467CA95B85002146375F--></AD_COLUMN>
 
+<!--7057B1DDEE9B473B97330448635914D1--><AD_COLUMN>
+<!--7057B1DDEE9B473B97330448635914D1-->  <AD_COLUMN_ID><![CDATA[7057B1DDEE9B473B97330448635914D1]]></AD_COLUMN_ID>
+<!--7057B1DDEE9B473B97330448635914D1-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--7057B1DDEE9B473B97330448635914D1-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--7057B1DDEE9B473B97330448635914D1-->  <NAME><![CDATA[Refund Payment]]></NAME>
+<!--7057B1DDEE9B473B97330448635914D1-->  <DESCRIPTION><![CDATA[Check this field to enable this payment method in Refund Payment]]></DESCRIPTION>
+<!--7057B1DDEE9B473B97330448635914D1-->  <HELP><![CDATA[Check this field to enable this payment method in Refund Payment]]></HELP>
+<!--7057B1DDEE9B473B97330448635914D1-->  <COLUMNNAME><![CDATA[RefundPayment]]></COLUMNNAME>
+<!--7057B1DDEE9B473B97330448635914D1-->  <AD_TABLE_ID><![CDATA[B096FDF43917472D8FDE9693E9CCFFD4]]></AD_TABLE_ID>
+<!--7057B1DDEE9B473B97330448635914D1-->  <AD_REFERENCE_ID><![CDATA[20]]></AD_REFERENCE_ID>
+<!--7057B1DDEE9B473B97330448635914D1-->  <FIELDLENGTH><![CDATA[1]]></FIELDLENGTH>
+<!--7057B1DDEE9B473B97330448635914D1-->  <DEFAULTVALUE><![CDATA[Y]]></DEFAULTVALUE>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISKEY><![CDATA[N]]></ISKEY>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISUPDATEABLE><![CDATA[Y]]></ISUPDATEABLE>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--7057B1DDEE9B473B97330448635914D1-->  <SEQNO><![CDATA[475]]></SEQNO>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--7057B1DDEE9B473B97330448635914D1-->  <AD_ELEMENT_ID><![CDATA[1CC480F599094439954539F7B493A965]]></AD_ELEMENT_ID>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--7057B1DDEE9B473B97330448635914D1-->  <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--7057B1DDEE9B473B97330448635914D1-->  <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
+<!--7057B1DDEE9B473B97330448635914D1-->  <POSITION><![CDATA[47]]></POSITION>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--7057B1DDEE9B473B97330448635914D1-->  <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--7057B1DDEE9B473B97330448635914D1-->  <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--7057B1DDEE9B473B97330448635914D1-->  <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--7057B1DDEE9B473B97330448635914D1--></AD_COLUMN>
+
 <!--71CD455F6B794AA8BA469AC19370E261--><AD_COLUMN>
 <!--71CD455F6B794AA8BA469AC19370E261-->  <AD_COLUMN_ID><![CDATA[71CD455F6B794AA8BA469AC19370E261]]></AD_COLUMN_ID>
 <!--71CD455F6B794AA8BA469AC19370E261-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -7802,7 +7841,7 @@
 <!--8B246638EEFA4ED0BAC6AD5A0BA0020F-->  <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
 <!--8B246638EEFA4ED0BAC6AD5A0BA0020F-->  <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
 <!--8B246638EEFA4ED0BAC6AD5A0BA0020F-->  <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
-<!--8B246638EEFA4ED0BAC6AD5A0BA0020F-->  <POSITION><![CDATA[42]]></POSITION>
+<!--8B246638EEFA4ED0BAC6AD5A0BA0020F-->  <POSITION><![CDATA[43]]></POSITION>
 <!--8B246638EEFA4ED0BAC6AD5A0BA0020F-->  <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
 <!--8B246638EEFA4ED0BAC6AD5A0BA0020F-->  <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
 <!--8B246638EEFA4ED0BAC6AD5A0BA0020F-->  <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
diff -r 2cb39d0f8890 -r 3ee753a82a04 src-db/database/sourcedata/AD_ELEMENT.xml
--- a/src-db/database/sourcedata/AD_ELEMENT.xml	Wed Nov 23 18:54:45 2016 +0100
+++ b/src-db/database/sourcedata/AD_ELEMENT.xml	Mon Nov 07 16:50:46 2016 +0530
@@ -144,6 +144,20 @@
 <!--19CD426DAA9B4E29A51DBEBCF8BC73DC-->  <ISGLOSSARY><![CDATA[N]]></ISGLOSSARY>
 <!--19CD426DAA9B4E29A51DBEBCF8BC73DC--></AD_ELEMENT>
 
+<!--1CC480F599094439954539F7B493A965--><AD_ELEMENT>
+<!--1CC480F599094439954539F7B493A965-->  <AD_ELEMENT_ID><![CDATA[1CC480F599094439954539F7B493A965]]></AD_ELEMENT_ID>
+<!--1CC480F599094439954539F7B493A965-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--1CC480F599094439954539F7B493A965-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--1CC480F599094439954539F7B493A965-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--1CC480F599094439954539F7B493A965-->  <COLUMNNAME><![CDATA[RefundPayment]]></COLUMNNAME>
+<!--1CC480F599094439954539F7B493A965-->  <NAME><![CDATA[Refund Payment]]></NAME>
+<!--1CC480F599094439954539F7B493A965-->  <PRINTNAME><![CDATA[Refund Payment]]></PRINTNAME>
+<!--1CC480F599094439954539F7B493A965-->  <DESCRIPTION><![CDATA[Check this field to enable this payment method in Refund Payment]]></DESCRIPTION>
+<!--1CC480F599094439954539F7B493A965-->  <HELP><![CDATA[Check this field to enable this payment method in Refund Payment]]></HELP>
+<!--1CC480F599094439954539F7B493A965-->  <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
+<!--1CC480F599094439954539F7B493A965-->  <ISGLOSSARY><![CDATA[N]]></ISGLOSSARY>
+<!--1CC480F599094439954539F7B493A965--></AD_ELEMENT>
+
 <!--1D728488F3784208A534A49433515F11--><AD_ELEMENT>
 <!--1D728488F3784208A534A49433515F11-->  <AD_ELEMENT_ID><![CDATA[1D728488F3784208A534A49433515F11]]></AD_ELEMENT_ID>
 <!--1D728488F3784208A534A49433515F11-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 2cb39d0f8890 -r 3ee753a82a04 src-db/database/sourcedata/AD_FIELD.xml
--- a/src-db/database/sourcedata/AD_FIELD.xml	Wed Nov 23 18:54:45 2016 +0100
+++ b/src-db/database/sourcedata/AD_FIELD.xml	Mon Nov 07 16:50:46 2016 +0530
@@ -984,6 +984,34 @@
 <!--194FCEF0230E4E7CBAADCBB05BB6DB5E-->  <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
 <!--194FCEF0230E4E7CBAADCBB05BB6DB5E--></AD_FIELD>
 
+<!--1A3150BC38874B6DA775734AE5876EAE--><AD_FIELD>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <AD_FIELD_ID><![CDATA[1A3150BC38874B6DA775734AE5876EAE]]></AD_FIELD_ID>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <NAME><![CDATA[Refund Payment]]></NAME>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <DESCRIPTION><![CDATA[Check this field to enable this payment method in Refund Payment]]></DESCRIPTION>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <HELP><![CDATA[Check this field to enable this payment method in Refund Payment]]></HELP>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <AD_TAB_ID><![CDATA[4D9F5E9CC0014A96861CEFB64BBF013B]]></AD_TAB_ID>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <AD_COLUMN_ID><![CDATA[7057B1DDEE9B473B97330448635914D1]]></AD_COLUMN_ID>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <DISPLAYLENGTH><![CDATA[1]]></DISPLAYLENGTH>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <SEQNO><![CDATA[89]]></SEQNO>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <SHOWINRELATION><![CDATA[N]]></SHOWINRELATION>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--1A3150BC38874B6DA775734AE5876EAE-->  <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--1A3150BC38874B6DA775734AE5876EAE--></AD_FIELD>
+
 <!--1B70CFA2B89A4DC2945AC3609D0266CC--><AD_FIELD>
 <!--1B70CFA2B89A4DC2945AC3609D0266CC-->  <AD_FIELD_ID><![CDATA[1B70CFA2B89A4DC2945AC3609D0266CC]]></AD_FIELD_ID>
 <!--1B70CFA2B89A4DC2945AC3609D0266CC-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -2615,6 +2643,7 @@
 <!--43BBBAD3221E42E9B076FAAD47E0B64D-->  <AD_COLUMN_ID><![CDATA[B888603F7A584DE2BE941A5D9B7BA662]]></AD_COLUMN_ID>
 <!--43BBBAD3221E42E9B076FAAD47E0B64D-->  <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
 <!--43BBBAD3221E42E9B076FAAD47E0B64D-->  <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--43BBBAD3221E42E9B076FAAD47E0B64D-->  <DISPLAYLOGIC><![CDATA[@RefundPayment@='Y']]></DISPLAYLOGIC>
 <!--43BBBAD3221E42E9B076FAAD47E0B64D-->  <DISPLAYLENGTH><![CDATA[60]]></DISPLAYLENGTH>
 <!--43BBBAD3221E42E9B076FAAD47E0B64D-->  <ISREADONLY><![CDATA[N]]></ISREADONLY>
 <!--43BBBAD3221E42E9B076FAAD47E0B64D-->  <SEQNO><![CDATA[85]]></SEQNO>
diff -r 2cb39d0f8890 -r 3ee753a82a04 web/org.openbravo.retail.posterminal/css/obpos-main.css
--- a/web/org.openbravo.retail.posterminal/css/obpos-main.css	Wed Nov 23 18:54:45 2016 +0100
+++ b/web/org.openbravo.retail.posterminal/css/obpos-main.css	Mon Nov 07 16:50:46 2016 +0530
@@ -26,6 +26,11 @@
   cursor: pointer;
 }
 
+.paymentmethoditemsdisabled {
+  cursor: not-allowed;
+  opacity: .5;
+}
+
 @media all and (max-width: 800px) {
   .paymentmethoditems {
     min-width: 33%;
diff -r 2cb39d0f8890 -r 3ee753a82a04 web/org.openbravo.retail.posterminal/js/pointofsale/view/keyboard-toolbars.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/keyboard-toolbars.js	Wed Nov 23 18:54:45 2016 +0100
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/keyboard-toolbars.js	Mon Nov 07 16:50:46 2016 +0530
@@ -398,7 +398,8 @@
   buttonStatusChanged: function (inSender, inEvent) {
     var me = this,
         status = inEvent.value.status,
-        statusPayment = OB.MobileApp.model.paymentnames ? OB.MobileApp.model.paymentnames[status] : null;
+        statusPayment = OB.MobileApp.model.paymentnames ? OB.MobileApp.model.paymentnames[status] : null,
+        i;
 
     function setPaymentMethodInfo(payment) {
       me.keyboard.status = 'paymentMethodCategory.showitems.' + payment.paymentMethod.paymentMethodCategory;
@@ -410,15 +411,25 @@
     if (this.showing) {
       me.bubble('onPaymentChanged');
       if (this.keyboard.lastStatus !== '' && status === '') {
-        if (this.defaultPayment.paymentMethod.paymentMethodCategory) {
-          var searchKey = 'paymentMethodCategory.showitems.' + this.defaultPayment.paymentMethod.paymentMethodCategory;
+        var defaultPayment = this.defaultPayment;
+        //check if defaultPayment is returnable
+        if (me.receipt && me.receipt.getTotal() < 0 && !defaultPayment.paymentMethod.refundPayment) {
+          for (i = 0; i < OB.MobileApp.model.get('payments').length; i++) {
+            if (OB.MobileApp.model.get('payments')[i].paymentMethod.refundPayment) {
+              defaultPayment = OB.MobileApp.model.get('payments')[i];
+              break;
+            }
+          }
+        }
+        if (defaultPayment.paymentMethod.paymentMethodCategory) {
+          var searchKey = 'paymentMethodCategory.showitems.' + defaultPayment.paymentMethod.paymentMethodCategory;
           if (searchKey === this.keyboard.lastStatus) {
             this.keyboard.setStatus(searchKey);
           } else {
-            setPaymentMethodInfo(this.defaultPayment);
+            setPaymentMethodInfo(defaultPayment);
           }
         } else {
-          this.keyboard.setStatus(this.defaultPayment.payment.searchKey);
+          this.keyboard.setStatus(defaultPayment.payment.searchKey);
         }
       }
       if (statusPayment && statusPayment.paymentMethod.paymentMethodCategory) {
@@ -428,18 +439,19 @@
   },
   shown: function () {
     var me = this,
-        i, max, p, keyboard = this.owner.owner;
-    keyboard.showKeypad('Coins-' + OB.MobileApp.model.get('currency').id); // shows the Coins/Notes panel for the terminal currency
+        i, p, keyboard = this.owner.owner,
+        isDisabled;
+    keyboard.status = '';
     keyboard.showSidepad('sidedisabled');
 
     keyboard.disableCommandKey(this, {
       commands: ['%'],
       disabled: false
     });
-
-    for (i = 0, max = OB.MobileApp.model.get('payments').length; i < max; i++) {
+    for (i = 0; i < OB.MobileApp.model.get('payments').length; i++) {
       p = OB.MobileApp.model.get('payments')[i];
-      if (p.paymentMethod.id === OB.MobileApp.model.get('terminal').terminalType.paymentMethod) {
+      isDisabled = ((me.receipt && me.receipt.getTotal() < 0) ? !p.paymentMethod.refundPayment : false);
+      if ((p.paymentMethod.id === OB.MobileApp.model.get('terminal').terminalType.paymentMethod) && !isDisabled) {
         keyboard.defaultcommand = OB.MobileApp.model.get('payments')[i].payment.searchKey;
         keyboard.setStatus(OB.MobileApp.model.get('payments')[i].payment.searchKey);
         break;
@@ -447,9 +459,39 @@
     }
 
     if (keyboard && OB.MobileApp.model.get('paymentcash') && keyboard.status === '') {
-      keyboard.defaultcommand = OB.MobileApp.model.get('paymentcash');
-      keyboard.setStatus(OB.MobileApp.model.get('paymentcash'));
+      if (me.receipt && me.receipt.getTotal() > 0) {
+        keyboard.defaultcommand = OB.MobileApp.model.get('paymentcash');
+        keyboard.setStatus(OB.MobileApp.model.get('paymentcash'));
+      } else {
+        var refundablePayment = '';
+        for (i = 0; i < OB.MobileApp.model.get('payments').length; i++) {
+          p = OB.MobileApp.model.get('payments')[i];
+          isDisabled = ((me.receipt && me.receipt.getTotal() < 0) ? !p.paymentMethod.refundPayment : false);
+          //check if payment cash is enabled or disabled for return
+          if (!isDisabled) {
+            if (refundablePayment === '') {
+              refundablePayment = OB.MobileApp.model.get('payments')[i].payment.searchKey;
+            }
+            if (p.payment.searchKey === OB.MobileApp.model.get('paymentcash')) {
+              refundablePayment = OB.MobileApp.model.get('payments')[i].payment.searchKey;
+              break;
+            }
+          }
+        }
+        if (refundablePayment !== '') {
+          keyboard.defaultcommand = refundablePayment;
+          keyboard.setStatus(refundablePayment);
+        }
+      }
     }
+    //Handle No Refund Payment Methods
+    _.each(OB.MobileApp.model.paymentnames, function (payment) {
+      isDisabled = (me.receipt && me.receipt.getTotal() < 0 ? !payment.paymentMethod.refundPayment : false);
+      keyboard.disableCommandKey(me, {
+        disabled: isDisabled,
+        commands: [payment.payment.searchKey]
+      });
+    });
   }
 });
 
diff -r 2cb39d0f8890 -r 3ee753a82a04 web/org.openbravo.retail.posterminal/js/pointofsale/view/modals/modalpayments.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/modals/modalpayments.js	Wed Nov 23 18:54:45 2016 +0100
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/modals/modalpayments.js	Mon Nov 07 16:50:46 2016 +0530
@@ -81,19 +81,26 @@
               content: '<img class="paymentmethoditemsimage" src="' + (item.image ? item.image : 'img/PMImgNotAvailable.png') + '"/><div class="paymentmethoditemstext">' + item.name + '</div>',
               payment: item.payment,
               tap: function () {
-                var dialog = this.owner.owner.owner;
-                dialog.bubble('onStatusChanged', {
-                  payment: this.payment,
-                  status: this.payment.payment.searchKey,
-                  amount: dialog.args.amount,
-                  options: dialog.args.options
-                });
-                dialog.bubble('onPaymentChanged', {
-                  payment: this.payment,
-                  status: this.payment.payment.searchKey,
-                  amount: dialog.args.amount
-                });
-                dialog.doHideThisPopup();
+                if (!item.disabled) {
+                  var dialog = this.owner.owner.owner;
+                  dialog.bubble('onStatusChanged', {
+                    payment: this.payment,
+                    status: this.payment.payment.searchKey,
+                    amount: dialog.args.amount,
+                    options: dialog.args.options
+                  });
+                  dialog.bubble('onPaymentChanged', {
+                    payment: this.payment,
+                    status: this.payment.payment.searchKey,
+                    amount: dialog.args.amount
+                  });
+                  dialog.doHideThisPopup();
+                }
+              },
+              initComponents: function () {
+                if (item.disabled) {
+                  this.addClass('paymentmethoditemsdisabled');
+                }
               }
             });
           }, this);
@@ -116,10 +123,12 @@
     enyo.forEach(payments, function (payment) {
       if (payment.paymentMethod.paymentMethodCategory && payment.paymentMethod.paymentMethodCategory === this.args.idCategory && OB.MobileApp.model.hasPermission(payment.payment.searchKey)) {
         if (filterBy === '' || payment.paymentMethod._identifier.toUpperCase().indexOf(filterBy) >= 0) {
+          var isDisabled = (OB.MobileApp.model.receipt.getTotal() < 0 ? !payment.paymentMethod.refundPayment : false);
           items.push({
             name: payment.paymentMethod._identifier,
             image: payment.image,
-            payment: payment
+            payment: payment,
+            disabled: isDisabled
           });
         }
       }
diff -r 2cb39d0f8890 -r 3ee753a82a04 web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js	Wed Nov 23 18:54:45 2016 +0100
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js	Mon Nov 07 16:50:46 2016 +0530
@@ -52,6 +52,7 @@
     } else {
       var payment, change, pending, isMultiOrders, paymentstatus;
       payment = inEvent.value.payment || OB.MobileApp.model.paymentnames[OB.MobileApp.model.get('paymentcash')];
+      this.$.noenoughchangelbl.hide();
       if (_.isUndefined(payment)) {
         return true;
       }
diff -r 2cb39d0f8890 -r 3ee753a82a04 web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js	Wed Nov 23 18:54:45 2016 +0100
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js	Mon Nov 07 16:50:46 2016 +0530
@@ -457,8 +457,21 @@
   },
   tap: function () {
     var me = this,
-        criteria = {};
+        criteria = {},
+        paymentModels = OB.MobileApp.model.get('payments');
     if (this.disabled === false) {
+      // for Return Order if all payments are not refundable throw error
+      if (this.model.get('order').get('orderType') === 1) {
+        var hasNoRefundablePayment = _.filter(paymentModels, function (payment) {
+          return !payment.paymentMethod.refundPayment;
+        }).length === paymentModels.length;
+        if (hasNoRefundablePayment) {
+          OB.UTIL.showConfirmation.display('', OB.I18N.getLabel('OBPOS_LblNoRefundablePayments'), [{
+            label: OB.I18N.getLabel('OBMOBC_LblOk')
+          }]);
+          return;
+        }
+      }
       if (this.model.get('order').get('orderType') === 3) {
         this.showPaymentTab();
         return;
