Задать вопрос
  • Как не танцевать на граблях с бубном делая CRM?

    @d-stream
    Было ТЗ
    Если это техническое задание, а не точка зрения - то там должно было быть описано где, когда и как это надо видеть. Полагаю что речь об отчете. Который имеет полное право формироваться не миллисекунды, а например единицы-десятки секунд... а потом рендер 100500 страничного отчета будет ползти по медненным каналам минуты, печататься - десятки минут, изучаться - примерно никогда) А вот для выбора к примеру для корзины/заказа - актуально то что прямо здесь и сейчас еще есть в наличии и сколько его еще осталось.
  • Как правильно считать остатки в денежной форме?

    @d-stream
    Связка продажи с партией поступления (реальное списание) возникает в момент продажи - ничего искусственно создавать не надо. Кстати в тот же момент можно апдейтить строки поступления указывая хелпер остатка. Последнее конечно слегка отходит от идеологии целостности, но иногда может поспособствовать.
  • Как не танцевать на граблях с бубном делая CRM?

    @d-stream
    Это есть, это нужно, этим пользуются и сформировалась сначала потребность а затем код.
    Это не ответ. Точнее ответ в стиле "вместите мне на визитке фио, должности и регалии в одну строку 24 кеглем")

    "на текущий момент" совершенно спокойно строится на хэлперах в виде партия-остаток
  • Как правильно считать остатки в денежной форме?

    @d-stream
    Скорее всего это не цена только последних партий в количестве остатков, включая неполную пограничную партию.
    это цена в каждой конкретной поставке. Вчера было по три, сегодня - по пять)

    для понимания - пример:

    поступления
    партия1: 1 января куплено 20 булок по 3 р
    партия2: 1 февраля куплено 15 булок по 2р
    партия3: 1 марта куплено 30 булок по 4р

    продажи:
    продажа1 1 июля - 23 булки по 15р, а именно:
    - 15 булок из партии1
    - 6 булок из партии2
    - 2 булки из партии3

    в таком раскладе:
    партия1: осталось 5 булок, купленных по 3р = 15р
    партия2: осталось 9 булок, купленных по 2р = 18р
    партия3: осталось 28 булок, купленных по 4р = 112р

    итого на складе осталось 42 булки на сумму 145р (средняя себестоимость остатка 3.45р)

    p/s/ можно вместо булок рассмотреть например водку/обувь/ювелирку/шины - там каждая бутылка прослеживаемая и имеет уникальный "серийный номер"
  • Можно ли работать по ПСН без УСН?

    @d-stream
    alex vak, написать заявление например
  • Как правильно считать остатки в денежной форме?

    @d-stream
    Ну если партионный - то и надо партионный. Он очевиднее, понятнее и предсказуемее.
    Всей разницы - таблица-связка списаний партий.
    То бишь строка в расходе(продаже) - ссылается на строку в "партиях" (id_прихода, id_расхода, кол-во, дата, кто и т.п.) и уже через нее - в приходы

    побочный эффект - продажа 2 булок может оказаться из двух строк (1 булка из одной партии, вторая - из другой). Впрочем если речь зайдет о ОСН и НДС и импортных товарах - то это итак будет нужно в плане учета ГТД)

    Ну и в итоге простейший вариант (несколько упрощенный) даст приход, остаток, сумму остатка:
    select
    incomes.doc_id, 
    incomes.item_code,
    rest_qnt = sum(incomes.qnt)-sum(outs.qnt),
    rest_sum = (sum(incomes.qnt)-sum(outs.qnt))*incomes.price,
    from incomes 
    inner join outs on outs.id_in=incomes_id
    group by incomes.doc_id,  incomes.item_code
    where incomes.date<date_x and outs.date<date_x

    дальше останется обернуть это в еще одну группировку только по товару и просуммировать кол-во и сумму
  • Window 10, на что используется RAM?

    @d-stream
    можно начать с поглядывания в rammap от Руссиновича (ныне Майкрософт)
  • Window 10, на что используется RAM?

    @d-stream
    + зачастую отъеденную SQL сервером память в лоб не видно)
  • Как объединить "in" и "case"?

    @d-stream
    Вот как один из вариантов применения case и in (в развернутом виде)
    select 
    *
    from @customer as c
    left join @documents as d on c.id = d.customer_id
    where 
    	1 = case 
    		when c.type='ФОП' and d.type in ('паспорт','инн') then 1 
    		when c.type='Юр.лицо' and d.type in ('паспорт','инн') then 1 
    		when c.type='Физ.лицо' and d.type in ('паспорт','инн','загран') then 1 
    		else 0
    	end


    Вот из более очевидного без case
    select 
    *
    from @customer as c
    left join @documents as d on c.id = d.customer_id
    where 
    	c.type='Физ.лицо'
    	or
    	c.type='Юр.лицо' and d.type in ('паспорт','инн')
    	or
    	c.type='ФОП' and d.type in ('паспорт','инн')


    Ну и чуть посуше, но вполне понятный без case и in

    select 
    *
    from @customer as c
    left join @documents as d on c.id = d.customer_id
    where 
    	c.type='Физ.лицо'
    	or
    	(c.type='Юр.лицо' or c.type='ФОП') and (d.type='паспорт' or d.type='инн')


    Ну и из общекритичного: ветвить и отбирать по текстовым названиям - моветон. Нормально - иметь id и наименование - id для кода, наименование (наименования) - для людей

    К примеру индивиндуальный предприниматель, как нечто среднее между физлицом и организацией обзывался ПБОЮЛ, ИП, ЧП, притом в таблице уместно светить сокращенное "ИП", а где-нибудь в карточке конкретного - "Индивиндуальный предприниматель" - то бишь было бы уместным иметь
    int - как код типа (напр 1 - физ, 2 - юр, 3 - ип, и возможно 4 - СЗ)
    и несколько строковых полей типа
    - обозначение полное ("Индивиндуальный предприниматель")
    - обозначение краткое ("ИП")
    - обозначение при обращении ("Предприниматель")

    с документами - по жизни все посложнее:
    1. ИНН - это пожизненный уникальный и неизменный идентификатор, но это не документ... документом является свидетельство о присвоении ИНН со своей серией и номером и в ряде случаев свидетельств может быть больше одного
    2. Паспорт - ограничен по сроку действия/утере => паспортов может быть много и в ряде случаев до даты смены - это один паспорт, после - другой
    3. загранпаспорт - аналогично паспорту, только их вообще может быть несколько одновременно
  • Как объединить "in" и "case"?

    @d-stream
    Илья, конструкция in здесь вообще не при чем.

    именно case работает иначе
    конкретно для простоты - он отдает одно-единственное значение

    и если я правильно понимаю исходное, которое зачем-то было вывернуто "мехом внутрь," то вероятно это может выглядеть как-то так:

    select 
     ...
    customer_type_descr = case customer.type when 1 then 'A'  when 2 then 'B'  when 3 then 'C' else 'n/a' end,
     ...
    from customer
    inner join documents on documents.customer_id = customer_id
    where documents.id in (1,2,3)
  • Как объединить "in" и "case"?

    @d-stream
    case так не работает. от слова совсем.
  • Почему в Java используется байт-код для обеспечения кроссплатформенности?

    @d-stream
    12rbah, да, нужно. Притом упрощенно не писать а скомпилировать ее под платформу.
    То бишь скомпилировав одну jvm мы сможем выполнять 100500 java-программ, а не компилировать каждую программу [java].
  • Как передавать приложение клиенту без исходиников?

    @d-stream
    Мне кажется не отдавать исходники клиенту - плохой тон )
    Autodesk, Adobe, Microsoft, etc зачастую с этим несогласны)
    давай не забывать про обфускаторы
    и индусский код, который еще круче)
  • Какой менеджер базы данных для MS SQL выбрать?

    @d-stream
    Самир Курбанов, пкм на таблице и edit top 200 rows )
    Просто это настолько неестественная и редкая задача...

    Ну бывает конечно, но я быстрее напишу update, притом это в конце будет в виде пары update - поменять "туда", потом "обратно", а возможно пригодится для тиражирования потом.
  • Какой менеджер базы данных для MS SQL выбрать?

    @d-stream
    Самир Курбанов, это чем-то смахивает на замазывание экрана штрих-корректором.
    Кроме учебных вариантов результат запроса - это приготовление блюда из сотен компонентов. Что-то предварительно очищается что-то охлаждается, что-то шинкуется, а потом все вместе смешивается и обжаривается... Результирующее блюдо - ну совершенно не может и не имеет права повлиять на сроки цветения и количество лепестков приправы, использованной в этом блюде.

    Наибанальнейший пример - запрос, который по сотне таблиц вычисляет что-то сложное и на выходе дает одно число "14.8923", которое например означает среднегодовую прибль от основной деятельности предприятия. Ну вот поимели мы возможность изменить это число на "15.00" - что это должно означать? Волшебным образом состоявшаяся в позапрошлом году закупка канцпринадлежностей должна уменьшится? Или продажа в первом квартале перекочует во второй? Или полученные от крупного клиента 100500 денег в сумме должны стать 100600 ???
  • На каком языке сейчас чаще всего программируют микроконтроллеры?

    @d-stream
    Абсолютно некорректное сравнение
    вполне корректное. Микроконтроллеры совсем не заканчиваются ATTiny13 и есть вполне "жирные" в плане ресурсов. Так что справедливости ради микроконтроллер на java вполне имеет право на существование. Что и иллюстрируют те же sim-карты.

    а есть примеры кода для таких джава карт?
    не, у меня нету
  • На каком языке сейчас чаще всего программируют микроконтроллеры?

    @d-stream
    Удачи с размещением виртуальной машины Java + кода самой программы с учетом имеющихся ресурсов...
    Справедливости ради:
    https://ru.wikipedia.org/wiki/Java_Card
    Из распространенного:
    sim-card-left_3_1.png
  • Из-за чего происходит зацикливание sql скрипта?

    @d-stream
    Виктор П., в sql за циклы как правило бьют железной линейкой по рукам by design

    Есть сложные случаи когда используются например курсоры, которые особый случай циклов, но не совсем циклы.

    И совершенно неверное утверждение "я беру", "я делаю". По факту "я инструктирую, а SQL делает" и вот тут кроется момент: SQL на основании декларации "что надо" строит план выполнения и потом его выполняет. Притом распаралеливая все это. Соответственно даже ожидать что в реальности и каждый раз что-то будет выполняться после чего-нибудь только потому что оно в коде после - несколько опрометчиво.
  • Система оплаты для юр.лиц, как реализовать на сайте?

    @d-stream
    Юрлица платят безналом. То бишь в клиент-банке или даже очно в банке плательщика заполняется платежное поручение банку списать с расчетного счета органицации некую сумму и перевести ее по следующим реквизитам (бик, рсчет, корсчет, инн + назначение платежа).
    Это вс кухня отправки денег.

    Дальше получателю останется получить выписку со своего расчетного счета и там увиденть сотни строк поступлений где в назначении платежа болтается нечто типа "оплата по счету № ..." и отгрузить соответствующие товары.

    образец счета на оплату, платежного поручения - легко ищутся например в яндекс-картинках.
  • Можно ли собрать такой запрос?

    @d-stream
    Это просто облегчит конструкцию. Можно и без них, но конструкция получится более монстроватая.

    Общая канва - найти неразрывные интервалы, точнее их начала и концы. То бишь начало - это где разница в днях даты текущей записи с датой предыдущей записи - больше единицы, конец - аналогично относительно следующей записи. Ну а с нарубленными интервалами - посчитать их длину уже не задача.