Compiere(コンピエール) > サポート > よくあるご質問 > システム構造について

よくあるご質問 - システム構造について

Compiereの中に、株式会社アルマスで開発したDB仕様書出力機能があります。その機能を利用して、日本語または英語のDB仕様書をEXCELファイルで出力することができます。当サイトでもそのEXCELファイルをダウンロードできるようになっています。
Compiereのテーブルに項目を追加する方法は、
1、SystemAdministrator職責でログインして、「テーブルとカラム」画面を開き、テーブルを選択する。
2、項目タブで、新規ボタンを押して追加する項目を登録する。
3、「カラム同期」ボタンを押して、項目の定義をDBテーブルに反映する。
4、「ウインドウ・タブ・フィールド」画面で、該当テーブルのウインドウを選択して、テーブル対応タブで、「フィールド作成」ボタンを押して、追加項目をタブフィールドに持ってくる。
5、作成フィールドの位置とサイズを調整する。
6、「用語同期」プロセスを実行する
7、ログインし直して、修正画面で追加フィールドを確認する。
「テーブルとカラム」画面で、C_Orderテーブルを探し出し、カラムタブの中から「C_DocType_ID」項目を選んで、カラム定義の「選択カラム」チェックボックスをチェックして、「選択シークエンス」に表示する順番を入力すると、キャッシュをリセットして、次回から受発注画面にて検索するときに、ドキュメントタイプで検索できるようになります。
「テーブルとカラム」画面で、M_Productテーブルを探し出し、カラムタブの中から「Value」項目を選んで、カラム定義の「識別子」チェックボックスをチェックして、「シークエンス」に表示する順番「1」を入力して、カラム「Name」の「シーケンス」を「2」に変更すると、キャッシュをリセットして、次回からすべての製品を含む画面を開くと、製品の表示が、Value_Nameの形になります。
Compiereのシステム構造に関する説明資料は、現時点でどの言語でもありませんが、弊社の実施している技術トレーニングでは、半日を使って細かく説明しています。必要な方は是非ご検討ください。
C_ORDERテーブルのIsInvoicedは、該当受注の請求書が作成されて、完成された時点でセットされます。C_Payment_IDは、該当受注が請求書作成せずに、支払われたとき(受注を選んで支払う時だけ)に設定されます。
M_InOut_Header_vを修正すれば、M_InOut_Header_vtも修正しないといけません。この*_vtというVIEWは、定型帳票印刷するときに、ベース言語以外の言語でログインしたときに使われるビューになります。
支払画面には印刷書式を作ることが可能です。 英語フォーマットは作ってませんでしたが、 CheckとPaymentSelectionとして、英語の印刷書式がありますので、 参照しながら作成してください。(Compiere_J300_A02には作成済み)
納品画面から印刷する伝票は、別のビューにすると正しく動きません。M_InOut_Header_vに自分の必要な項目を追加して作成するしかないです。
エクスポートとインポートは英語でログインして、実行することが成功率が高いです。 日本語だと、翻訳の部分の差で、エクスポートした名称が正しく認識されない時ありました。 英語でログインして、再度試してください。
Compiereの帳票の「印刷書式」は、どのテーブルを使っているかを見て、リストに出して います。 通常はリストに表示するかしないかは、同じテーブルを見ているとコントロールできないです。 請求書、納品書などのデフォルト書式は、
1、取引先に印刷書式限定があれば、取引先のための印刷書式を使います。
2、取引先に印刷書式限定がない場合、ドキュメントタイプの印刷書式を使います。
3、組織レベルの「印刷フォーム」に定義した印刷書式があれば使われます。
4、クライアントの「印刷フォーム」に定義した印刷書式が使われます。
5、上記に設定できない印刷書式は、「印刷書式」のディフォルトをチェックするしかないです。

同じテーブルの印刷書式に「ディフォルト」が複数設定された場合、 アルファベット名前のアルファベット順で使われるかと思います。
MInventory.java のpublic boolean reverseCorrectIt() メソッドの中で、一番後ろぐらいにある reversal.save(); の前にreversal.unlockIt(); を追加すれば、バグ修正ができます。
前の残ったエラーは下記のSQLで修正できます。
update M_INVENTORY
set PROCESSING = 'N'
where PROCESSING = 'Y';

commit;
以上で対応してください。 (Compiere_J300_A02は対応済み)
クライアント作成後に、会計期間作成が問題あったようです。出荷日付の入る会計期間の 下のドキュメントタイプのステータスを見てください。
そちらの問題か、
===========> MSequence.getDocumentNo: C_DocType_ID=0 [26]
-----------> MPeriod.isOpen: No DocBaseType [26]
-----------> MWFActivity.run:
から見ると、C_DocType_ID=0になっているため、出荷データが何か問題あるみたい。 自動作成した出荷ですか、手入力出荷ですか・・確認してください。
発注書を作成した後、入荷、請求する前に、仕入先への支払をする時に、発注書を選択して、 支払をすると、「前払」チェックボックスが付いて、科目は、「前払金」に計上されます。 発注書を選択するときに、選択に発注書が出てきてないですが、発注は前払いさせないように なっています。 ダイナミックバリデーション C_Order in Payment の条件を (C_Order.DocStatus='WP' OR (C_Order.DocStatus='CO' AND (C_Order.IsSOTrx='N' OR EXISTS (SELECT * FROM  C_DocType dt WHERE C_Order.C_DocType_ID=dt.C_DocType_ID AND dt.DocSubTypeSO='SO')) AND EXISTS (SELECT *  FROM C_OrderLine ol WHERE C_Order.C_Order_ID=ol.C_Order_ID AND ol.QtyInvoiced<>ol.QtyOrdered))) と変更すると発注は前払いできるようになります。 試してください。 P.S.受注の前払受注に、入金して、受注を選ぶと前受金になります。
原価計算は、仕訳自動転記と同じタイミングで計算されています。AccountProcessorに設定したスケジューラーによって実行しています。ディフォルトでは、1時間ごとに実行しているようです。

Compiere入門
「Compiere入門」を購入する