Giter Site home page Giter Site logo

backend's Introduction

ADempiere gRPC Server

ADempiere gRPC Server example of integration

This is a project for publish Application Dictionary of ADempiere over gRPC service

Recreate proto stub class

For recreate stub class you must have follow:

Include ADempiere dependencies

In the build.gradle you need to include in the next sections the references to jars placed in lib, packages and zkpackages in your ADEMPIERE _HOME

  • In the repository section as flatDir Example:
    flatDir {
          dirs $ad_path + '/lib'
    }
    
  • In de dependencie section, Example
    implementation fileTree(dir: $ad_path + '/lib', include: '*.jar')
    

Init project

gradle wrapper

Clean

./gradlew clean

Generate Stups

./gradlew installDist

Runing Server

The server can be running as java class. See it: org.spin.grpc.util.DictionaryServer Don't forgive that for run server you need set yaml file line is /resources folder.

  • Use latest release
  • Unzip binary
  • go to bin folder
  • run it
./adempiere-all-in-one-server "/tmp/dictionary_connection.yaml"

Client Test

The client for testing was writed for java and is located on org.spin.grpc.util.DictionaryClient Just run it and see terminal

Output

A output generated from client request is the follow: The source code for generate output is here:

public static void main(String[] args) throws Exception {
	DictionaryClient client = new DictionaryClient("localhost", 50051);
	try {
		logger.info("####################### Menu Only #####################");
	    client.requestMenu(false);
	    logger.info("####################### Menu + Child #####################");
	    client.requestMenu(true);
	    logger.info("####################### Window Only #####################");
	    client.requestWindow(false);
	    logger.info("####################### Window + Tabs #####################");
	    client.requestWindow(true);
	    logger.info("####################### Tab Only #####################");
	    client.requestTab(false);
	    logger.info("####################### Tab + Fields #####################");
	    client.requestTab(true);
	    logger.info("####################### Field Only #####################");
	    client.requestField();
	} finally {
		client.shutdown();
	}
}

A output from terminal

  • Request Menu
INFORMACIÓN: ####################### Menu Only #####################
ene 24, 2019 5:06:05 PM org.spin.grpc.util.DictionaryClient requestMenu
INFORMACIÓN: Menu: uuid: "8e4fd396-fb40-11e8-a479-7a0060f0aa01"
name: "Recursos Humanos"
isSummary: true
  • Request Menu with child (Sub-Menu)
INFORMACIÓN: ####################### Menu + Child #####################
ene 24, 2019 5:07:02 PM org.spin.grpc.util.DictionaryClient requestMenu
INFORMACIÓN: Menu Child: uuid: "8e51156c-fb40-11e8-a479-7a0060f0aa01"
name: "Departamento"
description: "Mantenimiento de departamentos de n\303\263mina"
action: "W"
windowUuid: "a521ec30-fb40-11e8-a479-7a0060f0aa01"

ene 24, 2019 5:07:02 PM org.spin.grpc.util.DictionaryClient requestMenu
INFORMACIÓN: Menu Child: uuid: "8e50122a-fb40-11e8-a479-7a0060f0aa01"
name: "Recruitment Management"
description: "Recruitment Management"
isSummary: true

ene 24, 2019 5:07:02 PM org.spin.grpc.util.DictionaryClient requestMenu
INFORMACIÓN: Menu Child: uuid: "8e5115bc-fb40-11e8-a479-7a0060f0aa01"
name: "Puesto"
description: "Mantenimiento de puestos de n\303\263mina"
action: "W"
windowUuid: "a521bf80-fb40-11e8-a479-7a0060f0aa01"

ene 24, 2019 5:07:02 PM org.spin.grpc.util.DictionaryClient requestMenu
INFORMACIÓN: Menu Child: uuid: "8e5114c2-fb40-11e8-a479-7a0060f0aa01"
name: "Contrato"
description: "Mantenimiento de contratos de n\303\263mina"
action: "W"
windowUuid: "a521be7c-fb40-11e8-a479-7a0060f0aa01"

ene 24, 2019 5:07:02 PM org.spin.grpc.util.DictionaryClient requestMenu
INFORMACIÓN: Menu Child: uuid: "8e51151c-fb40-11e8-a479-7a0060f0aa01"
name: "Empleado"
description: "Mantenimiento de empleados de n\303\263mina"
action: "W"
windowUuid: "a521befe-fb40-11e8-a479-7a0060f0aa01"

ene 24, 2019 5:07:02 PM org.spin.grpc.util.DictionaryClient requestMenu
INFORMACIÓN: Menu Child: uuid: "8e500fbe-fb40-11e8-a479-7a0060f0aa01"
name: "Employee Setup"
description: "Employee Setup"
isSummary: true

ene 24, 2019 5:07:02 PM org.spin.grpc.util.DictionaryClient requestMenu
INFORMACIÓN: Menu: uuid: "8e4fd396-fb40-11e8-a479-7a0060f0aa01"
name: "Recursos Humanos"
isSummary: true
childs {
  uuid: "8e51156c-fb40-11e8-a479-7a0060f0aa01"
  name: "Departamento"
  description: "Mantenimiento de departamentos de n\303\263mina"
  action: "W"
  windowUuid: "a521ec30-fb40-11e8-a479-7a0060f0aa01"
}
childs {
  uuid: "8e50122a-fb40-11e8-a479-7a0060f0aa01"
  name: "Recruitment Management"
  description: "Recruitment Management"
  isSummary: true
}
childs {
  uuid: "8e5115bc-fb40-11e8-a479-7a0060f0aa01"
  name: "Puesto"
  description: "Mantenimiento de puestos de n\303\263mina"
  action: "W"
  windowUuid: "a521bf80-fb40-11e8-a479-7a0060f0aa01"
}
childs {
  uuid: "8e5114c2-fb40-11e8-a479-7a0060f0aa01"
  name: "Contrato"
  description: "Mantenimiento de contratos de n\303\263mina"
  action: "W"
  windowUuid: "a521be7c-fb40-11e8-a479-7a0060f0aa01"
}
childs {
  uuid: "8e51151c-fb40-11e8-a479-7a0060f0aa01"
  name: "Empleado"
  description: "Mantenimiento de empleados de n\303\263mina"
  action: "W"
  windowUuid: "a521befe-fb40-11e8-a479-7a0060f0aa01"
}
childs {
  uuid: "8e500fbe-fb40-11e8-a479-7a0060f0aa01"
  name: "Employee Setup"
  description: "Employee Setup"
  isSummary: true
}

backend's People

Contributors

edwinbetanc0urt avatar raul-mz avatar rcapecce avatar yamelsenih avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

backend's Issues

[error] Service user-interface/window/lookup-items in Product Classification field

  1. Open Product window.
  2. List Product Classification field.

imagen

Using this cURL request:

curl 'http://localhost:8085/api/adempiere/user-interface/window/lookup-items?table_name=M_Product_Classification&query=SELECT+M_Product_Classification.M_Product_Classification_ID,NULL,NVL((SELECT+M_Product_Classification1.Name,+M_Product_Classification.UUID+FROM+M_Product_Classification+M_Product_Classification1+WHERE+M_Product_Classification.M_Classification_Parent_ID%3DM_Product_Classification1.M_Product_Classification_ID),%27-1%27)+%7C%7C%27_%27%7C%7C+NVL(M_Product_Classification.Name,%27-1%27),M_Product_Classification.IsActive+FROM+M_Product_Classification+ORDER+BY+3&where_clause=&token=307de9a6-04ac-4539-a7e2-f0a38fb7d375&language=en'

Returning error:

{
 "code": 500,
 "result": "org.postgresql.util.PSQLException: ERROR: subquery must return only one column\n  Position: 75\norg.postgresql.util.PSQLException: ERROR: subquery must return only one column\n  Position: 75"
}

Does not modify quantities of products at the point of sale

Bug report

The following error is that this does not allow to modify the quantity of the products that are added at the point of sale, when checking the option "Edit Quantities" it only shows a box that says "Edit quantities" which is read only, it does not allow type anything or show any option that subtracts or adds.

Steps to reproduce

To emulate this case, you must enter the point of sale, associate a product, for this case in the section of the product catalog of the point of sale the following steps are applied:

  1. Associate client
  2. Add products
  3. Go to one of the products, click on the option "Option" check "Modify Quantities"

Screenshot or Gif(截图或动态图)

Error_Modificar_Cantidades_UI

Link to minimal reproduction(最小可在线还原demo)

https://demo-ui.erpya.com/
Please only use Codepen, JSFiddle, CodeSandbox or a github repo
-->

Expected behavior

What is expected of this procedure is that the UI allows modifying the quantity of the products, whether it subtracts or adds

Missing libraries on gradle compilation

When I run gradle initInstallDist, the error appears when it cannot find some classes

In the build.gradle you have to add the missing libraries to ADempiere source

I tried to set gradle variables but couldn't.
Something like this

in repositories section

    flatDir {
        dirs $ad_path + '/lib'
        dirs $ad_path + '/packages/ADempierePOS/libs'
        dirs $ad_path + '/packages/CashflowManagement/libs'
        dirs $ad_path + '/packages/FinanceManagement/libs'
        dirs $ad_path + '/packages/FixedAssetManagement/libs'
        dirs $ad_path + '/packages/FleetManagement/libs'
        dirs $ad_path + '/packages/FreightManagement/libs'
        dirs $ad_path + '/packages/HumanResourceAndPayroll/libs'
        dirs $ad_path + '/packages/LoanManagement/libs'
        dirs $ad_path + '/packages/ManufacturingManagement/libs'
        dirs $ad_path + '/packages/ProductionLight/libs'
        dirs $ad_path + '/packages/StoreIntegration/libs'
        dirs $ad_path + '/packages/TimeAndAttendance/libs'
        dirs $ad_path + '/packages/WarehouseManagement/libs'

    }

and in dependencies section

    implementation fileTree(dir: $ad_path + '/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/ADempierePOS/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/CashflowManagement/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/FinanceManagement/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/FixedAssetManagement/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/FleetManagement/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/FreightManagement/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/HumanResourceAndPayroll/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/LoanManagement/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/ManufacturingManagement/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/ProductionLight/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/StoreIntegration/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/TimeAndAttendance/lib', include: '*.jar')
    implementation fileTree(dir: $ad_path + '/packages/WarehouseManagement/lib', include: '*.jar')

This solution works for me with an static path but no with a variable in settings.gradle

Error when try run ./adempiere-access-server

I try running the last release rt-13.3 adempiere-gRPC-Server and got this error

./adempiere-access-server /Users/e-Evolution/AdempierePG.properties
Exception in thread "main" com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of org.spin.base.setup.SetupWrapper (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('WindowDim0=1669|1111 Warehouse=db845ef52e22645b747a0ee020dc2b28 PrintPreview=0607d09432b51724 Warning=Do_not_change_any_of_the_data_as_they_will_have_undocumented_side_effects. AutoNew=d504ada4fe01fe9b ShowAcct=d504ada4fe01fe9b TempDir=76475626baca5fbc5e913d039ee56cdf808138fca47d22b2b0a151c5891c7400d9c485421f35473ad6533682fb09645bc7af0c1d14f3d373 Connection=fc7ff8bcdd51cbd87828c3621d37a2ca73d7185e0b1afabf91f8ae9d22b02f9c3321fe12c7cbadc548ede393500096d3c024dc13b147b2f898a324de1da962b218308018840797dc9152799af6d822b70e438aba1206188fc97294372ddd4c2009c1bd5c9f8fa87e18a3d48922c7fb1d16387d0021baf605b8a02c4e7df0fc21997c48cddd6ec2db1370283bf881ff53f75d33ccf27959423e7ccfaf5deaa939e53672064d07cdb73368361d8e9bc4368f08bafd938a8de3302766dbf8d8cf04407d0fabdb65ce0767d82997d74a14fb5408c662116eaa2ffb46865983aaa1c3 AdempiereSys=d504ada4fe01fe9b CacheWindow=0607d09432b51724 ShowAdvanced=0607d09432b51724 UITheme=0c55dfec0c465c5ceb3bd8ac7cb13235 ShowTrl=0607d09432b51724 SingleInstancePerWindow=d504ada4fe01fe9b Client=4ee7c52423d668d9f2208f9e14749c16 ApplicationUserID=ba30b8f194bf03ad564d171b6ee8e8e3 Organization=da282170804d566f CDate=f633560dc66d46624ac59055b9198cf88b7489a546722bc8 Divider=519 ApplicationPassword=1b7c2dc3600e813a Role=4ee7c52423d668d9909f5c955f0bfff3ca92e61dde7e7e70 AutoCommit=0607d09432b51724 Charset=79cf4e2e0345fd0e TraceFile=d504ada4fe01fe9b DataSource=25149d4b9a47f4def17237ffbe3f8d5e6dc2facaa9e0623c LoadTabMetaDataBackground=d504ada4fe01fe9b LogMigrationScript=d504ada4fe01fe9b WarningD=Einstellungen_nicht_aendern,_da_diese_undokumentierte_Nebenwirkungen_haben. AutoLogin=d504ada4fe01fe9b Printer= TraceLevel=afcc0a34e2901f7f Language=ddb3fce83ab1ccbf5eb5012c7ca3d126 WindowLoc0=3738|268 UILookFeel=0c55dfec0c465c5cb0d8e08f9070a667 OpenWindowMaximized=d504ada4fe01fe9b ValidateConnectionOnStartup=d504ada4fe01fe9b StorePassword=0607d09432b51724')
at [Source: (File); line: 3, column: 1]
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63)
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1451)
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1081)
at com.fasterxml.jackson.databind.deser.ValueInstantiator._createFromStringFallbacks(ValueInstantiator.java:371)
at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.java:323)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromString(BeanDeserializerBase.java:1396)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:176)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:166)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4482)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3299)
at org.spin.base.setup.SetupLoader.(SetupLoader.java:48)
at org.spin.base.setup.SetupLoader.loadSetup(SetupLoader.java:128)
at org.spin.grpc.util.AccessServer.main(AccessServer.java:104)

Gradle can not find ADempiere classpath

I have tried to compile gRPC server (master branch) from terminal with Gradle. It seems however that Eclipse project have reference to Adempiere classpath which is not available when compiling from terminal.
I propose to add in Gradle script ADempiere jars referenced with $ADEMPIERE_HOME entry and add to documentation requirement to set $ADEMPIERE_HOME when compiling standalone Gradle

Bug: Empty conversion

Curl

curl --location --request GET 'https://api.erpya.com/api/adempiere/common/conversion-rate?conversion_type_uuid=9dc9ece7-e63e-4b75-9a01-310578bf6103&currency_from_uuid=a5671df0-fb40-11e8-a479-7a0060f0aa01&currency_to_uuid=a567befe-fb40-11e8-a479-7a0060f0aa01&conversion_date=2022-02-02&token=23e76838-f0bd-4c96-a1c1-a2c86400d702&language=es'

Response returned

{ "code": 200, "result": { "uuid": "", "id": 0, "conversion_type_uuid": "", "valid_from": "", "valid_to": "" } }

Error Description

Empty conversion of the exchange rate always arrives

bug: Smart Browser without records results.

Smart Browser "Process Orders of selection"

This smart browser is operational.

curl 'http://localhost:8085/api/adempiere/user-interface/smart-browser/browser-items?token=3486915e-27f3-40a8-89d3-c31cd871a5b6&language=es' \
  -X POST \
  -H 'Content-Type: application/json' \
  --data-raw '{"uuid":"8aaf0a4a-fb40-11e8-a479-7a0060f0aa01","filters":[{"column_name":"O_C_BPartner_ID","value":112},{"column_name":"O_DocStatus","value":"CO"}],"context_attributes":[]}'
sb-operativo.mp4

Smart Browser "Warehouse Replenish"

With results without query parameters:

curl 'http://localhost:8085/api/adempiere/user-interface/smart-browser/browser-items?token=3486915e-27f3-40a8-89d3-c31cd871a5b6&language=es' \
  -X POST \
  -H 'Content-Type: application/json' \
  --data-raw '{"uuid":"8aaf0a4a-fb40-11e8-a479-7a0060f0aa01","filters":[],"context_attributes":[]}'

Without results with send query parameters:

curl 'http://localhost:8085/api/adempiere/user-interface/smart-browser/browser-items?token=3486915e-27f3-40a8-89d3-c31cd871a5b6&language=es' \
  -X POST \
  -H 'Content-Type: application/json' \
  --data-raw '{"uuid":"8aaf0a4a-fb40-11e8-a479-7a0060f0aa01","filters":[{"column_name":"SBR_ReplenishType","value":"2"}],"context_attributes":[]}'
sb-reabastecimiento-sin-resultados.mp4

Smart Browser "User Browser"

Without results:

sb-usuario-sin-resultados.mp4
curl 'http://localhost:8085/api/adempiere/user-interface/smart-browser/browser-items?token=3486915e-27f3-40a8-89d3-c31cd871a5b6&language=es' \
  -X POST \
  -H 'Content-Type: application/json' \
  --data-raw '{"uuid":"8aaf0a4a-fb40-11e8-a479-7a0060f0aa01","filters":[{"column_name":"CONTACT_IsActive","value":"Y"}, {"column_name":"CONTACT_IsLoginUser","value":"Y"}],"context_attributes":[]}'

adempiere/adempiere-vue#1472

Column reference ambiguous

Hello everyone, there is an ambiguity error on the server when trying to load some windows.
The error is caused by the following SQL query:

SELECT COUNT(*) FROM C_Order AS C_Order LEFT JOIN C_DocType AS C_DocTypeTarget_ID_C_DocType ON(C_DocTypeTarget_ID_C_DocType.C_DocType_ID = C_Order.C_DocTypeTarget_ID) LEFT JOIN C_BPartner AS Bill_BPartner_ID_C_BPartner ON(Bill_BPartner_ID_C_BPartner.C_BPartner_ID = C_Order.Bill_BPartner_ID) LEFT JOIN C_BPartner_Location AS Bill_Location_ID_C_BPartner_Location ON(Bill_Location_ID_C_BPartner_Location.C_BPartner_Location_ID = C_Order.Bill_Location_ID) LEFT JOIN AD_User AS Bill_User_ID_AD_User ON(Bill_User_ID_AD_User.AD_User_ID = C_Order.Bill_User_ID) LEFT JOIN AD_Ref_List AS DeliveryRule_AD_Ref_List ON(DeliveryRule_AD_Ref_List.Value = C_Order.DeliveryRule AND DeliveryRule_AD_Ref_List.AD_Reference_ID = 151) LEFT JOIN AD_Ref_List AS PriorityRule_AD_Ref_List ON(PriorityRule_AD_Ref_List.Value = C_Order.PriorityRule AND PriorityRule_AD_Ref_List.AD_Reference_ID = 154) LEFT JOIN C_BPartner AS DropShip_BPartner_ID_C_BPartner ON(DropShip_BPartner_ID_C_BPartner.C_BPartner_ID = C_Order.DropShip_BPartner_ID) LEFT JOIN C_BPartner_Location AS DropShip_Location_ID_C_BPartner_Location ON(DropShip_Location_ID_C_BPartner_Location.C_BPartner_Location_ID = C_Order.DropShip_Location_ID) LEFT JOIN AD_User AS DropShip_User_ID_AD_User ON(DropShip_User_ID_AD_User.AD_User_ID = C_Order.DropShip_User_ID) LEFT JOIN AD_Ref_List AS DeliveryViaRule_AD_Ref_List ON(DeliveryViaRule_AD_Ref_List.Value = C_Order.DeliveryViaRule AND DeliveryViaRule_AD_Ref_List.AD_Reference_ID = 152) LEFT JOIN AD_Ref_List AS FreightCostRule_AD_Ref_List ON(FreightCostRule_AD_Ref_List.Value = C_Order.FreightCostRule AND FreightCostRule_AD_Ref_List.AD_Reference_ID = 153) LEFT JOIN AD_Ref_List AS InvoiceRule_AD_Ref_List ON(InvoiceRule_AD_Ref_List.Value = C_Order.InvoiceRule AND InvoiceRule_AD_Ref_List.AD_Reference_ID = 150) LEFT JOIN AD_User AS SalesRep_ID_AD_User ON(SalesRep_ID_AD_User.AD_User_ID = C_Order.SalesRep_ID) LEFT JOIN C_Charge AS C_Charge_ID_C_Charge ON(C_Charge_ID_C_Charge.C_Charge_ID = C_Order.C_Charge_ID) LEFT JOIN AD_Org AS AD_OrgTrx_ID_AD_Org ON(AD_OrgTrx_ID_AD_Org.AD_Org_ID = C_Order.AD_OrgTrx_ID) LEFT JOIN C_ElementValue AS User1_ID_C_ElementValue ON(User1_ID_C_ElementValue.C_ElementValue_ID = C_Order.User1_ID) LEFT JOIN C_ElementValue AS User2_ID_C_ElementValue ON(User2_ID_C_ElementValue.C_ElementValue_ID = C_Order.User2_ID) LEFT JOIN C_ElementValue AS User3_ID_C_ElementValue ON(User3_ID_C_ElementValue.C_ElementValue_ID = C_Order.User3_ID) LEFT JOIN C_ElementValue AS User4_ID_C_ElementValue ON(User4_ID_C_ElementValue.C_ElementValue_ID = C_Order.User4_ID) LEFT JOIN AD_Ref_List AS DocStatus_AD_Ref_List ON(DocStatus_AD_Ref_List.Value = C_Order.DocStatus AND DocStatus_AD_Ref_List.AD_Reference_ID = 131) WHERE (C_Order.IsSOTrx='Y' AND EXISTS(SELECT 1 FROM C_DocType dt WHERE dt.C_DocType_ID = C_Order.C_DocTypeTarget_ID AND dt.DocBaseType = 'SOO' AND (dt.DocSubTypeSO IS NULL OR dt.DocSubTypeSO <> 'RM')) AND (C_BPartner_ID=1000313 AND (C_Order.IsSOTrx='Y' AND EXISTS(SELECT 1 FROM C_DocType dt WHERE dt.C_DocType_ID = C_Order.C_DocTypeTarget_ID AND dt.DocBaseType = 'SOO' AND (dt.DocSubTypeSO IS NULL OR dt.DocSubTypeSO <> 'RM'))))) AND C_Order.AD_Client_ID IN(0,1000000) AND C_Order.AD_Org_ID IN(0,1000000) AND (C_Order.C_Order_ID IS NULL OR C_Order.C_Order_ID NOT IN ( SELECT Record_ID FROM AD_Private_Access WHERE AD_Table_ID = 259 AND AD_User_ID <> 1001193 AND IsActive = 'Y' ))

bug: Private access error in Customer Accounting tab

The private access for the Customer Accounting tab in Business Partner window generates error, because the uuid of the record is sent and the "TableName"_ID (C_BP_Customer_Acct_ID) is included in the query, but this column assumed as the main key of the table does not exist.

private-access-error.mp4

Request Private Access:

http://localhost:8085/api/adempiere/user-interface/component/private-access/private-access?table_name=C_BP_Customer_Acct&uuid=1da4a885-fbba-4f5f-91d4-6b579a3d5213&token=0d4b0714-e74e-4e82-8f4a-ca80ab224952&language=es

Response Error:

org.postgresql.util.PSQLException: ERROR: column "c_bp_customer_acct_id" does not exist
  Position: 8, SQL=select C_BP_Customer_Acct_ID from C_BP_Customer_Acct where UUID = ? and AD_Client_ID=? Order By C_BP_Customer_Acct_ID

bug: Report request without output response

Request of Open Items report:

curl 'http://localhost:8085/api/adempiere/common/api/process?token=176e47d1-96a6-46fe-84b7-6a0e84b6cbf4&language=es' \
  -X POST \
  -H 'Content-Type: application/json' \
  --data-raw '{"process_uuid":"a42b9c36-fb40-11e8-a479-7a0060f0aa01","parameters":[{"key":"IsSOTrx","value":true},{"key":"DaysDue","value":-99999},{"key":"DaysDue_To","value":99999}],"selections":[]}'

Response returned:

{
  "code": 200,
  "result": {
    "uuid": "",
    "instance_uuid": "b15ffbc9-abf1-4be1-a662-6417c43a59e4",
    "is_error": false,
    "summary": "",
    "result_table_name": "",
    "is_processing":false,
    "last_run":1643718937000,
    "logs_list":[],
    "parameters":{}
  }
}

Note that it has no output with which the file to be displayed is generated.

Java error on RunLogin Proto

when I hit request RunLogin it came with error

{ "error": "13 INTERNAL: java.lang.Exception: Class for connection not found\njava.lang.Exception: Class for connection not found" }

bug: Window pagination

bug: Window filter records with context_attributes not working

  1. Open Business Partner window.
  2. Select record.
  3. Select any tab child to load records.
window-filter-records-not-working.mp4

The id of the business partner is sent to filter the records in context_attributes, but it shows all the records contained in the table.

http://localhost:8085/api/adempiere/user-interface/window/entities?window_uuid=a520de12-fb40-11e8-a479-7a0060f0aa01&tab_uuid=a49f9fe6-fb40-11e8-a479-7a0060f0aa01&context_attributes[]={"column_name":"C_BPartner_ID","value":1000000}&token=db548a1b-c629-4381-bdb0-232ef79a7aae&language=es

[error] /data/list Service org.postgresql.util.PSQLException: ERROR: syntax error at or near ")" Position: 102

cURL code request:

curl 'https://api.erpya.com/adempiere-api/data/list?token=4b71db17-4133-4179-9f2b-112529f38f9e&language=es' \
-H 'Content-Type: application/json;charset=UTF-8' \
--data-raw $'{"table_name":"C_POSKey","filters":[],"columns":[],"query":"SELECT C_POSKey.*, (SELECT NVL(AD_Client.Name,\'\') FROM AD_Client WHERE C_POSKey.AD_Client_ID=AD_Client.AD_Client_ID) AS \\"DisplayColumn_AD_Client_ID\\", (SELECT NVL(AD_Org.Name,\'\') FROM AD_Org WHERE C_POSKey.AD_Org_ID=AD_Org.AD_Org_ID) AS \\"DisplayColumn_AD_Org_ID\\", (SELECT NVL(C_POSKeyLayout.Name,\'\') FROM C_POSKeyLayout WHERE C_POSKey.C_POSKeyLayout_ID=C_POSKeyLayout.C_POSKeyLayout_ID) AS \\"DisplayColumn_C_POSKeyLayout_ID\\", SubKeyLayout_ID_C_POSKeyLayout.Name AS \\"DisplayColumn_SubKeyLayout_ID\\", (SELECT NVL(M_Product.Value,\'\')||\' - \'||M_Product_Trl.Name FROM M_Product INNER JOIN M_Product_TRL ON (M_Product.M_Product_ID=M_Product_Trl.M_Product_ID AND M_Product_Trl.AD_Language=\'es_VE\') WHERE C_POSKey.M_Product_ID=M_Product.M_Product_ID) AS \\"DisplayColumn_M_Product_ID\\", (SELECT NVL(AD_PrintColor.Name,\'\') FROM AD_PrintColor WHERE C_POSKey.AD_PrintColor_ID=AD_PrintColor.AD_PrintColor_ID) AS \\"DisplayColumn_AD_PrintColor_ID\\", (SELECT NVL(AD_PrintFont.Name,\'\') FROM AD_PrintFont WHERE C_POSKey.AD_PrintFont_ID=AD_PrintFont.AD_PrintFont_ID) AS \\"DisplayColumn_AD_PrintFont_ID\\" FROM C_POSKey AS C_POSKey LEFT JOIN C_POSKeyLayout AS SubKeyLayout_ID_C_POSKeyLayout ON(SubKeyLayout_ID_C_POSKeyLayout.C_POSKeyLayout_ID = C_POSKey.SubKeyLayout_ID)","where_clause":"C_POSKey.C_POSKeyLayout_ID = 1000001","order_by_clause":""}'

Body Request:

{
	"columns": [],
	"filters": [],
	"order_by_clause": "",
	"query": "SELECT C_POSKey.*, (SELECT NVL(AD_Client.Name,'') FROM AD_Client WHERE C_POSKey.AD_Client_ID=AD_Client.AD_Client_ID) AS \"DisplayColumn_AD_Client_ID\", (SELECT NVL(AD_Org.Name,'') FROM AD_Org WHERE C_POSKey.AD_Org_ID=AD_Org.AD_Org_ID) AS \"DisplayColumn_AD_Org_ID\", (SELECT NVL(C_POSKeyLayout.Name,'') FROM C_POSKeyLayout WHERE C_POSKey.C_POSKeyLayout_ID=C_POSKeyLayout.C_POSKeyLayout_ID) AS \"DisplayColumn_C_POSKeyLayout_ID\", SubKeyLayout_ID_C_POSKeyLayout.Name AS \"DisplayColumn_SubKeyLayout_ID\", (SELECT NVL(M_Product.Value,'')||' - '||M_Product_Trl.Name FROM M_Product INNER JOIN M_Product_TRL ON (M_Product.M_Product_ID=M_Product_Trl.M_Product_ID AND M_Product_Trl.AD_Language='es_VE') WHERE C_POSKey.M_Product_ID=M_Product.M_Product_ID) AS \"DisplayColumn_M_Product_ID\", (SELECT NVL(AD_PrintColor.Name,'') FROM AD_PrintColor WHERE C_POSKey.AD_PrintColor_ID=AD_PrintColor.AD_PrintColor_ID) AS \"DisplayColumn_AD_PrintColor_ID\", (SELECT NVL(AD_PrintFont.Name,'') FROM AD_PrintFont WHERE C_POSKey.AD_PrintFont_ID=AD_PrintFont.AD_PrintFont_ID) AS \"DisplayColumn_AD_PrintFont_ID\" FROM C_POSKey AS C_POSKey LEFT JOIN C_POSKeyLayout AS SubKeyLayout_ID_C_POSKeyLayout ON(SubKeyLayout_ID_C_POSKeyLayout.C_POSKeyLayout_ID = C_POSKey.SubKeyLayout_ID)",
	"table_name": "C_POSKey",
	"where_clause": "C_POSKey.C_POSKeyLayout_ID = 1000001"
}

Error Response:

{
	"code": 500,
	"result": "org.postgresql.util.PSQLException: ERROR: syntax error at or near \")\"\n  Position: 102, SQL=SELECT COUNT(*) FROM C_POSKeyLayout WHERE C_POSKey.C_POSKeyLayout_ID=C_POSKeyLayout.C_POSKeyLayout_ID) AS \"DisplayColumn_C_POSKeyLayout_ID\", SubKeyLayout_ID_C_POSKeyLayout.Name AS \"DisplayColumn_SubKeyLayout_ID\", (SELECT NVL(M_Product.Value,'')||' - '||M_Product_Trl.Name FROM M_Product INNER JOIN M_Product_TRL ON (M_Product.M_Product_ID=M_Product_Trl.M_Product_ID AND M_Product_Trl.AD_Language='es_VE') WHERE C_POSKey.M_Product_ID=M_Product.M_Product_ID) AS \"DisplayColumn_M_Product_ID\", (SELECT NVL(AD_PrintColor.Name,'') FROM AD_PrintColor WHERE C_POSKey.AD_PrintColor_ID=AD_PrintColor.AD_PrintColor_ID) AS \"DisplayColumn_AD_PrintColor_ID\", (SELECT NVL(AD_PrintFont.Name,'') FROM AD_PrintFont WHERE C_POSKey.AD_PrintFont_ID=AD_PrintFont.AD_PrintFont_ID) AS \"DisplayColumn_AD_PrintFont_ID\" FROM C_POSKey AS C_POSKey LEFT JOIN C_POSKeyLayout AS SubKeyLayout_ID_C_POSKeyLayout ON(SubKeyLayout_ID_C_POSKeyLayout.C_POSKeyLayout_ID = C_POSKey.SubKeyLayout_ID) WHERE (C_POSKey.C_POSKeyLayout_ID = 1000001) AND C_POSKey.AD_Client_ID IN (0,1000000) AND (C_POSKey.C_POSKey_ID IS NULL OR C_POSKey.C_POSKey_ID NOT IN ( SELECT Record_ID FROM AD_Private_Access WHERE AD_Table_ID = 750 AND AD_User_ID <> 1000032 AND IsActive = 'Y' ))\norg.postgresql.util.PSQLException: ERROR: syntax error at or near \")\"\n  Position: 102, SQL=SELECT COUNT(*) FROM C_POSKeyLayout WHERE C_POSKey.C_POSKeyLayout_ID=C_POSKeyLayout.C_POSKeyLayout_ID) AS \"DisplayColumn_C_POSKeyLayout_ID\", SubKeyLayout_ID_C_POSKeyLayout.Name AS \"DisplayColumn_SubKeyLayout_ID\", (SELECT NVL(M_Product.Value,'')||' - '||M_Product_Trl.Name FROM M_Product INNER JOIN M_Product_TRL ON (M_Product.M_Product_ID=M_Product_Trl.M_Product_ID AND M_Product_Trl.AD_Language='es_VE') WHERE C_POSKey.M_Product_ID=M_Product.M_Product_ID) AS \"DisplayColumn_M_Product_ID\", (SELECT NVL(AD_PrintColor.Name,'') FROM AD_PrintColor WHERE C_POSKey.AD_PrintColor_ID=AD_PrintColor.AD_PrintColor_ID) AS \"DisplayColumn_AD_PrintColor_ID\", (SELECT NVL(AD_PrintFont.Name,'') FROM AD_PrintFont WHERE C_POSKey.AD_PrintFont_ID=AD_PrintFont.AD_PrintFont_ID) AS \"DisplayColumn_AD_PrintFont_ID\" FROM C_POSKey AS C_POSKey LEFT JOIN C_POSKeyLayout AS SubKeyLayout_ID_C_POSKeyLayout ON(SubKeyLayout_ID_C_POSKeyLayout.C_POSKeyLayout_ID = C_POSKey.SubKeyLayout_ID) WHERE (C_POSKey.C_POSKeyLayout_ID = 1000001) AND C_POSKey.AD_Client_ID IN (0,1000000) AND (C_POSKey.C_POSKey_ID IS NULL OR C_POSKey.C_POSKey_ID NOT IN ( SELECT Record_ID FROM AD_Private_Access WHERE AD_Table_ID = 750 AND AD_User_ID <> 1000032 AND IsActive = 'Y' ))"
}

adempiere/adempiere-vue#610

bug: Without response in default value request

  • Open window Work Group

This request is triggered in the Sequence field

imagen

Request:

curl 'http://localhost:8085/api/adempiere/user-interface/window/default-value?query=SELECT++MAX(SeqNo)+%2B+1+FROM+HR_WorkGroup+&token=1604aa40-6adc-4929-b1b1-7f063991cdaf&language=en'

Response:

{
  "code":200
}

Connection Refused When Login

INFO: Server started, listening on 8989
Jan 24, 2020 11:24:55 AM io.grpc.netty.NettyServerTransport notifyTerminated
INFO: Transport failed
io.netty.handler.codec.http2.Http2Exception: Unexpected HTTP/1.x request: OPTIONS /access.AccessService/RunLoginDefault
at io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:85)
at io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.readClientPrefaceString(Http2ConnectionHandler.java:314)
at io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.decode(Http2ConnectionHandler.java:251)
at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:450)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:644)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Unknown Source)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.