web-dev-qa-db-ja.com

再生成を忘れるユーザーPDF送信する前に

私の会社はERP中小企業向けソフトウェアを開発しており、繰り返し問題が発生しています。

アプリの「請求書」の部分に、請求書をPDFファイルにエクスポートする「表示/印刷」ボタンがあります。問題は、私たちが望むよりも頻繁に、ユーザーが請求書の設定を変更するか、製品を追加するか、実際に何かを変更してから、「PDFファイル」フォルダーを開き、請求書のPDFファイルを取得して送信します。送信しなかったことに注意してください。 t [表示/印刷]ボタンをクリックして、PDFファイルが再生成されていないため、最新ではありません。

ユーザーがPDFファイルフォルダーにUSBキーにコピーする可能性があるため、ユーザーがPDFファイルフォルダーにアクセスすることを防ぐことはできません。 PDFファイルが請求書で変更されるたびに再生成することを考えました。PDFファイルは最大で請求書の行数が多い場合は1秒または2秒。

PDFファイルはnotが自動的に生成され、再表示するには[表示/印刷]をクリックする必要があるが、常に忘れていることをユーザーに繰り返し繰り返し試しました。 PDFファイルが古くなっていることを電話で叫びます.

この問題を解決する最良の方法は何でしょうか?

注:請求書はフランス語の緩い翻訳です。Google翻訳によると、「請求書」も機能します。クライアントが注文した製品のリストと支払いが必要な合計金額を含むドキュメントについて話しているだけです

26
zdimension

UIが機能せず、ユーザーが生成を理解していないため、プロセスを自動化する必要があります。既存の請求書がある場合、オーダーで何かが変更されるとすぐにPDFファイルをフォルダーから削除し、ユーザーがもう一度印刷するとすぐに再作成する必要があります。

通常、製品が出荷される前に請求書を送信することはなく、実際に送信されたものの参照としてそのピッキングリストを使用します。完全な注文を選択できず、部分的な配達を行う必要がある場合があります。その場合、発送された商品の請求書を送ることができます。

注文プロセス全体をやり直し、請求プロセスを自動化して、誤った請求を不可能にする必要があると思います。出荷されたものは請求されます。

34
Benny Skogberg

PDFをダウンロードするWebサイトのダウンロードボタンと比較するとどうなるでしょう。ファイルサーバーにアクセスできませんが、ファイルを取得するにはダウンロードボタンをクリックする必要があり、常に最新バージョンをダウンロードします。

あなたの状況では、pdfディレクトリにアクセスする唯一の方法は、「表示/印刷」ボタンを使用することです。このボタンをクリックすると、PDFのあるディレクトリが表示され、最新バージョンのみが表示されます。以前のバージョンは、ボタンを押すと削除されるか、別のディレクトリに配置されます。

これにより、人々はUSBスティックなどに移動することができます。

33
Alesis

ユーザーが直接アクセスできるようにPDFのフォルダを管理していますか、そうではありませんか?

そうでない場合、これがユーザーが計画したワークフローの周りに意図しないショートカットを発見した例である場合、ユーザーがこれを実行できないようにすることをお勧めします。別のファイル形式を使用し、PDFをアーカイブに入れ、拡張子がPDFのように見えないように拡張子を変更します。ユーザーは文句を言うかもしれませんが、彼らはそれを乗り越え、彼らのワークフローは適応します。

doそれらのPDFのフォルダーを管理するビジネスに参加したい場合は、古いPDFを削除するバックグラウンドスレッドを検討することをお勧めします。請求書が更新されるたびに新しいものの書き込みを開始します。これにより、何かが変更されたときにアプリが数秒間フリーズする必要がなくなります。これにより、必要に応じて、表示/保存ボタンを解放することができます。は信頼できるソースです。または、表示/保存ボタンを保持することにした場合は、まったく新しいものを生成する代わりに、フォルダから直接PDF *を提供できるというボーナスがあります。 PDFユーザーがボタンをクリックするたびに未変更の請求書。

*(おそらく、ユーザーがフォルダー内のPDFを変更できないようにセキュリティを設定する必要があることに注意してください-たとえば、ファイルのMD5ハッシュを保存します)

注:「PDFファイル」フォルダーはアプリの一部であり、ユーザーがダウンロードしたドキュメントを保存するフォルダーの例ではないことを前提としています。 それがの場合、古典的なドキュメント管理の問題があります... SharePointと仲間は毎日これに対処しています-あなたは彼らがどのようにそれを処理するのか調べたいかもしれませんが、私はそうではありません邪魔にならない優れたソリューションを認識している。

18
A C

新しい請求システムを構築するよりも迅速なソリューションが必要だと思います。本当の問題点はこれのようです:

ユーザーがPDFファイルをUSBキーにコピーする可能性があるため、PDFファイルフォルダーへのアクセスを禁止できません…

解決策は、ユーザーがそのフォルダーにアクセスできないようにし、アプリケーションからのPDFのダウンロードのみを許可することです。ダウンロードボタンは、変更が加えられたことを「認識」し、ダウンロードする前に新しいPDFの生成を開始します。変更が加えられていない場合は、すぐにダウンロードを開始できます。アプリケーション全体に複数のダウンロードボタンがある場合は、すべてのボタンで変更が行われたかどうかを確認し、ダウンロードする前にPDFを生成する必要があります。

6
jazZRo

私の意見では、ソリューションは単純であり、実装できると思います。最後にPDF)をエクスポートした後、請求書の小さな変更を検出するコードを記述する必要があります。変更が発生した瞬間に、画面上部に赤で穏やかなメッセージを表示しようとします。請求書に変更があったため、PDFファイルの別のバージョンをエクスポートする必要があることをユーザーに警告または通知します。

以下を確認してください:

enter image description here

別のソリューション

wizardを使用してソリューションを方向転換できます。これにより、ユーザーは請求書データを編集し、変更をプレビューして、請求書PDFのエクスポートを行うことができます。 、次のように:

ステップ1編集可能なモードで請求書を開き、必要なすべての変更を行います

ステップ2次に変更をプレビューしてユーザーにPDFとしてエクスポートをクリックするよう強制します。このステップがないと、すべての変更が失われます。

そして、2番目のステップがないと、彼は新しい変更を取得できません。ここをチェックしてください:

enter image description here

これが役立つことを願っています!

6
Khalil Hanna

ユーザーは、表示/印刷を使用してすでに行った内容を確認し、確認した内容に基づいて変更を行っているようです。その場合、考えられる解決策は、プレビューと保存を明確に区別して、ユーザーが誤って顧客に送信する可能性のあるものを作成せずにドキュメントをプレビューできるようにすることです。

一時的なPDFを作成し、ユーザーがアクセスできない場所に保存して、自動的に開く「プレビュー」オプションがあります。 (ドラフトなので、ドキュメントの上部にドラフトとしてマークできます)。

次に、PDFを「PDFファイル」フォルダに保存する「保存」または「ファイナライズ」オプションを使用します。ドキュメントごとに1回だけ発生するはずなので、ここで確認できます。

重要なのは、ユーザーがプレビューするときに「保存」をクリックできないようにすることです。そのため、別の画面を用意する価値があるかもしれません。最初の画面に大きくてわかりやすい「プレビュー」ボタンと、その下にある小さな「次へ」リンクがあります。次のページでは、編集するオプションはありませんが、保存/印刷するオプションがあります。

5
user128414

無効な/古い請求書のリポジトリ

Benny Skogberg の回答を補完するために、生成されたすべてのPDFと同じハッシュでハッシュを含むリンクを中央サーバーに保存します。変更を検出すると、以前に生成されたPDF、そのハッシュを無効/古いとしてマークします。

PDFに、「支払い前の請求書検証」に関するメッセージを表示します。ここで、リンクはすでにハッシュを使用しており、PDFが古いかどうかを通知します。

4

私の答えは、あなたが試したことの現在の範囲内で作業することを提案することです。

アカウントにユーザー/システム設定を追加して、PDFを変更するたびに作成できるようにします。お客様がそれぞれ手動で行う必要があると述べたように、時間。

それは素晴らしいことではありませんが、彼らの手にコントロールを戻します。それ以外-ベニーが示唆したように、オプションはインターフェースを再設計することです。

0
DarrylGodden

生成されたPDF=のファイル名にタイムスタンプを追加することは役に立ちますか?そうすれば、ユーザーが変更を加えた直後にファイルをコピーまたは送信する場合、タイムスタンプが最後に行った変更よりも古い。

例:代わりに:

invoice-10043-acme_corp.pdf

次のようなものを検討してください:

invoice-10043-acme_corp-exported-20190706T0944.pdf

タイムスタンプのフォーマットにはさまざまな方法がありますが、ユーザーがファイルのリストを名前で並べ替えると、タイムスタンプでも適切に並べ替えられる(このような)方法を使用することをお勧めします。サーバー上で最新のものを探します。

0
neolumine

PDFのフォルダーにアクセスするための別のUI /アプリがある場合は、ナビゲーションでユーザーに伝えることができます(エクスポートされていない/保存されていない変更があり、PDFが古くなっている)そのため、ユーザーは戻ってそれを行うことができます。

(ftpフォルダーまたはファイルシステムのように)それがどういうわけか不可能である場合、ユーザーがフォルダー内のpdfを表示したい場合は、ユーザーが変更をエクスポートする必要がある変更を行っているUI画面に可視メッセージを表示できます(pdfを表示/印刷) 。

さらに、ファイルを作成/更新できますsome-files-not-up-to-date.txtと、ユーザーが変更を行うUIを終了するときに、最新ではない(手動でエクスポートされた)ファイル名を追加します。ユーザーが意図しない変更を加えたり、変更をエクスポートしたくない可能性があるため、PDFファイルを直接書き込むことはお勧めしません。

0
topenion

他のいくつかの回答のわずかなバリエーションであり、ユーザーの観点からは単純化されています。

請求書データが変更および保存されたとき-つまり、請求書を目に見える形で変更し、ユーザーが別のコンピューターからプログラムにアクセスした場合に変更が表示されるように保存された変更-プログラムは2つのことを行う必要があります。

  • 既存のPDFを削除します。これにはわずかな時間がかかるため、ユーザーに遅延が生じることはありません。
  • バックグラウンドプロセスをトリガーして、新しいPDFを作成します。実行には数秒かかる場合がありますが、ユーザーが遅延することはありません大幅に遅延します

ユーザーは常にディレクトリ内の最新のPDFのみを表示します。変更された請求書のPDFが表示されない場合、数秒待つだけで魔法のように表示されます。

ファイルのタイムスタンプまたはその他のフラグを含むものはすべて、ユーザーによって無視されます。ファイルを削除することが唯一の簡単な解決策です。そして、ファイルを再作成する自動的には、問題のない唯一の解決策です。

状況に応じて機能する簡単な方法は、古くなったPDFを自動的に削除することです。

つまり、PDFを生成する代わりに、変更を加えるときに、その請求書番号と一致するPDFを削除します。

これにより、古くなったPDFを取得できなくなります。また、見つけることができない時間を無駄にしたくない場合は、再生成する必要があることもすぐにわかります。

0
Shadow