View Issue Details

IDProjectCategoryView StatusLast Update
0000691КредиторыGeneralpublic2015-06-06 08:27
Reporterruslan Assigned Tobarry  
PriorityurgentSeverityfeatureReproducibilityalways
Status closedResolutionfixed 
Summary0000691: -Расчеты с Кредиторами-Платежные документы - Открыть поле для изменния курса валют.
DescriptionАналогично 689 задаче только для кредиторов.
TagsNo tags attached.

Relationships

related to 0000689 feedbackbarry Дебиторы -Расчеты с Дебиторами-Платежные документы - Открыть поле для изменния курса валют. 

Activities

barry

2014-11-25 07:53

administrator   ~0001794

slkt32.zip

ruslan

2014-12-12 11:12

manager   ~0001808

Добавь кнопку рядом с курсом валюты - Обновить курс из справочника(с иконкой типа как Обновить информацию), часто документы делают задним числом а курс потягивается неправильный, соответственно при изменении даты он не меняется автоматически...

ruslan

2014-12-25 09:49

manager   ~0001852

Остался вопрос с Покупкой/Продажей валюты... там тоже надо открыть поле для изменения курса валют, добавить кнопку рядом с полем курс валюты - Обновить курс из справочника. Расчет проводок Убытку/Доходу с продажи валюты делать относительно курса из формы.
И еще для визуализации разницы между курсом в форме и курсом в справочнике за этот день, сделай при открытии формы(изменении даты оплаты, даты валютирования) изменение цвета шрифта в поле курс валюты на красный, если курс отличается от справочного.

ruslan

2015-04-14 22:55

manager   ~0001987

1. При открытии на редактирование формы платежного документа с Продажей валюты, курс на дату Валютирования в форму поттягивается из справочника Курсы валют, а не читается из базы, хотя сохраняет в БД правильный курс.
2. Проводки по расчету Суммы зачисления по покупке валюты и Доход/Убыток я подправил
create or alter procedure SALEKT_GENACCNREC (
    ID integer)
as
declare variable DT varchar(5);
declare variable KT varchar(5);
declare variable comment varchar(255);
declare variable SALEKTCOMMENT varchar(255);
declare variable SUMTYP integer;
declare variable DATTYP integer;
declare variable ACCNKEY integer;
declare variable SALEKEY integer;
declare variable NAMEID integer;
declare variable SUMMA double precision;
declare variable SUMM double precision;
declare variable PROVSUMMA double precision;
declare variable DT1 integer;
declare variable KT1 integer;
declare variable DT3 integer;
declare variable KT3 integer;
declare variable DT6 integer;
declare variable KT6 integer;
declare variable D1 integer;
declare variable K1 integer;
declare variable D3 integer;
declare variable K3 integer;
declare variable D6 integer;
declare variable K6 integer;
declare variable NBR varchar(20);
declare variable DAT_ timestamp;
declare variable USERNAME varchar(20);
declare variable OPERID integer;
declare variable PRSNID integer;
declare variable STORNO integer;
declare variable DTPRT integer;
declare variable DTOBJ integer;
declare variable KTPRT integer;
declare variable KTOBJ integer;
declare variable OPER integer;
declare variable OPID integer;
declare variable PROC double precision;
declare variable OURACNID integer;
declare variable CTYP integer;
declare variable CURRTYP integer;
declare variable BDATE timestamp;
declare variable CURS double precision;
declare variable CSUMMA double precision;
declare variable BSUMMA double precision;
declare variable BKSUMMA double precision;
declare variable BESUMMA double precision;
declare variable OURORGNID integer;
declare variable ORGACCNID integer;
declare variable FINRES integer;
declare variable ACCNTEMP varchar(5);
declare variable ATEMP integer;
declare variable BCURS double precision;
declare variable B1CURS double precision;
declare variable E1CURS double precision;
declare variable ACSUMMA double precision;
declare variable ADATE timestamp;
declare variable DT8 integer;
declare variable DT9 integer;
declare variable KT8 integer;
declare variable KT9 integer;
declare variable VL1 integer;
declare variable VL2 integer;
declare variable BACCNID integer;
declare variable CALCNDS integer;
declare variable NDSPROC double precision;
declare variable NDS double precision;
declare variable PROCNDS double precision;
begin
   for select id,nameid,summa,summ,nbr,saledate, BAccnID, BCurs,
       username,operid,comment,PrsnID, OurAccnID, AccnID,
       CTyp, CurrTyp, Curs, CSumma, BDATE, bSumma, bKSumma, bESumma, OurOrgnID, VL1, VL2,
       CalcNds, NdsProc, Nds
   from salekt where id=:id
   into :salekey,:nameid,:summa,:summ,:nbr,:dat_, :BAccnID, :BCurs,
        :username,:operid, :salektcomment,:PrsnID, :OurAcnID, :OrgAccnID,
        :CTyp, :CurrTyp, :Curs, :CSumma, :BDATE, :bSumma,:bKSumma,:bESumma, :OurOrgnID, :VL1, :VL2,
        :CalcNds, :NdsProc, :Nds
   do begin
     aDate = :DAT_;
     ProcNDS = 20;
     select cast(val as double precision) from sysconst
                                where OurOrgnID=:OurOrgnID and name='ProcNDS' into :procNDS;
      if (:CalcNds is Null) then begin -- по умолчанию (для старых записей)
        if (:CTyp = 1) then begin -- в иностранной валюте
          NdsProc = 0.0;
          Nds = 0.0;
        end
        else begin -- в национальной валюте
          NdsProc = :ProcNds;
          Nds = :Summa / (100 + :NdsProc) * :NdsProc;
        end
      end
     if (:dat_ is null) then exit;
     if(:CTyp<>1) then begin
       CurrTyp=Null; Curs=1.0; CSumma=0.0;
     end
     for select ID,dt,kt,sumtyp,comment,storno, AccnDate,
     dtprt,dtobj,ktprt,ktobj, Oper, Proc, FinRes
     from storaccn where oper=10 and operid=:operid
     into :OpID,:dt,:kt,:sumtyp,:comment,:storno, :DatTyp,
     :dtprt,:dtobj,:ktprt,:ktobj,:Oper, :Proc, :FinRes do begin
      if(:DatTyp = 2 or :DatTyp=3) then
       execute procedure SaleKt_GenAccnRecSale(:ID, :OpID);
      else begin
       if(:DatTyp=4) then aDate = :BDATE;
       provsumma = 0.0;
       aCSumma = 0.0;
       if((:salektcomment <> '') and (:salektcomment is not null)) then
         Comment = :SaleKtComment;
       -- Сумма платежа
       if (:sumtyp=0) then begin
         provsumma = :summa;
         aCSumma = :cSumma;
       end
       -- НДС с суммы
       if (:sumtyp=1) then begin
         provsumma = :Nds;--:summa*:ProcNDS/(100.0+:ProcNDS);
-- aCSumma = :cSumma * :ProcNDS /(100.0+:ProcNDS);
       end
       -- Сумма без НДС
       if (:sumtyp=2) then begin
         provsumma = :Summa - :Nds; --:summa-(:summa*:ProcNDS/(100+:ProcNDS));
-- aCSumma = :cSumma-(:cSumma*:ProcNDS/(100+:ProcNDS));
       end
       -- Остаток Суммы (неразнесенный)
       if (:sumtyp=3) then provsumma = :summ;
       -- Сумма продажи (продажа валюты)
       if (:SumTyp=5) then ProvSumma = :BSumma;
       -- Сумма зачисления (продажа/покупка валюты)
       if (:SumTyp=6) then begin
         if (:CTyp = 1) then -- продажа
           ProvSumma = :BESumma;
         else begin -- покупка
           CurrTyp = Null;
           Curs = 0.0;
           select CurrTyp from OrgnBankAccn where ID = :BAccnID into :CurrTyp;
           --select Val from Currency_GetValue(:CurrTyp, :BDate) into :Curs;
           select curs from salekt where id = :Id into :Curs;
           ProvSumma = 0.0;
           if (:Curs <> 0.0) then ProvSumma = :BESumma * :Curs;
           aCSumma = :BESumma;
         end
       end
       /* Сумма комиссионых банку (продажа валюты) */
       if (:SumTyp=7) then ProvSumma = :BKSumma;
       -- Прибыль с продажи (продажа/покупка валюты)
       if (:SumTyp=8) then begin
         if (:CTyp = 1) then -- продажа
           ProvSumma = :BSumma-:Summa;
         else begin -- покупка
           CurrTyp = Null;
           Curs = 0.0;
           select CurrTyp from OrgnBankAccn where ID = :BAccnID into :CurrTyp;
           --select Val from Currency_GetValue(:CurrTyp, :BDate) into :Curs;
           select curs from salekt where id=:id into :Curs;
           ProvSumma = 0.0;
           if (:Curs <> 0.0) then begin
             ProvSumma = :BESumma * (:Curs - :BCurs);
             aCSumma = ProvSumma / :Curs;
           end
         end
       end
       /* Курсовая разница (НБ) */
       if (:SumTyp=9) then begin
         Select Val from Currency_GetValue(:CurrTyp, :DAT_ ) into :b1Curs;
         Select Val from Currency_GetValue(:CurrTyp, :BDate) into :e1Curs;
         ProvSumma = :CSumma * (:e1Curs-:b1Curs);
       end
       d1 = null; dt1=null; k1=null; kt1=null;
       select a1,a3,a6, a8, a9 from accnplan where accn=:dt into :d1,:d3,:d6,:dt8,:dt9;
       select a1,a3,a6, a8, a9 from accnplan where accn=:kt into :k1,:k3,:k6,:kt8,:kt9;
       if(:d1 is not null and :d1 <> 0) then dt1=:NameID; else dt1=Null;
       if(:d3 is not null and :d3 <> 0) then dt3=:PrsnID; else dt3=Null;
       if(:d6 is not null and :d6 <> 0) then begin
         dt6 = :OrgAccnID;
         if (:SumTyp = 6) then dt6 = :BAccnID;
       end else dt6 = Null;
       if(:k1 is not null and :k1 <> 0) then kt1=:NameID; else kt1=Null;
       if(:k3 is not null and :k3 <> 0) then kt3=:PrsnID; else kt3=Null;
       if(:k6 is not null and :k6 <> 0) then begin
         kt6 = :OurAcnID;
         if (:SumTyp = 6) then kt6 = :BAccnID;
       end else kt6 = Null;
       if (:dt8 is not Null) then dt8 = :VL1;
       if (:dt9 is not Null) then dt9 = :VL2;
       if (:kt8 is not Null) then kt8 = :VL1;
       if (:kt9 is not Null) then kt9 = :VL2;
       if(:Storno<>0) then begin
         ProvSumma=-:ProvSumma;
         aCSumma = -:cSumma;
       end
       if(:Proc<>0.0 and :Proc is not Null) then begin
         ProvSumma = :ProvSumma / 100.00 * :Proc;
         aCSumma = :aCSumma / 100.00 * :Proc;
       end
       if(:FinRes = 0) then begin /* при отриц. сумме - обнулить */
         if (:ProvSumma < 0.0) then begin
           ProvSumma = 0.0;
           aCSumma = 0.0;
         end
       end
       if(:FinRes = 2) then begin /* при отриц. сумме - поменять корреспонденцию */
         if (:ProvSumma < 0.0) then begin
           ProvSumma = -:ProvSumma;
           aCSumma = -:aCSumma;
           AccnTemp = Dt; Dt = Kt; Kt = AccnTemp;
           aTemp = dt1; dt1=kt1; kt1=aTemp;
           aTemp = dt3; dt3=kt3; kt3=aTemp;
           aTemp = dt6; dt6=kt6; kt6=aTemp;
           aTemp = dt8; dt8=kt8; kt8=aTemp;
           aTemp = dt9; dt9=kt9; kt9=aTemp;
         end
       end
       if((:provsumma <> 0.0) and (:DAT_ is not null)) then begin
         if(:Curs=0.0 or :Curs is null) then Curs=1.0;
         AccnKey = Gen_ID(AccnProv_ID, 1);
         insert into accnprov(ID,OurOrgnID,DAT_,dt,kt,summa,dt1,kt1,dt3,kt3,
                              comment,document,username,dt6,kt6,
                              dtprt,dtobj,ktprt,ktobj,Oper,OperID,DocID,
                              CurrTyp,Curs,CSumma, dt8, dt9, kt8, kt9)
         values(:accnkey,:OurOrgnID,:aDate,:dt,:kt,:provsumma,:dt1,:kt1,:dt3,:kt3,
                :comment,:nbr,:username,:dt6,:kt6,
                :dtprt,:dtobj,:ktprt,:ktobj,:Oper,:OperID,:ID,
                :CurrTyp,:Curs,:aCSumma, :dt8, :dt9, :kt8, :kt9);
         insert into salektac (id,salekey,accnkey)
         values(gen_id(salektac_id, 1),:salekey,:accnkey);
       end
      end /* not salecros */
     end
   end
end

Issue History

Date Modified Username Field Change
2014-07-28 13:08 ruslan New Issue
2014-07-28 13:08 ruslan Relationship added related to 0000689
2014-11-25 07:45 barry Assigned To => barry
2014-11-25 07:45 barry Status new => acknowledged
2014-11-25 07:53 barry Note Added: 0001794
2014-11-25 07:53 barry Status acknowledged => feedback
2014-12-12 11:12 ruslan Note Added: 0001808
2014-12-12 11:12 ruslan Status feedback => assigned
2014-12-25 09:49 ruslan Note Added: 0001852
2014-12-25 09:49 ruslan Status assigned => feedback
2015-03-25 14:08 ruslan Priority normal => urgent
2015-04-14 22:55 ruslan Note Added: 0001987
2015-04-14 22:55 ruslan Status feedback => assigned
2015-04-17 21:05 ruslan Status assigned => resolved
2015-04-17 21:05 ruslan Resolution open => fixed
2015-06-06 08:27 ruslan Status resolved => closed