|
|
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
to iljy 1. Не был с этим знаком с теоретической стороны. Теперь обязательно ознакомлюсь, спасибо вам огромное! :) 2. Не очень понимаю, что значит "ссылочная целостность" в данном контексте. Поясните пожалуйста, если не сложно. Указывать ссылки на опорный документ и основной документ (в bill) планировал при заведении новых записей. 3. Пока в планах реализовать в интерфейсе привязку нескольких счетов (bill) к одной записи в платежах (bank_payment), для неё как раз и нужно будет вынести отдельную таблицу вязки платёж-счёт (bank_payment_link), как вы и говорили. Но т.к. проект развивается при непосредственной эксплуатации, то не могу внести изменения в базу без поддержки в интерфейсе. Но пока оставлю вязку счетов и счёт-фактур в нутри одной таблицы (bill), может при дальнейшем развитии возникнет смысл вынести связи между ними в отдельную таблицу, но пока мне это кажется не "рентабельным" 4.Номенклатура есть. Она вяжется через отдельную таблицу ссылок. Считаю это обоснованным, т.к. на одн счёт может быть несколько счетов фактур с разной номенклатурой. Хотя сейчас размышляю над тем, как это можно преобразовать, чтобы избегать повторных записей при совпадении номенклатуры для разных документов по одной сделке. Как я понял пока есть 2 позиции: вязка счетов и счёт-фактур внутри одной таблицы (моя) и вязка их через внешнюю таблицу (iljy) Если у кого есть ещё мысли, прошу высказываться. Пока буду развивать это хозяйство в обозначенном мной направлении... Всем огромное спасибо за участие! Особая благодарность iljy! Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2011, 22:31 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
foworkto iljy 1. Не был с этим знаком с теоретической стороны. Теперь обязательно ознакомлюсь, спасибо вам огромное! :) Не за что Нормальные формы знать надо обязательно, хотя бы до 3й. fowork2. Не очень понимаю, что значит "ссылочная целостность" в данном контексте. Поясните пожалуйста, если не сложно. Указывать ссылки на опорный документ и основной документ (в bill) планировал при заведении новых записей. Ссылочная целостность - это корректность связей между объектами. У вас в таком виде ВК не гарантирует, что связываются не 2 счета, а именно счет и счет-фактура. Нужны будут дополнительные телодвижения, типа CHECK CONSTRAINT или триггеров. Можно конечно положиться полностью на клиента, но это выстрел себе в ногу. Ошибка в работе программы, которая обнаружиться к моменту сдачи годового отчета - и вы будете полбазы перелопачивать ручками. fowork3. Пока в планах реализовать в интерфейсе привязку нескольких счетов (bill) к одной записи в платежах (bank_payment), для неё как раз и нужно будет вынести отдельную таблицу вязки платёж-счёт (bank_payment_link), как вы и говорили. Но т.к. проект развивается при непосредственной эксплуатации, то не могу внести изменения в базу без поддержки в интерфейсе. Но пока оставлю вязку счетов и счёт-фактур в нутри одной таблицы (bill), может при дальнейшем развитии возникнет смысл вынести связи между ними в отдельную таблицу, но пока мне это кажется не "рентабельным" Вам виднее. Но выборки у вас в таком виде усложняются. Напишите например запрос, который вытащит все платежки с номерами счетов и счетов фактур, которые есть. Я не говорю, что его нельзя написать, нет, но он будет явно сложнее, чем просто соединение 3х или 4х таблиц. Придумайте еще несколько наиболее актуальных запросов и попробуйте их написать. fowork4.Номенклатура есть. Она вяжется через отдельную таблицу ссылок. Считаю это обоснованным, т.к. на одн счёт может быть несколько счетов фактур с разной номенклатурой. Хотя сейчас размышляю над тем, как это можно преобразовать, чтобы избегать повторных записей при совпадении номенклатуры для разных документов по одной сделке. Я думаю у вас очень быстро возникнет, например, такая задача: проверить, вся ли номенклатура по счету получена. Или полностью ли счет оплачен (учитывая, что часть платежей может быть привязана к счетам, а часть - к счетам фактурам). И кстати: foworkiljyВот вам пример: в разное время выставлялись 2 независымых счета, затем по этим счетам одним платежем быть выплачен аванс 30%, затем логист поехал и забрал то, что было в наличии (а в наличии могли быть позиции из разных счетов!), получив сф1, через неделю курьер привез остаток и сф2, после чего был платеж оставшихся 70%. ..... А таблица счетов будет выглядеть следующим образом: № документа дата тип документа основной документ101.01.2011 счёт 201.01.2011 счёт 107.01.2011 счёт-фактура счёт 1207.01.2011 счёт-фактура счёт 2 Почему так? По сф1 была получена часть товара, выписанная в счете1, и часть , выписанная в счете2. По сф2 - остаток по обоим счетам. На основании чего вы привязали сф1 к счету1? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2011, 23:17 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
iljyПочему так? По сф1 была получена часть товара, выписанная в счете1, и часть, выписанная в счете2. По сф2 - остаток по обоим счетам. На основании чего вы привязали сф1 к счету1? Привязал так, потомучто при платеже как подтверждающий сумму документ (для бухгалтерии) был счёт, следовательно для платежа он является опорным документом. А вот что с счёт-фактурами делать? Мда... Боюсь, что если часть товара из 2 счетов была при получении вписана в одну счёт-фактуру и накладную (хотя в бухгалтерской накладной указывается счёт, на основании которого она оформлена), то это могло быть сделано только в рамках одного договора, по которому и будет производиться взаиморасчёт. А как будет выглядеть вязка для этого случая при внешней таблице ссылок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2011, 23:53 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
iljyНапишите например запрос, который вытащит все платежки с номерами счетов и счетов фактур, которые есть. select bp.c_number, b.c_number, b.i_type, iif(b.id_parent is NULL, 1,0) ib_main_doc from bank_payment bp left join bill b on b.id=bp.id_bill Извините, пишу без проверки... Вроде должен выдать типа такого: № платежа номер документа основания тип док основания основной опорный документ11СЧ111СФ022СФ122СЧ031СЧ132СФ0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 00:10 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
to iljy Если не очень затруднит, напишите пожалуйста пример запроса для аналогичной ситуации для вашей конструкции базы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 00:12 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
fowork, не-а, не выдаст он так - с какого перепугу одно соединение по внешнему ключу даст вам 2 строки для каждой платежки? У вас должно быть что-то типа Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. НомерПлатежки ДатаПлатежки НомерСчета ДатаСчета НомерСчетаФактуры ДатаСчетыФактуры ,тогда в вашем варианте будет как-то так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 01:35 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
Да, прошу прощения, вчера уже в полубессознательном состоянии писла. Запрос должен быть такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Этот уже проверял :) Может можно ещё оптимизировать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 10:31 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
iljy Код: plaintext 1. 2. 3. Вроде Ваш вариант оптимальней, чем мой через union :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 10:37 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
Можно ещё и так Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 12:57 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
foworkМожно ещё и так Код: plaintext 1. 2. Можно, но ваш запрос подразумевает, что платежка всегда привязана к опорному документу, а схема базы этого никак не гарантирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 13:11 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
Такая идея и была. Если нужно выбрать ещё и неоплаченные счета, то запрос конечтно будет другой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 13:26 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
foworkТакая идея и была. Если нужно выбрать ещё и неоплаченные счета, то запрос конечтно будет другой Я не про то. Если на момент оплаты были оба счета, то схема базы вам не гарантирует, что платеж будет привязан к опорному документу (а опорным у вас может быть любой). Схема базы вам вообще мало что гарантирует, вот в чем проблема. А про проверки на клиенте я вам уже писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 15:58 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
В связи с этим у меня появляется ещё один вопрос, не знаю на сколько он к этой теме, но в контексте обсуждения думую можно затронуть... Глобально он звучит так: Как определить, какую часть нагрузки возложить на интерфейс, а какую на структуру бызы, так чтобы база не потеряла гибкости, а интерфейс небыл перегружен проверками. А локально могу сказать: Сейчас проверка вязки платежа к опорному документу осуществляется интерфейсом. Тоесть если есть основной опорный документ (id_parent is NULL), то пользователю в выпадающем списке показывается он, а если нет, то в выпадающем списке показываются все документы. Определение основного документа возложенно на пользователя при внесении записей в счета (bill) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 16:57 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
foworkВ связи с этим у меня появляется ещё один вопрос, не знаю на сколько он к этой теме, но в контексте обсуждения думую можно затронуть... Глобально он звучит так: Как определить, какую часть нагрузки возложить на интерфейс, а какую на структуру бызы, так чтобы база не потеряла гибкости, а интерфейс небыл перегружен проверками. А локально могу сказать: Сейчас проверка вязки платежа к опорному документу осуществляется интерфейсом. Тоесть если есть основной опорный документ (id_parent is NULL), то пользователю в выпадающем списке показывается он, а если нет, то в выпадающем списке показываются все документы. Определение основного документа возложенно на пользователя при внесении записей в счета (bill) Тут базовое направление очень простое - чем больше проверок целостности задекларировано в базе - тем лучше. Во-первых - это инкапсуляция, иначе будете где-то что-то дополнять в интерфейсе, забудете проверить - и опаньки. Во-вторых - это может помочь оптимизатору с генерацией планов. В третьих - это обезопасит базу от некорректного изменения мимо вашего клиента (да-да, это тоже может оказаться проблемой, в том числе вы сами можете править данные запросами напрямую и что-то упустить). Это так, навскидку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 18:57 |
|
||
|
Как связать счета и счёт-фактруы
|
|||
|---|---|---|---|
|
#18+
iljyТут базовое направление очень простое - чем больше проверок целостности задекларировано в базе - тем лучше. Я бы даже сказал больше: всё, что можно ограничить в базе, надо ограничить в базе. Всё, что можно ограничить в приложении - надо ограничивать в приложении. Даже если эти проверки будут дублироваться. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2011, 19:01 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37429895&tid=1542034]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 409ms |

| 0 / 0 |
